[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