summaryrefslogtreecommitdiffstats
path: root/src/widgets/sp-color-notebook.cpp
diff options
context:
space:
mode:
authorTomasz Boczkowski <penginsbacon@gmail.com>2014-05-31 11:13:31 +0000
committerTomasz Boczkowski <penginsbacon@gmail.com>2014-05-31 11:13:31 +0000
commitefd28a1d2bae756f53ad9b689fb6079be9d92605 (patch)
tree058bb9b8eb78238fcf09144bbd00408dfbb7711c /src/widgets/sp-color-notebook.cpp
parentSPColorWheelSelector c++-sification: inherit Gtk::Table/Grid (diff)
downloadinkscape-efd28a1d2bae756f53ad9b689fb6079be9d92605.tar.gz
inkscape-efd28a1d2bae756f53ad9b689fb6079be9d92605.zip
fixed updating selected color using wheel
(bzr r13341.6.36)
Diffstat (limited to 'src/widgets/sp-color-notebook.cpp')
-rw-r--r--src/widgets/sp-color-notebook.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp
index 58c26b8b0..7495d1deb 100644
--- a/src/widgets/sp-color-notebook.cpp
+++ b/src/widgets/sp-color-notebook.cpp
@@ -363,6 +363,9 @@ void ColorNotebook::init()
G_CALLBACK (sp_color_notebook_switch_page), SP_COLOR_NOTEBOOK(_csel));
_selected_color.signal_changed.connect(sigc::mem_fun(this, &ColorNotebook::_onSelectedColorChanged));
+ _selected_color.signal_dragged.connect(sigc::mem_fun(this, &ColorNotebook::_onSelectedColorDragged));
+ _selected_color.signal_grabbed.connect(sigc::mem_fun(this, &ColorNotebook::_onSelectedColorGrabbed));
+ _selected_color.signal_released.connect(sigc::mem_fun(this, &ColorNotebook::_onSelectedColorReleased));
}
static void sp_color_notebook_dispose(GObject *object)
@@ -598,8 +601,36 @@ void ColorNotebook::_onSelectedColorChanged() {
SPColor color;
gfloat alpha = 1.0;
+ _updating = true;
_selected_color.colorAlpha(color, alpha);
_updateInternals(color, alpha, _dragging);
+ _updating = false;
+}
+
+void ColorNotebook::_onSelectedColorDragged() {
+ if (_updating) {
+ return;
+ }
+ bool oldState = _dragging;
+
+ _dragging = TRUE;
+ SPColor color;
+ gfloat alpha = 1.0;
+
+ _updating = true;
+ _selected_color.colorAlpha(color, alpha);
+ _updateInternals(color, alpha, _dragging);
+ _updating = false;
+
+ _dragging = oldState;
+}
+
+void ColorNotebook::_onSelectedColorGrabbed() {
+ _grabbed();
+}
+
+void ColorNotebook::_onSelectedColorReleased() {
+ _released();
}
GtkWidget* ColorNotebook::_addPage(Page& page) {
@@ -624,7 +655,7 @@ GtkWidget* ColorNotebook::_addPage(Page& page) {
g_signal_connect (G_OBJECT (_buttons[page_num]), "clicked", G_CALLBACK (_buttonClicked), _csel);
- if (SP_IS_COLOR_SELECTOR(selector_widget)) {
+ if (SP_IS_COLOR_SELECTOR(selector_widget->gobj())) {
//Connect glib signals of non-refactored widgets
g_signal_connect (selector_widget->gobj(), "grabbed", G_CALLBACK (_entryGrabbed), _csel);
g_signal_connect (selector_widget->gobj(), "dragged", G_CALLBACK (_entryDragged), _csel);