X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fui%2Fwidget%2Fcolor-picker.cpp;h=7d7dc9117c32092e1bdbb3c5e20c51b981ac2ee5;hb=da15593ce819c0c0fa2c2adaddebde9de7e0f62c;hp=ef8c491d0fe458a4c953c74b6cb5a61fa50336b5;hpb=4332ec89e368205ed79a0ac55bbc3aa9e45cb3d9;p=inkscape.git diff --git a/src/ui/widget/color-picker.cpp b/src/ui/widget/color-picker.cpp index ef8c491d0..7d7dc9117 100644 --- a/src/ui/widget/color-picker.cpp +++ b/src/ui/widget/color-picker.cpp @@ -16,15 +16,19 @@ #include "inkscape.h" #include "desktop-handles.h" #include "document.h" +#include "dialogs/dialog-events.h" #include "widgets/sp-color-notebook.h" #include "color-picker.h" +static bool _in_use = false; + namespace Inkscape { namespace UI { namespace Widget { +void sp_color_picker_color_mod(SPColorSelector *csel, GObject *cp); ColorPicker::ColorPicker (const Glib::ustring& title, const Glib::ustring& tip, guint32 rgba, bool undo) @@ -47,6 +51,9 @@ ColorPicker::~ColorPicker() void ColorPicker::setupDialog(const Glib::ustring &title) { + GtkWidget *dlg = GTK_WIDGET(_colorSelectorDialog.gobj()); + sp_transientize(dlg); + _colorSelectorDialog.hide(); _colorSelectorDialog.set_title (title); _colorSelectorDialog.set_border_width (4); @@ -57,6 +64,8 @@ ColorPicker::setupDialog(const Glib::ustring &title) g_signal_connect(G_OBJECT(_colorSelector), "dragged", G_CALLBACK(sp_color_picker_color_mod), (void *)this); + g_signal_connect(G_OBJECT(_colorSelector), "released", + G_CALLBACK(sp_color_picker_color_mod), (void *)this); g_signal_connect(G_OBJECT(_colorSelector), "changed", G_CALLBACK(sp_color_picker_color_mod), (void *)this); @@ -70,6 +79,8 @@ ColorPicker::setupDialog(const Glib::ustring &title) void ColorPicker::setRgba32 (guint32 rgba) { + if (_in_use) return; + _preview.setRgba32 (rgba); _rgba = rgba; if (_colorSelector) @@ -106,6 +117,9 @@ ColorPicker::on_changed (guint32) void sp_color_picker_color_mod(SPColorSelector *csel, GObject *cp) { + if (_in_use) return; + else _in_use = true; + SPColor color; float alpha; csel->base->getColorAlpha(color, &alpha); @@ -116,10 +130,13 @@ sp_color_picker_color_mod(SPColorSelector *csel, GObject *cp) (ptr->_preview).setRgba32 (rgba); if (ptr->_undo && SP_ACTIVE_DESKTOP) - sp_document_done(SP_DT_DOCUMENT(SP_ACTIVE_DESKTOP)); + sp_document_done(sp_desktop_document(SP_ACTIVE_DESKTOP), SP_VERB_NONE, + /* TODO: annotate */ "color-picker.cpp:130"); ptr->on_changed (rgba); + _in_use = false; ptr->_changed_signal.emit (rgba); + ptr->_rgba = rgba; }