[aseprite] 81/196: Add mouse wheel behavior in color selector to rotate hue (fix #1012)
Tobias Hansen
thansen at moszumanska.debian.org
Wed Apr 20 18:50:04 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 99803c07ba67a826ee1ed9f27edc6b575e0ff087
Author: David Capello <davidcapello at gmail.com>
Date: Thu Mar 17 16:40:34 2016 -0300
Add mouse wheel behavior in color selector to rotate hue (fix #1012)
---
src/app/ui/color_bar.cpp | 8 ++++++-
src/app/ui/color_bar.h | 1 +
src/app/ui/color_selector.cpp | 41 ++++++++++++++++++++++++++++++++++++
src/app/ui/color_selector.h | 1 +
src/app/ui/color_spectrum.cpp | 2 +-
src/app/ui/color_tint_shade_tone.cpp | 2 +-
src/app/ui/color_wheel.cpp | 2 +-
7 files changed, 53 insertions(+), 4 deletions(-)
diff --git a/src/app/ui/color_bar.cpp b/src/app/ui/color_bar.cpp
index c353ff8..a8209a4 100644
--- a/src/app/ui/color_bar.cpp
+++ b/src/app/ui/color_bar.cpp
@@ -148,6 +148,7 @@ ColorBar::ColorBar(int align)
, m_syncingWithPref(false)
, m_lastDocument(nullptr)
, m_ascending(true)
+ , m_lastButtons(kButtonNone)
{
m_instance = this;
@@ -818,10 +819,15 @@ void ColorBar::onColorButtonChange(const app::Color& color)
void ColorBar::onPickSpectrum(const app::Color& color, ui::MouseButtons buttons)
{
+ if (buttons == kButtonNone)
+ buttons = m_lastButtons;
+
if ((buttons & kButtonRight) == kButtonRight)
setBgColor(color);
- else
+ else if ((buttons & kButtonLeft) == kButtonLeft)
setFgColor(color);
+
+ m_lastButtons = buttons;
}
void ColorBar::onReverseColors()
diff --git a/src/app/ui/color_bar.h b/src/app/ui/color_bar.h
index dde670a..466f876 100644
--- a/src/app/ui/color_bar.h
+++ b/src/app/ui/color_bar.h
@@ -167,6 +167,7 @@ namespace app {
base::ScopedConnection m_fgConn;
base::ScopedConnection m_bgConn;
base::ScopedConnection m_appPalChangeConn;
+ ui::MouseButtons m_lastButtons;
};
} // namespace app
diff --git a/src/app/ui/color_selector.cpp b/src/app/ui/color_selector.cpp
index f9fae97..f2746d3 100644
--- a/src/app/ui/color_selector.cpp
+++ b/src/app/ui/color_selector.cpp
@@ -11,9 +11,12 @@
#include "app/ui/color_selector.h"
+#include "ui/message.h"
#include "ui/size_hint_event.h"
#include "ui/theme.h"
+#include <cmath>
+
namespace app {
using namespace ui;
@@ -38,4 +41,42 @@ void ColorSelector::onSizeHint(SizeHintEvent& ev)
ev.setSizeHint(gfx::Size(32*ui::guiscale(), 32*ui::guiscale()));
}
+bool ColorSelector::onProcessMessage(ui::Message* msg)
+{
+ switch (msg->type()) {
+
+ case kMouseWheelMessage:
+ if (!hasCapture()) {
+ double scale = 1.0;
+ if (msg->shiftPressed() ||
+ msg->ctrlPressed() ||
+ msg->altPressed()) {
+ scale = 15.0;
+ }
+
+ double newHue = m_color.getHue()
+ + scale*(+ static_cast<MouseMessage*>(msg)->wheelDelta().x
+ - static_cast<MouseMessage*>(msg)->wheelDelta().y);
+
+ while (newHue < 0.0)
+ newHue += 360.0;
+ newHue = std::fmod(newHue, 360.0);
+
+ if (newHue != m_color.getHue()) {
+ app::Color newColor =
+ app::Color::fromHsv(
+ newHue,
+ m_color.getSaturation(),
+ m_color.getValue());
+
+ ColorChange(newColor, kButtonNone);
+ }
+ }
+ break;
+
+ }
+
+ return Widget::onProcessMessage(msg);
+}
+
} // namespace app
diff --git a/src/app/ui/color_selector.h b/src/app/ui/color_selector.h
index 8e34e05..8de16ee 100644
--- a/src/app/ui/color_selector.h
+++ b/src/app/ui/color_selector.h
@@ -27,6 +27,7 @@ namespace app {
protected:
void onSizeHint(ui::SizeHintEvent& ev) override;
+ bool onProcessMessage(ui::Message* msg) override;
app::Color m_color;
diff --git a/src/app/ui/color_spectrum.cpp b/src/app/ui/color_spectrum.cpp
index f44a722..d7e9a93 100644
--- a/src/app/ui/color_spectrum.cpp
+++ b/src/app/ui/color_spectrum.cpp
@@ -163,7 +163,7 @@ bool ColorSpectrum::onProcessMessage(ui::Message* msg)
}
- return Widget::onProcessMessage(msg);
+ return ColorSelector::onProcessMessage(msg);
}
} // namespace app
diff --git a/src/app/ui/color_tint_shade_tone.cpp b/src/app/ui/color_tint_shade_tone.cpp
index cfe6c4c..855648a 100644
--- a/src/app/ui/color_tint_shade_tone.cpp
+++ b/src/app/ui/color_tint_shade_tone.cpp
@@ -177,7 +177,7 @@ bool ColorTintShadeTone::onProcessMessage(ui::Message* msg)
}
- return Widget::onProcessMessage(msg);
+ return ColorSelector::onProcessMessage(msg);
}
bool ColorTintShadeTone::inHueBarArea(const gfx::Point& pos) const
diff --git a/src/app/ui/color_wheel.cpp b/src/app/ui/color_wheel.cpp
index 899183f..25c7911 100644
--- a/src/app/ui/color_wheel.cpp
+++ b/src/app/ui/color_wheel.cpp
@@ -306,7 +306,7 @@ bool ColorWheel::onProcessMessage(ui::Message* msg)
}
- return Widget::onProcessMessage(msg);
+ return ColorSelector::onProcessMessage(msg);
}
void ColorWheel::onOptions()
--
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