diff options
| author | Tomasz Boczkowski <penginsbacon@gmail.com> | 2015-04-26 09:31:02 +0000 |
|---|---|---|
| committer | Tomasz Boczkowski <penginsbacon@gmail.com> | 2015-04-26 09:31:02 +0000 |
| commit | f3d9316c605cb9a96dac304a8a45bc3ae56fed82 (patch) | |
| tree | 49ead2c2c7d5f91c1873d5dbfc89401aa178dff5 /src/ui | |
| parent | merged SPNotebook c++-sification from svgpaints branch (diff) | |
| parent | added dragged, released, grabbed signals to SelectedColor (diff) | |
| download | inkscape-f3d9316c605cb9a96dac304a8a45bc3ae56fed82.tar.gz inkscape-f3d9316c605cb9a96dac304a8a45bc3ae56fed82.zip | |
merged SelectedColor enhancements from svgpaints branch
(bzr r14059.1.6)
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/selected-color.cpp | 22 | ||||
| -rw-r--r-- | src/ui/selected-color.h | 6 | ||||
| -rw-r--r-- | src/ui/widget/color-entry.cpp | 2 | ||||
| -rw-r--r-- | src/ui/widget/color-entry.h | 1 | ||||
| -rw-r--r-- | src/ui/widget/color-slider.cpp | 38 | ||||
| -rw-r--r-- | src/ui/widget/color-slider.h | 32 |
6 files changed, 70 insertions, 31 deletions
diff --git a/src/ui/selected-color.cpp b/src/ui/selected-color.cpp index fc702de83..440459c74 100644 --- a/src/ui/selected-color.cpp +++ b/src/ui/selected-color.cpp @@ -32,6 +32,7 @@ SelectedColor::SelectedColor() : _color(0) , _alpha(1.0) , _virgin(true) + , _held(false) { } @@ -86,7 +87,11 @@ void SelectedColor::setColorAlpha(SPColor const &color, gfloat alpha, bool emit) _alpha = alpha; if (emit) { - signal_changed.emit(); + if (_held) { + signal_dragged.emit(); + } else { + signal_changed.emit(); + } } #ifdef DUMP_CHANGE_INFO } else { @@ -101,6 +106,21 @@ void SelectedColor::colorAlpha(SPColor &color, gfloat &alpha) const { alpha = _alpha; } +void SelectedColor::setHeld(bool held) { + bool grabbed = held && !_held; + bool released = !held && _held; + + _held = held; + + if (grabbed) { + signal_grabbed.emit(); + } + + if (released) { + signal_released.emit(); + } +} + } } diff --git a/src/ui/selected-color.h b/src/ui/selected-color.h index 08b84b66c..ec0cc55e3 100644 --- a/src/ui/selected-color.h +++ b/src/ui/selected-color.h @@ -42,6 +42,11 @@ public: void setColorAlpha(SPColor const &color, gfloat alpha, bool emit = false); void colorAlpha(SPColor &color, gfloat &alpha) const; + void setHeld(bool held); + + sigc::signal<void> signal_grabbed; + sigc::signal<void> signal_dragged; + sigc::signal<void> signal_released; sigc::signal<void> signal_changed; private: // By default, disallow copy constructor and assignment operator @@ -54,6 +59,7 @@ private: */ gfloat _alpha; + bool _held; /** * This flag is true if no color is set yet */ diff --git a/src/ui/widget/color-entry.cpp b/src/ui/widget/color-entry.cpp index 223c86fd3..56fd6080e 100644 --- a/src/ui/widget/color-entry.cpp +++ b/src/ui/widget/color-entry.cpp @@ -30,6 +30,7 @@ ColorEntry::ColorEntry(SelectedColor &color) , _updating(false) { _color_changed_connection = color.signal_changed.connect(sigc::mem_fun(this, &ColorEntry::_onColorChanged)); + _color_dragged_connection = color.signal_dragged.connect(sigc::mem_fun(this, &ColorEntry::_onColorChanged)); _onColorChanged(); set_max_length(8); @@ -39,6 +40,7 @@ ColorEntry::ColorEntry(SelectedColor &color) ColorEntry::~ColorEntry() { _color_changed_connection.disconnect(); + _color_dragged_connection.disconnect(); } void ColorEntry::on_changed() { diff --git a/src/ui/widget/color-entry.h b/src/ui/widget/color-entry.h index 742324337..148b5dfe9 100644 --- a/src/ui/widget/color-entry.h +++ b/src/ui/widget/color-entry.h @@ -39,6 +39,7 @@ private: SelectedColor &_color; sigc::connection _color_changed_connection; + sigc::connection _color_dragged_connection; bool _updating; }; diff --git a/src/ui/widget/color-slider.cpp b/src/ui/widget/color-slider.cpp index fc64fad6f..711942e28 100644 --- a/src/ui/widget/color-slider.cpp +++ b/src/ui/widget/color-slider.cpp @@ -76,7 +76,7 @@ ColorSlider::ColorSlider(Gtk::Adjustment* adjustment) _b1 = 0xa0; _bmask = 0x08; - set_adjustment(adjustment); + setAdjustment(adjustment); } ColorSlider::~ColorSlider() { @@ -95,7 +95,7 @@ ColorSlider::~ColorSlider() { void ColorSlider::on_realize() { set_realized(); - if(!_refGdkWindow) + if(!_gdk_window) { GdkWindowAttr attributes; gint attributes_mask; @@ -126,10 +126,10 @@ void ColorSlider::on_realize() { attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP; #endif - _refGdkWindow = Gdk::Window::create(get_parent_window(), &attributes, + _gdk_window = Gdk::Window::create(get_parent_window(), &attributes, attributes_mask); - set_window(_refGdkWindow); - _refGdkWindow->set_user_data(gobj()); + set_window(_gdk_window); + _gdk_window->set_user_data(gobj()); #if !GTK_CHECK_VERSION(3,0,0) style_attach(); @@ -138,7 +138,7 @@ void ColorSlider::on_realize() { } void ColorSlider::on_unrealize() { - _refGdkWindow.reset(); + _gdk_window.reset(); Gtk::Widget::on_unrealize(); } @@ -147,7 +147,7 @@ void ColorSlider::on_size_allocate(Gtk::Allocation& allocation) { set_allocation(allocation); if (get_realized()) { - _refGdkWindow->move_resize(allocation.get_x(), allocation.get_y(), + _gdk_window->move_resize(allocation.get_x(), allocation.get_y(), allocation.get_width(), allocation.get_height()); } } @@ -192,7 +192,7 @@ bool ColorSlider::on_expose_event(GdkEventExpose* event) { bool result = false; if (get_is_drawable()) { - Cairo::RefPtr<Cairo::Context> cr = _refGdkWindow->create_cairo_context(); + Cairo::RefPtr<Cairo::Context> cr = _gdk_window->create_cairo_context(); result = on_draw(cr); } return result; @@ -218,7 +218,7 @@ bool ColorSlider::on_button_press_event(GdkEventButton *event) { #if GTK_CHECK_VERSION(3,0,0) gdk_device_grab(gdk_event_get_device(reinterpret_cast<GdkEvent *>(event)), - _refGdkWindow->gobj(), + _gdk_window->gobj(), GDK_OWNERSHIP_NONE, FALSE, static_cast<GdkEventMask>(GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK), @@ -272,9 +272,9 @@ bool ColorSlider::on_motion_notify_event(GdkEventMotion *event) { } #if GTK_CHECK_VERSION(3,0,0) -void ColorSlider::set_adjustment(Glib::RefPtr<Gtk::Adjustment> adjustment) { +void ColorSlider::setAdjustment(Glib::RefPtr<Gtk::Adjustment> adjustment) { #else -void ColorSlider::set_adjustment(Gtk::Adjustment *adjustment) { +void ColorSlider::setAdjustment(Gtk::Adjustment *adjustment) { #endif if (!adjustment) { #if GTK_CHECK_VERSION(3,0,0) @@ -298,21 +298,21 @@ void ColorSlider::set_adjustment(Gtk::Adjustment *adjustment) { _adjustment = adjustment; _adjustment_changed_connection = _adjustment->signal_changed().connect( - sigc::mem_fun(this, &ColorSlider::_on_adjustment_changed)); + sigc::mem_fun(this, &ColorSlider::_onAdjustmentChanged)); _adjustment_value_changed_connection = _adjustment->signal_value_changed().connect( - sigc::mem_fun(this, &ColorSlider::_on_adjustment_value_changed)); + sigc::mem_fun(this, &ColorSlider::_onAdjustmentValueChanged)); _value = ColorScales::getScaled(_adjustment->gobj()); - _on_adjustment_changed(); + _onAdjustmentChanged(); } } -void ColorSlider::_on_adjustment_changed() { +void ColorSlider::_onAdjustmentChanged() { queue_draw(); } -void ColorSlider::_on_adjustment_value_changed() { +void ColorSlider::_onAdjustmentValueChanged() { if (_value != ColorScales::getScaled( _adjustment->gobj() )) { gint cx, cy, cw, ch; #if GTK_CHECK_VERSION(3,0,0) @@ -346,7 +346,7 @@ void ColorSlider::_on_adjustment_value_changed() { } } -void ColorSlider::set_colors(guint32 start, guint32 mid, guint32 end) { +void ColorSlider::setColors(guint32 start, guint32 mid, guint32 end) { // Remove any map, if set _map = 0; @@ -368,13 +368,13 @@ void ColorSlider::set_colors(guint32 start, guint32 mid, guint32 end) { queue_draw(); } -void ColorSlider::set_map(const guchar *map) { +void ColorSlider::setMap(const guchar *map) { _map = const_cast<guchar *>(map); queue_draw(); } -void ColorSlider::set_background(guint dark, guint light, guint size) { +void ColorSlider::setBackground(guint dark, guint light, guint size) { _b0 = dark; _b1 = light; _bmask = size; diff --git a/src/ui/widget/color-slider.h b/src/ui/widget/color-slider.h index 00cc17ea7..48d067bb8 100644 --- a/src/ui/widget/color-slider.h +++ b/src/ui/widget/color-slider.h @@ -1,6 +1,3 @@ -#ifndef __SP_COLOR_SLIDER_H__ -#define __SP_COLOR_SLIDER_H__ - /* * A slider with colored background * @@ -12,6 +9,9 @@ * This code is in public domain */ +#ifndef SEEN_COLOR_SLIDER_H +#define SEEN_COLOR_SLIDER_H + #ifdef HAVE_CONFIG_H # include <config.h> #endif @@ -43,16 +43,16 @@ public: ~ColorSlider(); #if GTK_CHECK_VERSION(3,0,0) - void set_adjustment(Glib::RefPtr<Gtk::Adjustment> adjustment); + void setAdjustment(Glib::RefPtr<Gtk::Adjustment> adjustment); #else - void set_adjustment(Gtk::Adjustment *adjustment); + void setAdjustment(Gtk::Adjustment *adjustment); #endif - void set_colors(guint32 start, guint32 mid, guint32 end); + void setColors(guint32 start, guint32 mid, guint32 end); - void set_map(const guchar* map); + void setMap(const guchar* map); - void set_background(guint dark, guint light, guint size); + void setBackground(guint dark, guint light, guint size); sigc::signal<void> signal_grabbed; sigc::signal<void> signal_dragged; @@ -79,8 +79,8 @@ protected: #endif private: - void _on_adjustment_changed(); - void _on_adjustment_value_changed(); + void _onAdjustmentChanged(); + void _onAdjustmentValueChanged(); bool _dragging; @@ -101,7 +101,7 @@ private: gint _mapsize; guchar *_map; - Glib::RefPtr<Gdk::Window> _refGdkWindow; + Glib::RefPtr<Gdk::Window> _gdk_window; }; }//namespace Widget @@ -109,3 +109,13 @@ private: }//namespace Inkscape #endif +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : |
