mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-01 10:13:22 +00:00
Add support to change the transparent color with middle click
This commit is contained in:
parent
1ff4f06a69
commit
13aef4eecf
@ -21,6 +21,7 @@
|
||||
#include "app/commands/params.h"
|
||||
#include "app/console.h"
|
||||
#include "app/context_access.h"
|
||||
#include "app/document_api.h"
|
||||
#include "app/ini_file.h"
|
||||
#include "app/modules/gui.h"
|
||||
#include "app/modules/palettes.h"
|
||||
@ -376,8 +377,10 @@ void ColorBar::onPaletteViewIndexChange(int index, ui::MouseButtons buttons)
|
||||
|
||||
if ((buttons & kButtonRight) == kButtonRight)
|
||||
setBgColor(color);
|
||||
else
|
||||
else if ((buttons & kButtonLeft) == kButtonLeft)
|
||||
setFgColor(color);
|
||||
else if ((buttons & kButtonMiddle) == kButtonMiddle)
|
||||
setTransparentIndex(index);
|
||||
|
||||
m_lock = false;
|
||||
}
|
||||
@ -421,6 +424,29 @@ void ColorBar::setPalette(const doc::Palette* newPalette, const std::string& act
|
||||
getManager()->invalidate();
|
||||
}
|
||||
|
||||
void ColorBar::setTransparentIndex(int index)
|
||||
{
|
||||
try {
|
||||
ContextWriter writer(UIContext::instance(), 500);
|
||||
Sprite* sprite = writer.sprite();
|
||||
frame_t frame = writer.frame();
|
||||
if (sprite &&
|
||||
sprite->pixelFormat() == IMAGE_INDEXED &&
|
||||
sprite->transparentColor() != index) {
|
||||
// TODO merge this code with SpritePropertiesCommand
|
||||
Transaction transaction(writer.context(), "Set Transparent Color");
|
||||
DocumentApi api = writer.document()->getApi(transaction);
|
||||
api.setSpriteTransparentColor(sprite, index);
|
||||
transaction.commit();
|
||||
|
||||
update_screen_for_document(writer.document());
|
||||
}
|
||||
}
|
||||
catch (base::Exception& e) {
|
||||
Console::showException(e);
|
||||
}
|
||||
}
|
||||
|
||||
void ColorBar::onPaletteViewChangeSize(int boxsize)
|
||||
{
|
||||
Preferences::instance().colorBar.boxSize(boxsize);
|
||||
|
@ -99,6 +99,7 @@ namespace app {
|
||||
void destroyRemap();
|
||||
void applyRemap(const doc::Remap& remap, const doc::Palette* newPalette, const std::string& actionText);
|
||||
void setPalette(const doc::Palette* newPalette, const std::string& actionText);
|
||||
void setTransparentIndex(int index);
|
||||
|
||||
class ScrollableView : public ui::View {
|
||||
public:
|
||||
|
@ -318,19 +318,23 @@ bool PaletteView::onProcessMessage(Message* msg)
|
||||
app::Color::fromIndex(idx), 255);
|
||||
|
||||
if (hasCapture() && (idx != m_currentEntry || msg->type() == kMouseDownMessage)) {
|
||||
if (!msg->ctrlPressed())
|
||||
deselect();
|
||||
MouseButtons buttons = mouseMsg->buttons();
|
||||
|
||||
if (msg->type() == kMouseMoveMessage)
|
||||
selectRange(m_rangeAnchor, idx);
|
||||
else {
|
||||
selectColor(idx);
|
||||
m_selectedEntries[idx] = true;
|
||||
if ((buttons & kButtonMiddle) == 0) {
|
||||
if (!msg->ctrlPressed())
|
||||
deselect();
|
||||
|
||||
if (msg->type() == kMouseMoveMessage)
|
||||
selectRange(m_rangeAnchor, idx);
|
||||
else {
|
||||
selectColor(idx);
|
||||
m_selectedEntries[idx] = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Emit signal
|
||||
if (m_delegate)
|
||||
m_delegate->onPaletteViewIndexChange(idx, mouseMsg->buttons());
|
||||
m_delegate->onPaletteViewIndexChange(idx, buttons);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user