index ef8c491d0fe458a4c953c74b6cb5a61fa50336b5..7d7dc9117c32092e1bdbb3c5e20c51b981ac2ee5 100644 (file)
#include "inkscape.h"
#include "desktop-handles.h"
#include "document.h"
#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"
#include "widgets/sp-color-notebook.h"
#include "color-picker.h"
+static bool _in_use = false;
+
namespace Inkscape {
namespace UI {
namespace Widget {
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)
ColorPicker::ColorPicker (const Glib::ustring& title, const Glib::ustring& tip,
guint32 rgba, bool undo)
void
ColorPicker::setupDialog(const Glib::ustring &title)
{
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);
_colorSelectorDialog.hide();
_colorSelectorDialog.set_title (title);
_colorSelectorDialog.set_border_width (4);
g_signal_connect(G_OBJECT(_colorSelector), "dragged",
G_CALLBACK(sp_color_picker_color_mod), (void *)this);
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);
g_signal_connect(G_OBJECT(_colorSelector), "changed",
G_CALLBACK(sp_color_picker_color_mod), (void *)this);
void
ColorPicker::setRgba32 (guint32 rgba)
{
void
ColorPicker::setRgba32 (guint32 rgba)
{
+ if (_in_use) return;
+
_preview.setRgba32 (rgba);
_rgba = rgba;
if (_colorSelector)
_preview.setRgba32 (rgba);
_rgba = rgba;
if (_colorSelector)
void
sp_color_picker_color_mod(SPColorSelector *csel, GObject *cp)
{
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);
SPColor color;
float alpha;
csel->base->getColorAlpha(color, &alpha);
(ptr->_preview).setRgba32 (rgba);
if (ptr->_undo && SP_ACTIVE_DESKTOP)
(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);
ptr->on_changed (rgba);
+ _in_use = false;
ptr->_changed_signal.emit (rgba);
ptr->_changed_signal.emit (rgba);
+ ptr->_rgba = rgba;
}
}