summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomasz Boczkowski <penginsbacon@gmail.com>2014-06-01 08:41:10 +0000
committerTomasz Boczkowski <penginsbacon@gmail.com>2014-06-01 08:41:10 +0000
commitade68e2b3601c0ef2912440b028e7b9e1f326bcc (patch)
tree59a6d915f278b569fa340bf16080dbc0934be5a3 /src
parentSPColorICC c++sification: using SelectedColor (diff)
downloadinkscape-ade68e2b3601c0ef2912440b028e7b9e1f326bcc.tar.gz
inkscape-ade68e2b3601c0ef2912440b028e7b9e1f326bcc.zip
inhibit SelectedColor::setColorAlpha in the callbacks of it's signals
(bzr r13341.6.43)
Diffstat (limited to 'src')
-rw-r--r--src/ui/selected-color.cpp29
-rw-r--r--src/ui/selected-color.h4
-rw-r--r--src/ui/widget/color-entry.cpp8
-rw-r--r--src/ui/widget/color-icc-selector.cpp2
-rw-r--r--src/ui/widget/color-scales.cpp18
-rw-r--r--src/ui/widget/color-wheel-selector.cpp14
-rw-r--r--src/widgets/sp-color-notebook.cpp4
7 files changed, 34 insertions, 45 deletions
diff --git a/src/ui/selected-color.cpp b/src/ui/selected-color.cpp
index 10ca68b21..24720f870 100644
--- a/src/ui/selected-color.cpp
+++ b/src/ui/selected-color.cpp
@@ -28,6 +28,7 @@ SelectedColor::SelectedColor()
, _alpha(1.0)
, _held(false)
, _virgin(true)
+ , _updating(false)
{
}
@@ -38,7 +39,7 @@ SelectedColor::~SelectedColor() {
void SelectedColor::setColor(SPColor const &color)
{
- setColorAlpha( color, _alpha, true);
+ setColorAlpha( color, _alpha);
}
SPColor SelectedColor::color() const
@@ -49,7 +50,7 @@ SPColor SelectedColor::color() const
void SelectedColor::setAlpha(gfloat alpha)
{
g_return_if_fail( ( 0.0 <= alpha ) && ( alpha <= 1.0 ) );
- setColorAlpha( _color, alpha, true);
+ setColorAlpha( _color, alpha);
}
gfloat SelectedColor::alpha() const
@@ -57,13 +58,17 @@ gfloat SelectedColor::alpha() const
return _alpha;
}
-void SelectedColor::setColorAlpha(SPColor const &color, gfloat alpha, bool emit)
+void SelectedColor::setColorAlpha(SPColor const &color, gfloat alpha)
{
#ifdef DUMP_CHANGE_INFO
g_message("SelectedColor::setColorAlpha( this=%p, %f, %f, %f, %s, %f, %s) in %s", this, color.v.c[0], color.v.c[1], color.v.c[2], (color.icc?color.icc->colorProfile.c_str():"<null>"), alpha, (emit?"YES":"no"), FOO_NAME(_csel));
#endif
g_return_if_fail( ( 0.0 <= alpha ) && ( alpha <= 1.0 ) );
+ if (_updating) {
+ return;
+ }
+
#ifdef DUMP_CHANGE_INFO
g_message("---- SelectedColor::setColorAlpha virgin:%s !close:%s alpha is:%s in %s",
(_virgin?"YES":"no"),
@@ -81,13 +86,14 @@ void SelectedColor::setColorAlpha(SPColor const &color, gfloat alpha, bool emit)
_color = color;
_alpha = alpha;
- if (emit) {
- if (_held) {
- signal_dragged.emit();
- } else {
- signal_changed.emit();
- }
+ _updating = true;
+ if (_held) {
+ signal_dragged.emit();
+ } else {
+ signal_changed.emit();
}
+ _updating = false;
+
#ifdef DUMP_CHANGE_INFO
} else {
g_message("++++ SelectedColor::setColorAlpha color:%08x ==> _color:%08X isClose:%s in %s", color.toRGBA32(alpha), _color.toRGBA32(_alpha),
@@ -102,11 +108,15 @@ void SelectedColor::colorAlpha(SPColor &color, gfloat &alpha) const {
}
void SelectedColor::setHeld(bool held) {
+ if (_updating) {
+ return;
+ }
bool grabbed = held && !_held;
bool released = !held && _held;
_held = held;
+ _updating = true;
if (grabbed) {
signal_grabbed.emit();
}
@@ -115,6 +125,7 @@ void SelectedColor::setHeld(bool held) {
signal_released.emit();
signal_changed.emit();
}
+ _updating = false;
}
void SelectedColor::preserveICC() {
diff --git a/src/ui/selected-color.h b/src/ui/selected-color.h
index 5d3d89672..9f86d4255 100644
--- a/src/ui/selected-color.h
+++ b/src/ui/selected-color.h
@@ -39,7 +39,7 @@ public:
void setAlpha(gfloat alpha);
gfloat alpha() const;
- void setColorAlpha(SPColor const &color, gfloat alpha, bool emit = false);
+ void setColorAlpha(SPColor const &color, gfloat alpha);
void colorAlpha(SPColor &color, gfloat &alpha) const;
void setHeld(bool held);
@@ -67,6 +67,8 @@ private:
*/
bool _virgin;
+ bool _updating;
+
static double const _EPSILON;
};
diff --git a/src/ui/widget/color-entry.cpp b/src/ui/widget/color-entry.cpp
index 56fd6080e..e26cb4ade 100644
--- a/src/ui/widget/color-entry.cpp
+++ b/src/ui/widget/color-entry.cpp
@@ -71,23 +71,17 @@ void ColorEntry::on_changed() {
if (len < 8) {
rgba = rgba << (4 * (8 - len));
}
- _updating = true;
if (changed) {
set_text(str);
}
SPColor color(rgba);
- _color.setColorAlpha(color, SP_RGBA32_A_F(rgba), true);
- _updating = false;
+ _color.setColorAlpha(color, SP_RGBA32_A_F(rgba));
}
g_free(str);
}
void ColorEntry::_onColorChanged() {
- if (_updating) {
- return;
- }
-
SPColor color = _color.color();
gdouble alpha = _color.alpha();
diff --git a/src/ui/widget/color-icc-selector.cpp b/src/ui/widget/color-icc-selector.cpp
index 1187dd081..d679f9273 100644
--- a/src/ui/widget/color-icc-selector.cpp
+++ b/src/ui/widget/color-icc-selector.cpp
@@ -1006,7 +1006,7 @@ void ColorICCSelectorImpl::_adjustmentChanged( GtkAdjustment *adjustment, ColorI
}
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
}
- iccSelector->_impl->_color.setColorAlpha(newColor, scaled, true);
+ iccSelector->_impl->_color.setColorAlpha(newColor, scaled);
//iccSelector->_updateInternals( newColor, scaled, iccSelector->_impl->_dragging );
iccSelector->_impl->_updateSliders( match );
diff --git a/src/ui/widget/color-scales.cpp b/src/ui/widget/color-scales.cpp
index 234e7a2d1..ac1f52da3 100644
--- a/src/ui/widget/color-scales.cpp
+++ b/src/ui/widget/color-scales.cpp
@@ -164,11 +164,6 @@ void ColorScales::_initUI(SPColorScalesMode mode)
void ColorScales::_recalcColor( gboolean changing )
{
- if (_updating) {
- return;
- }
- _updating = true;
-
if ( changing )
{
SPColor color;
@@ -198,13 +193,12 @@ void ColorScales::_recalcColor( gboolean changing )
}
_color.preserveICC();
- _color.setColorAlpha(color, alpha, true);
+ _color.setColorAlpha(color, alpha);
}
else
{
// _updateInternals( _color, _alpha, _dragging );
}
- _updating = false;
}
/* Helpers for setting color value */
@@ -232,7 +226,7 @@ void ColorScales::_setRangeLimit( gdouble upper )
void ColorScales::_onColorChanged()
{
- if (_updating || !get_visible()) {
+ if (!get_visible()) {
return;
}
#ifdef DUMP_CHANGE_INFO
@@ -468,13 +462,11 @@ void ColorScales::_sliderAnyGrabbed()
if (_updating) {
return;
}
- _updating = true;
if (!_dragging) {
_dragging = TRUE;
_color.setHeld(true);
_recalcColor( FALSE );
}
- _updating = false;
}
void ColorScales::_sliderAnyReleased()
@@ -482,13 +474,11 @@ void ColorScales::_sliderAnyReleased()
if (_updating) {
return;
}
- _updating = true;
if (_dragging) {
_dragging = FALSE;
_color.setHeld(false);
_recalcColor( FALSE );
}
- _updating = false;
}
void ColorScales::_sliderAnyChanged()
@@ -501,7 +491,9 @@ void ColorScales::_sliderAnyChanged()
void ColorScales::_adjustmentChanged( ColorScales *scales, guint channel )
{
- if (scales->_updating) return;
+ if (scales->_updating) {
+ return;
+ }
scales->_updateSliders( (1 << channel) );
scales->_recalcColor (TRUE);
diff --git a/src/ui/widget/color-wheel-selector.cpp b/src/ui/widget/color-wheel-selector.cpp
index 4bf40dbb6..5f7260635 100644
--- a/src/ui/widget/color-wheel-selector.cpp
+++ b/src/ui/widget/color-wheel-selector.cpp
@@ -161,10 +161,8 @@ void ColorWheelSelector::_colorChanged()
#ifdef DUMP_CHANGE_INFO
g_message("ColorWheelSelector::_colorChanged( this=%p, %f, %f, %f, %f)", this, _color.color().v.c[0], _color.color().v.c[1], _color.color().v.c[2], alpha );
#endif
- if (_updating) {
- return;
- }
+ bool oldval = _updating;
_updating = true;
{
float hsv[3] = {0,0,0};
@@ -180,7 +178,7 @@ void ColorWheelSelector::_colorChanged()
ColorScales::setScaled(_alpha_adjustment->gobj(), _color.alpha());
- _updating = false;
+ _updating = oldval;
}
void ColorWheelSelector::_adjustmentChanged()
@@ -188,7 +186,6 @@ void ColorWheelSelector::_adjustmentChanged()
if (_updating) {
return;
}
- _updating = true;
// TODO check this. It looks questionable:
// if a value is entered between 0 and 1 exclusive, normalize it to (int) 0..255 or 0..100
@@ -200,8 +197,6 @@ void ColorWheelSelector::_adjustmentChanged()
_color.preserveICC();
_color.setAlpha(ColorScales::getScaled(_alpha_adjustment->gobj()));
-
- _updating = false;
}
void ColorWheelSelector::_sliderGrabbed()
@@ -222,10 +217,8 @@ void ColorWheelSelector::_sliderChanged()
return;
}
- _updating = true;
_color.preserveICC();
_color.setAlpha(ColorScales::getScaled(_alpha_adjustment->gobj()));
- _updating = false;
}
void ColorWheelSelector::_wheelChanged(GimpColorWheel *wheel, ColorWheelSelector *wheelSelector)
@@ -233,7 +226,6 @@ void ColorWheelSelector::_wheelChanged(GimpColorWheel *wheel, ColorWheelSelector
if (wheelSelector->_updating){
return;
}
- wheelSelector->_updating = true;
gdouble h = 0;
gdouble s = 0;
@@ -255,8 +247,6 @@ void ColorWheelSelector::_wheelChanged(GimpColorWheel *wheel, ColorWheelSelector
wheelSelector->_color.setHeld(gimp_color_wheel_is_adjusting(wheel));
wheelSelector->_color.setColor(color);
-
- wheelSelector->_updating = false;
}
diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp
index 2097737d4..5bfe1f400 100644
--- a/src/widgets/sp-color-notebook.cpp
+++ b/src/widgets/sp-color-notebook.cpp
@@ -456,7 +456,7 @@ ColorNotebook::Page::Page(Inkscape::UI::ColorSelectorFactory *selector_factory,
void ColorNotebook::_colorChanged()
{
_updating = true;
- _selected_color.setColorAlpha(_color, _alpha, true);
+ _selected_color.setColorAlpha(_color, _alpha);
_updating = false;
SPColorSelector* cselPage = getCurrentSelector();
@@ -590,7 +590,7 @@ void ColorNotebook::_entryModified (SPColorSelector *csel, SPColorNotebook *colo
csel->base->getColorAlpha( color, alpha );
nb->_updating = true;
- nb->_selected_color.setColorAlpha(color, alpha, true);
+ nb->_selected_color.setColorAlpha(color, alpha);
nb->_updating = false;
nb->_updateInternals( color, alpha, nb->_dragging );
}