[aseprite] 126/308: Fix bugs setting BrushSlot flags from BrushPopup
Tobias Hansen
thansen at moszumanska.debian.org
Tue Mar 8 02:45:00 UTC 2016
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit 3845d6a31ad08350cc84fcd13a10f1f2e0dabf14
Author: David Capello <davidcapello at gmail.com>
Date: Thu Dec 17 13:37:22 2015 -0300
Fix bugs setting BrushSlot flags from BrushPopup
E.g. We cannot set flags in a recently deleted BrushSlot after
show_popup_menu().
---
src/app/ui/brush_popup.cpp | 39 ++++++++++++++++++++++++---------------
1 file changed, 24 insertions(+), 15 deletions(-)
diff --git a/src/app/ui/brush_popup.cpp b/src/app/ui/brush_popup.cpp
index 582dc17..830f71f 100644
--- a/src/app/ui/brush_popup.cpp
+++ b/src/app/ui/brush_popup.cpp
@@ -172,7 +172,6 @@ private:
// Load preferences
BrushSlot brush = m_brushes.getBrushSlot(m_slot);
-
params.brushType()->setSelected(brush.hasFlag(BrushSlot::Flags::BrushType));
params.brushSize()->setSelected(brush.hasFlag(BrushSlot::Flags::BrushSize));
params.brushAngle()->setSelected(brush.hasFlag(BrushSlot::Flags::BrushAngle));
@@ -183,23 +182,28 @@ private:
params.shade()->setSelected(brush.hasFlag(BrushSlot::Flags::Shade));
params.pixelPerfect()->setSelected(brush.hasFlag(BrushSlot::Flags::PixelPerfect));
+ m_changeFlags = true;
show_popup_menu(m_popup, &menu,
gfx::Point(origin().x, origin().y+bounds().h));
- int flags = 0;
- if (params.brushType()->isSelected()) flags |= int(BrushSlot::Flags::BrushType);
- if (params.brushSize()->isSelected()) flags |= int(BrushSlot::Flags::BrushSize);
- if (params.brushAngle()->isSelected()) flags |= int(BrushSlot::Flags::BrushAngle);
- if (params.fgColor()->isSelected()) flags |= int(BrushSlot::Flags::FgColor);
- if (params.bgColor()->isSelected()) flags |= int(BrushSlot::Flags::BgColor);
- if (params.inkType()->isSelected()) flags |= int(BrushSlot::Flags::InkType);
- if (params.inkOpacity()->isSelected()) flags |= int(BrushSlot::Flags::InkOpacity);
- if (params.shade()->isSelected()) flags |= int(BrushSlot::Flags::Shade);
- if (params.pixelPerfect()->isSelected()) flags |= int(BrushSlot::Flags::PixelPerfect);
-
- if (brush.flags() != BrushSlot::Flags(flags)) {
- brush.setFlags(BrushSlot::Flags(flags));
- m_brushes.setBrushSlot(m_slot, brush);
+ if (m_changeFlags) {
+ brush = m_brushes.getBrushSlot(m_slot);
+
+ int flags = (int(brush.flags()) & int(BrushSlot::Flags::Locked));
+ if (params.brushType()->isSelected()) flags |= int(BrushSlot::Flags::BrushType);
+ if (params.brushSize()->isSelected()) flags |= int(BrushSlot::Flags::BrushSize);
+ if (params.brushAngle()->isSelected()) flags |= int(BrushSlot::Flags::BrushAngle);
+ if (params.fgColor()->isSelected()) flags |= int(BrushSlot::Flags::FgColor);
+ if (params.bgColor()->isSelected()) flags |= int(BrushSlot::Flags::BgColor);
+ if (params.inkType()->isSelected()) flags |= int(BrushSlot::Flags::InkType);
+ if (params.inkOpacity()->isSelected()) flags |= int(BrushSlot::Flags::InkOpacity);
+ if (params.shade()->isSelected()) flags |= int(BrushSlot::Flags::Shade);
+ if (params.pixelPerfect()->isSelected()) flags |= int(BrushSlot::Flags::PixelPerfect);
+
+ if (brush.flags() != BrushSlot::Flags(flags)) {
+ brush.setFlags(BrushSlot::Flags(flags));
+ m_brushes.setBrushSlot(m_slot, brush);
+ }
}
}
@@ -212,6 +216,8 @@ private:
m_brushes.setBrushSlot(
m_slot, contextBar->createBrushSlotFromPreferences());
m_brushes.lockBrushSlot(m_slot);
+
+ m_changeFlags = false;
}
void onLockBrush() {
@@ -223,16 +229,19 @@ private:
void onDeleteBrush() {
m_brushes.removeBrushSlot(m_slot);
+ m_changeFlags = false;
}
void onDeleteAllBrushes() {
m_brushes.removeAllBrushSlots();
+ m_changeFlags = false;
}
BrushPopup* m_popup;
AppBrushes& m_brushes;
BrushRef m_brush;
int m_slot;
+ bool m_changeFlags;
};
class NewCustomBrushItem : public ButtonSet::Item {
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list