summaryrefslogtreecommitdiffstats
path: root/src/ui/selected-color.cpp
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/ui/selected-color.cpp
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/ui/selected-color.cpp')
-rw-r--r--src/ui/selected-color.cpp29
1 files changed, 20 insertions, 9 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() {