summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomasz Boczkowski <penginsbacon@gmail.com>2014-06-01 09:06:36 +0000
committerTomasz Boczkowski <penginsbacon@gmail.com>2014-06-01 09:06:36 +0000
commit41d146e6c99b26bc5ce2a377fc70fe28e5bb8db5 (patch)
treeb9d3a2a7b2a116c7fed7cd327f856338986fff65 /src
parentinhibit SelectedColor::setColorAlpha in the callbacks of it's signals (diff)
downloadinkscape-41d146e6c99b26bc5ce2a377fc70fe28e5bb8db5.tar.gz
inkscape-41d146e6c99b26bc5ce2a377fc70fe28e5bb8db5.zip
SPColorNotebook cleanup
(bzr r13341.6.44)
Diffstat (limited to 'src')
-rw-r--r--src/widgets/sp-color-notebook.cpp146
-rw-r--r--src/widgets/sp-color-notebook.h12
2 files changed, 16 insertions, 142 deletions
diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp
index 5bfe1f400..420efacc1 100644
--- a/src/widgets/sp-color-notebook.cpp
+++ b/src/widgets/sp-color-notebook.cpp
@@ -112,42 +112,12 @@ sp_color_notebook_switch_page(GtkNotebook *notebook,
{
if ( colorbook )
{
- ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
- nb->switchPage( notebook, page, page_num );
-
// remember the page we switched to
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setInt("/colorselector/page", page_num);
}
}
-void ColorNotebook::switchPage(GtkNotebook*,
- GtkWidget*,
- guint page_num)
-{
- SPColorSelector* csel;
- GtkWidget* widget;
-
- if ( gtk_notebook_get_current_page (GTK_NOTEBOOK (_book)) >= 0 )
- {
- csel = getCurrentSelector();
- if (csel) {
- csel->base->getColorAlpha(_color, _alpha);
- }
- }
- widget = gtk_notebook_get_nth_page (GTK_NOTEBOOK (_book), page_num);
- if ( widget && SP_IS_COLOR_SELECTOR(widget) )
- {
- csel = SP_COLOR_SELECTOR (widget);
- if (csel) {
- csel->base->setColorAlpha( _color, _alpha );
- }
-
- // Temporary workaround to undo a spurious GRABBED
- _released();
- }
-}
-
static void
sp_color_notebook_init (SPColorNotebook *colorbook)
{
@@ -430,23 +400,6 @@ ColorNotebook::ColorNotebook( SPColorSelector* csel )
#endif
}
-SPColorSelector* ColorNotebook::getCurrentSelector()
-{
- SPColorSelector* csel = NULL;
- gint current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (_book));
-
- if ( current_page >= 0 )
- {
- GtkWidget* widget = gtk_notebook_get_nth_page (GTK_NOTEBOOK (_book), current_page);
- if ( SP_IS_COLOR_SELECTOR (widget) )
- {
- csel = SP_COLOR_SELECTOR (widget);
- }
- }
-
- return csel;
-}
-
ColorNotebook::Page::Page(Inkscape::UI::ColorSelectorFactory *selector_factory, bool enabled_full)
: selector_factory(selector_factory)
, enabled_full(enabled_full)
@@ -457,13 +410,8 @@ void ColorNotebook::_colorChanged()
{
_updating = true;
_selected_color.setColorAlpha(_color, _alpha);
+ _updateICCButtons();
_updating = false;
-
- SPColorSelector* cselPage = getCurrentSelector();
- if ( cselPage )
- {
- cselPage->base->setColorAlpha( _color, _alpha );
- }
}
void ColorNotebook::_picker_clicked(GtkWidget * /*widget*/, SPColorNotebook * /*colorbook*/)
@@ -475,8 +423,11 @@ void ColorNotebook::_picker_clicked(GtkWidget * /*widget*/, SPColorNotebook * /*
}
// TODO pass in param so as to avoid the need for SP_ACTIVE_DOCUMENT
-void ColorNotebook::_updateRgbaEntry( const SPColor& color, gfloat alpha )
+void ColorNotebook::_updateICCButtons()
{
+ SPColor color = _selected_color.color();
+ gfloat alpha = _selected_color.alpha();
+
g_return_if_fail( ( 0.0 <= alpha ) && ( alpha <= 1.0 ) );
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
@@ -538,63 +489,6 @@ void ColorNotebook::_buttonClicked(GtkWidget *widget, SPColorNotebook *colorboo
}
}
-void ColorNotebook::_entryGrabbed (SPColorSelector *, SPColorNotebook *colorbook)
-{
- ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
- nb->_grabbed();
-}
-
-void ColorNotebook::_entryDragged (SPColorSelector *csel, SPColorNotebook *colorbook)
-{
- gboolean oldState;
- ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
-
- oldState = nb->_dragging;
-
- nb->_dragging = TRUE;
- nb->_entryModified( csel, colorbook );
-
- nb->_dragging = oldState;
-}
-
-void ColorNotebook::_entryReleased (SPColorSelector *, SPColorNotebook *colorbook)
-{
- ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
- nb->_released();
-}
-
-void ColorNotebook::_entryChanged (SPColorSelector *csel, SPColorNotebook *colorbook)
-{
- gboolean oldState;
- ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
-
- oldState = nb->_dragging;
-
- nb->_dragging = FALSE;
- nb->_entryModified( csel, colorbook );
-
- nb->_dragging = oldState;
-}
-
-void ColorNotebook::_entryModified (SPColorSelector *csel, SPColorNotebook *colorbook)
-{
- g_return_if_fail (colorbook != NULL);
- g_return_if_fail (SP_IS_COLOR_NOTEBOOK (colorbook));
- g_return_if_fail (csel != NULL);
- g_return_if_fail (SP_IS_COLOR_SELECTOR (csel));
-
- ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
- SPColor color;
- gfloat alpha = 1.0;
-
- csel->base->getColorAlpha( color, alpha );
-
- nb->_updating = true;
- nb->_selected_color.setColorAlpha(color, alpha);
- nb->_updating = false;
- nb->_updateInternals( color, alpha, nb->_dragging );
-}
-
void ColorNotebook::_onSelectedColorChanged() {
if (_updating) {
return;
@@ -602,36 +496,34 @@ void ColorNotebook::_onSelectedColorChanged() {
SPColor color;
gfloat alpha = 1.0;
-
- _updating = true;
_selected_color.colorAlpha(color, alpha);
- _updateInternals(color, alpha, _dragging);
- _updating = false;
+ _updateInternals(color, alpha, false);
+ _updateICCButtons();
}
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, true);
- _updating = false;
-
- _dragging = oldState;
+ _updateICCButtons();
}
void ColorNotebook::_onSelectedColorGrabbed() {
+ if (_updating) {
+ return;
+ }
+
_grabbed();
}
void ColorNotebook::_onSelectedColorReleased() {
+ if (_updating) {
+ return;
+ }
_released();
}
@@ -656,14 +548,6 @@ GtkWidget* ColorNotebook::_addPage(Page& page) {
gtk_box_pack_start (GTK_BOX (_buttonbox), _buttons[page_num], TRUE, TRUE, 0);
g_signal_connect (G_OBJECT (_buttons[page_num]), "clicked", G_CALLBACK (_buttonClicked), _csel);
-
- 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);
- g_signal_connect (selector_widget->gobj(), "released", G_CALLBACK (_entryReleased), _csel);
- g_signal_connect (selector_widget->gobj(), "changed", G_CALLBACK (_entryChanged), _csel);
- }
}
return selector_widget->gobj();
diff --git a/src/widgets/sp-color-notebook.h b/src/widgets/sp-color-notebook.h
index ca9343bf0..cc3fb4c76 100644
--- a/src/widgets/sp-color-notebook.h
+++ b/src/widgets/sp-color-notebook.h
@@ -40,9 +40,6 @@ public:
virtual void init();
- SPColorSelector* getCurrentSelector();
- void switchPage( GtkNotebook *notebook, GtkWidget *page, guint page_num );
-
protected:
struct Page {
Page(Inkscape::UI::ColorSelectorFactory *selector_factory, bool enabled_full);
@@ -51,11 +48,6 @@ protected:
bool enabled_full;
};
- static void _entryGrabbed( SPColorSelector *csel, SPColorNotebook *colorbook );
- static void _entryDragged( SPColorSelector *csel, SPColorNotebook *colorbook );
- static void _entryReleased( SPColorSelector *csel, SPColorNotebook *colorbook );
- static void _entryChanged( SPColorSelector *csel, SPColorNotebook *colorbook );
- static void _entryModified( SPColorSelector *csel, SPColorNotebook *colorbook );
static void _buttonClicked(GtkWidget *widget, SPColorNotebook *colorbook);
static void _picker_clicked(GtkWidget *widget, SPColorNotebook *colorbook);
@@ -66,15 +58,13 @@ protected:
virtual void _onSelectedColorGrabbed();
virtual void _onSelectedColorReleased();
- void _updateRgbaEntry( const SPColor& color, gfloat alpha );
+ void _updateICCButtons();
void _setCurrentPage(int i);
GtkWidget* _addPage(Page& page);
Inkscape::UI::SelectedColor _selected_color;
gboolean _updating : 1;
- gboolean _updatingrgba : 1;
- gboolean _dragging : 1;
gulong _switchId;
gulong _entryId;
GtkWidget *_book;