summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorTomasz Boczkowski <penginsbacon@gmail.com>2015-04-26 09:31:02 +0000
committerTomasz Boczkowski <penginsbacon@gmail.com>2015-04-26 09:31:02 +0000
commitf3d9316c605cb9a96dac304a8a45bc3ae56fed82 (patch)
tree49ead2c2c7d5f91c1873d5dbfc89401aa178dff5 /src/ui
parentmerged SPNotebook c++-sification from svgpaints branch (diff)
parentadded dragged, released, grabbed signals to SelectedColor (diff)
downloadinkscape-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.cpp22
-rw-r--r--src/ui/selected-color.h6
-rw-r--r--src/ui/widget/color-entry.cpp2
-rw-r--r--src/ui/widget/color-entry.h1
-rw-r--r--src/ui/widget/color-slider.cpp38
-rw-r--r--src/ui/widget/color-slider.h32
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 :