diff options
| author | Alexander Valavanis <valavanisalex@gmail.com> | 2019-01-19 13:58:46 +0000 |
|---|---|---|
| committer | Alexander Valavanis <valavanisalex@gmail.com> | 2019-01-19 13:58:46 +0000 |
| commit | e77e650354daef5ced80adddf6d5a334bb6216d3 (patch) | |
| tree | ac1237a3194056ac457b5a9a7468b0d61c3a7335 /src/widgets | |
| parent | Merge branch 'master' of gitlab.com:inkscape/inkscape (diff) | |
| download | inkscape-e77e650354daef5ced80adddf6d5a334bb6216d3.tar.gz inkscape-e77e650354daef5ced80adddf6d5a334bb6216d3.zip | |
derive all toolbars from Inkscape::Toolbar
Diffstat (limited to 'src/widgets')
| -rw-r--r-- | src/widgets/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/widgets/sp-widget.cpp | 322 | ||||
| -rw-r--r-- | src/widgets/sp-widget.h | 74 | ||||
| -rw-r--r-- | src/widgets/spinbutton-events.cpp | 1 | ||||
| -rw-r--r-- | src/widgets/stroke-style.h | 1 | ||||
| -rw-r--r-- | src/widgets/toolbox.cpp | 58 | ||||
| -rw-r--r-- | src/widgets/toolbox.h | 9 |
7 files changed, 36 insertions, 431 deletions
diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt index 5a3b101e5..c41fcdb03 100644 --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -18,7 +18,6 @@ set(widgets_SRC paint-selector.cpp sp-attribute-widget.cpp sp-color-selector.cpp - sp-widget.cpp sp-xmlview-tree.cpp spinbutton-events.cpp spw-utilities.cpp @@ -46,7 +45,6 @@ set(widgets_SRC paint-selector.h sp-attribute-widget.h sp-color-selector.h - sp-widget.h sp-xmlview-tree.h spinbutton-events.h spw-utilities.h diff --git a/src/widgets/sp-widget.cpp b/src/widgets/sp-widget.cpp deleted file mode 100644 index 1e82d69ac..000000000 --- a/src/widgets/sp-widget.cpp +++ /dev/null @@ -1,322 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * Abstract base class for dynamic control widgets - * - * Authors: - * Lauris Kaplinski <lauris@kaplinski.com> - * bulia byak <buliabyak@users.sf.net> - * Jon A. Cruz <jon@joncruz.org> - * - * Copyright (C) 1999-2002 Lauris Kaplinski - * Copyright (C) 2000-2001 Ximian, Inc. - * Copyright (C) 2012 Authors - * - * Released under GNU GPL v2+, read the file 'COPYING' for more information. - */ - -#include "document.h" -#include "inkscape.h" -#include "sp-widget.h" -#include "helper/sp-marshal.h" - -using Inkscape::SPWidgetImpl; - -enum { - CONSTRUCT, - MODIFY_SELECTION, - CHANGE_SELECTION, - SET_SELECTION, - LAST_SIGNAL -}; - -namespace Inkscape { - -class SPWidgetImpl -{ -public: - SPWidgetImpl(SPWidget &target); - ~SPWidgetImpl(); - - static void dispose(GObject *object); - static void show(GtkWidget *widget); - static void hide(GtkWidget *widget); - - static void getPreferredWidth(GtkWidget *widget, - gint *minimal_width, - gint *natural_width); - - static void getPreferredHeight(GtkWidget *widget, - gint *minimal_height, - gint *natural_height); - static gboolean draw(GtkWidget *widget, cairo_t *cr); - - static void sizeAllocate(GtkWidget *widget, GtkAllocation *allocation); - static void modifySelectionCB(Selection *selection, guint flags, SPWidget *spw); - static void changeSelectionCB(Selection *selection, SPWidget *spw); - static void setSelectionCB(Selection *selection, SPWidget *spw); - - static GtkWidget *constructGlobal(SPWidget *spw); - - void modifySelection(Selection *selection, guint flags); - void changeSelection(Selection *selection); - void setSelection(Selection *selection); - -private: - SPWidget &_target; -}; -} // namespace Inkscape - -G_DEFINE_TYPE(SPWidget, sp_widget, GTK_TYPE_BIN); - -static guint signals[LAST_SIGNAL] = {0}; - -static void -sp_widget_class_init(SPWidgetClass *klass) -{ - GObjectClass *object_class = reinterpret_cast<GObjectClass *>(klass); - GtkWidgetClass *widget_class = reinterpret_cast<GtkWidgetClass *>(klass); - - object_class->dispose = SPWidgetImpl::dispose; - - signals[CONSTRUCT] = g_signal_new ("construct", - G_TYPE_FROM_CLASS(object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(SPWidgetClass, construct), - nullptr, nullptr, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - signals[CHANGE_SELECTION] = g_signal_new ("change_selection", - G_TYPE_FROM_CLASS(object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(SPWidgetClass, change_selection), - nullptr, nullptr, - g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, 1, - G_TYPE_POINTER); - - signals[MODIFY_SELECTION] = g_signal_new ("modify_selection", - G_TYPE_FROM_CLASS(object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(SPWidgetClass, modify_selection), - nullptr, nullptr, - sp_marshal_VOID__POINTER_UINT, - G_TYPE_NONE, 2, - G_TYPE_POINTER, G_TYPE_UINT); - - signals[SET_SELECTION] = g_signal_new ("set_selection", - G_TYPE_FROM_CLASS(object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET(SPWidgetClass, set_selection), - nullptr, nullptr, - g_cclosure_marshal_VOID__POINTER, - G_TYPE_NONE, 1, - G_TYPE_POINTER); - - widget_class->show = SPWidgetImpl::show; - widget_class->hide = SPWidgetImpl::hide; - widget_class->get_preferred_width = SPWidgetImpl::getPreferredWidth; - widget_class->get_preferred_height = SPWidgetImpl::getPreferredHeight; - widget_class->draw = SPWidgetImpl::draw; - widget_class->size_allocate = SPWidgetImpl::sizeAllocate; -} - -static void sp_widget_init(SPWidget *spw) -{ - spw->_impl = new SPWidgetImpl(*spw); // ctor invoked after all other init -} - -namespace Inkscape { - -SPWidgetImpl::SPWidgetImpl(SPWidget &target) : - _target(target) -{ -} - -SPWidgetImpl::~SPWidgetImpl() -= default; - -void SPWidgetImpl::dispose(GObject *object) -{ - SPWidget *spw = reinterpret_cast<SPWidget *>(object); - - // Disconnect signals - if (Application::exists()) { - spw->selModified.disconnect(); - spw->selChanged.disconnect(); - spw->selSet.disconnect(); - } - - delete spw->_impl; - spw->_impl = nullptr; - - if (G_OBJECT_CLASS(sp_widget_parent_class)->dispose) { - G_OBJECT_CLASS(sp_widget_parent_class)->dispose(object); - } -} - -void SPWidgetImpl::show(GtkWidget *widget) -{ - SPWidget *spw = SP_WIDGET(widget); - - if (Application::exists()) { - // Connect signals - spw->selModified = INKSCAPE.signal_selection_modified.connect( - sigc::bind( - sigc::ptr_fun(SPWidgetImpl::modifySelectionCB), spw) - ); - spw->selChanged = INKSCAPE.signal_selection_changed.connect( - sigc::bind( - sigc::ptr_fun(SPWidgetImpl::changeSelectionCB), spw) - ); - spw->selSet = INKSCAPE.signal_selection_set.connect( - sigc::bind( - sigc::ptr_fun(SPWidgetImpl::setSelectionCB), spw) - ); - } - - if (GTK_WIDGET_CLASS(sp_widget_parent_class)->show) { - GTK_WIDGET_CLASS(sp_widget_parent_class)->show(widget); - } -} - -void SPWidgetImpl::hide(GtkWidget *widget) -{ - SPWidget *spw = SP_WIDGET (widget); - - if (Application::exists()) { - // Disconnect signals - spw->selModified.disconnect(); - spw->selChanged.disconnect(); - spw->selSet.disconnect(); - } - - if (GTK_WIDGET_CLASS(sp_widget_parent_class)->hide) { - GTK_WIDGET_CLASS(sp_widget_parent_class)->hide(widget); - } -} - -gboolean SPWidgetImpl::draw(GtkWidget *widget, cairo_t *cr) -{ - GtkBin *bin = GTK_BIN(widget); - GtkWidget *child = gtk_bin_get_child(bin); - - if (child) { - gtk_container_propagate_draw(GTK_CONTAINER(widget), child, cr); - } - - return FALSE; -} - -void SPWidgetImpl::getPreferredWidth(GtkWidget *widget, gint *minimal_width, gint *natural_width) -{ - GtkBin *bin = GTK_BIN(widget); - GtkWidget *child = gtk_bin_get_child(bin); - - if(child) { - gtk_widget_get_preferred_width(child, minimal_width, natural_width); - } -} - -void SPWidgetImpl::getPreferredHeight(GtkWidget *widget, gint *minimal_height, gint *natural_height) -{ - GtkBin *bin = GTK_BIN(widget); - GtkWidget *child = gtk_bin_get_child(bin); - - if(child) { - gtk_widget_get_preferred_height(child, minimal_height, natural_height); - } -} - -void SPWidgetImpl::sizeAllocate(GtkWidget *widget, GtkAllocation *allocation) -{ - gtk_widget_set_allocation(widget, allocation); - - GtkBin *bin = GTK_BIN(widget); - GtkWidget *child = gtk_bin_get_child(bin); - - if (child) { - gtk_widget_size_allocate(child, allocation); - } -} - -GtkWidget *SPWidgetImpl::constructGlobal(SPWidget *spw) -{ - if (gtk_widget_get_visible(GTK_WIDGET(spw))) { - spw->selModified = INKSCAPE.signal_selection_modified.connect( - sigc::bind( - sigc::ptr_fun(SPWidgetImpl::modifySelectionCB), spw) - ); - spw->selChanged = INKSCAPE.signal_selection_changed.connect( - sigc::bind( - sigc::ptr_fun(SPWidgetImpl::changeSelectionCB), spw) - ); - spw->selSet = INKSCAPE.signal_selection_set.connect( - sigc::bind( - sigc::ptr_fun(SPWidgetImpl::setSelectionCB), spw) - ); - } - - g_signal_emit(spw, signals[CONSTRUCT], 0); - - return GTK_WIDGET(spw); -} - -void SPWidgetImpl::modifySelectionCB(Selection *selection, guint flags, SPWidget *spw) -{ - spw->_impl->modifySelection(selection, flags); -} - -void SPWidgetImpl::changeSelectionCB(Selection *selection, SPWidget *spw) -{ - spw->_impl->changeSelection(selection); -} - -void SPWidgetImpl::setSelectionCB(Selection *selection, SPWidget *spw) -{ - spw->_impl->setSelection(selection); -} - -void SPWidgetImpl::modifySelection(Selection *selection, guint flags) -{ - g_signal_emit(&_target, signals[MODIFY_SELECTION], 0, selection, flags); -} - -void SPWidgetImpl::changeSelection(Selection *selection) -{ - g_signal_emit(&_target, signals[CHANGE_SELECTION], 0, selection); -} - -void SPWidgetImpl::setSelection(Selection *selection) -{ - // Emit "set_selection" signal - g_signal_emit(&_target, signals[SET_SELECTION], 0, selection); - // Inkscape will force "change_selection" anyways -} - -} // namespace Inkscape - -// Methods - -GtkWidget *sp_widget_new_global() -{ - SPWidget *spw = reinterpret_cast<SPWidget*>(g_object_new(SP_TYPE_WIDGET, nullptr)); - - if (!SPWidgetImpl::constructGlobal(spw)) { - g_object_unref(spw); - spw = nullptr; - } - - return reinterpret_cast<GtkWidget *>(spw); -} - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/widgets/sp-widget.h b/src/widgets/sp-widget.h deleted file mode 100644 index 3c08a3a50..000000000 --- a/src/widgets/sp-widget.h +++ /dev/null @@ -1,74 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -#ifndef SEEN_SP_WIDGET_H -#define SEEN_SP_WIDGET_H - -/* - * Abstract base class for dynamic control widgets - * - * Authors: - * Lauris Kaplinski <lauris@kaplinski.com> - * Jon A. Cruz <jon@joncruz.org> - * - * Copyright (C) 1999-2002 Lauris Kaplinski - * Copyright (C) 2000-2001 Ximian, Inc. - * Copyright (C) 2012 Authors - * - * Released under GNU GPL v2+, read the file 'COPYING' for more information. - */ - -#include <gtk/gtk.h> -#include "inkscape.h" - -#define SP_TYPE_WIDGET (sp_widget_get_type()) -#define SP_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_WIDGET, SPWidget)) -#define SP_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_WIDGET, SPWidgetClass)) -#define SP_IS_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_WIDGET)) -#define SP_IS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_WIDGET)) - -namespace Inkscape { - -class Selection; -class SPWidgetImpl; -} - -struct SPWidget { - friend class Inkscape::SPWidgetImpl; - - static GType getType(); - - GtkBin bin; - - Inkscape::SPWidgetImpl *_impl; -private: - sigc::connection selModified; - sigc::connection selChanged; - sigc::connection selSet; -}; - -struct SPWidgetClass { - GtkBinClass bin_class; - - void (* construct) (SPWidget *spw); - - // Selection change handlers - void (* modify_selection) (SPWidget *spw, Inkscape::Selection *selection, guint flags); - void (* change_selection) (SPWidget *spw, Inkscape::Selection *selection); - void (* set_selection) (SPWidget *spw, Inkscape::Selection *selection); -}; - -GType sp_widget_get_type(); - -/** Generic constructor for global widget. */ -GtkWidget *sp_widget_new_global(); - -#endif // SEEN_SP_WIDGET_H -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 : diff --git a/src/widgets/spinbutton-events.cpp b/src/widgets/spinbutton-events.cpp index 1ed55f13f..9800cf5fb 100644 --- a/src/widgets/spinbutton-events.cpp +++ b/src/widgets/spinbutton-events.cpp @@ -17,7 +17,6 @@ #include "ui/tools/tool-base.h" -#include "sp-widget.h" #include "spinbutton-events.h" gboolean spinbutton_focus_in(GtkWidget *w, GdkEventKey * /*event*/, gpointer /*data*/) diff --git a/src/widgets/stroke-style.h b/src/widgets/stroke-style.h index aca20718b..7d06a5173 100644 --- a/src/widgets/stroke-style.h +++ b/src/widgets/stroke-style.h @@ -51,7 +51,6 @@ #include "ui/widget/spinbutton.h" #include "widgets/paint-selector.h" -#include "widgets/sp-widget.h" #include "widgets/spw-utilities.h" #include "widgets/stroke-marker-selector.h" diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index ffc829789..2dd1c57ef 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -186,57 +186,57 @@ static struct { gchar const *type_name; gchar const *data_name; GtkWidget *(*create_func)(SPDesktop *desktop); - void (*prep_func)(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder); + GtkWidget *(*prep_func)(SPDesktop *desktop, GtkActionGroup* mainActions); gchar const *ui_name; gint swatch_verb_id; gchar const *swatch_tool; gchar const *swatch_tip; } const aux_toolboxes[] = { - { "/tools/select", "select_toolbox", nullptr, sp_select_toolbox_prep, "SelectToolbar", + { "/tools/select", "select_toolbox", nullptr, Inkscape::UI::Toolbar::SelectToolbar::prep, "SelectToolbar", SP_VERB_INVALID, nullptr, nullptr}, - { "/tools/nodes", "node_toolbox", nullptr, sp_node_toolbox_prep, "NodeToolbar", + { "/tools/nodes", "node_toolbox", nullptr, Inkscape::UI::Toolbar::NodeToolbar::prep, "NodeToolbar", SP_VERB_INVALID, nullptr, nullptr}, - { "/tools/tweak", "tweak_toolbox", nullptr, sp_tweak_toolbox_prep, "TweakToolbar", + { "/tools/tweak", "tweak_toolbox", nullptr, Inkscape::UI::Toolbar::TweakToolbar::prep, "TweakToolbar", SP_VERB_CONTEXT_TWEAK_PREFS, "/tools/tweak", N_("Color/opacity used for color tweaking")}, - { "/tools/spray", "spray_toolbox", nullptr, sp_spray_toolbox_prep, "SprayToolbar", + { "/tools/spray", "spray_toolbox", nullptr, Inkscape::UI::Toolbar::SprayToolbar::prep, "SprayToolbar", SP_VERB_INVALID, nullptr, nullptr}, { "/tools/zoom", "zoom_toolbox", Inkscape::UI::Toolbar::ZoomToolbar::create, nullptr, "ZoomToolbar", SP_VERB_INVALID, nullptr, nullptr}, - { "/tools/measure", "measure_toolbox", nullptr, sp_measure_toolbox_prep, "MeasureToolbar", + { "/tools/measure", "measure_toolbox", nullptr, Inkscape::UI::Toolbar::MeasureToolbar::prep, "MeasureToolbar", SP_VERB_INVALID, nullptr, nullptr}, - { "/tools/shapes/star", "star_toolbox", nullptr, sp_star_toolbox_prep, "StarToolbar", + { "/tools/shapes/star", "star_toolbox", nullptr, Inkscape::UI::Toolbar::StarToolbar::prep, "StarToolbar", SP_VERB_CONTEXT_STAR_PREFS, "/tools/shapes/star", N_("Style of new stars")}, - { "/tools/shapes/rect", "rect_toolbox", nullptr, sp_rect_toolbox_prep, "RectToolbar", + { "/tools/shapes/rect", "rect_toolbox", nullptr, Inkscape::UI::Toolbar::RectToolbar::prep, "RectToolbar", SP_VERB_CONTEXT_RECT_PREFS, "/tools/shapes/rect", N_("Style of new rectangles")}, - { "/tools/shapes/3dbox", "3dbox_toolbox", nullptr, box3d_toolbox_prep, "3DBoxToolbar", + { "/tools/shapes/3dbox", "3dbox_toolbox", nullptr, Inkscape::UI::Toolbar::Box3DToolbar::prep, "3DBoxToolbar", SP_VERB_CONTEXT_3DBOX_PREFS, "/tools/shapes/3dbox", N_("Style of new 3D boxes")}, - { "/tools/shapes/arc", "arc_toolbox", nullptr, sp_arc_toolbox_prep, "ArcToolbar", + { "/tools/shapes/arc", "arc_toolbox", nullptr, Inkscape::UI::Toolbar::ArcToolbar::prep, "ArcToolbar", SP_VERB_CONTEXT_ARC_PREFS, "/tools/shapes/arc", N_("Style of new ellipses")}, - { "/tools/shapes/spiral", "spiral_toolbox", nullptr, sp_spiral_toolbox_prep, "SpiralToolbar", + { "/tools/shapes/spiral", "spiral_toolbox", nullptr, Inkscape::UI::Toolbar::SpiralToolbar::prep, "SpiralToolbar", SP_VERB_CONTEXT_SPIRAL_PREFS, "/tools/shapes/spiral", N_("Style of new spirals")}, - { "/tools/freehand/pencil", "pencil_toolbox", nullptr, sp_pencil_toolbox_prep, "PencilToolbar", + { "/tools/freehand/pencil", "pencil_toolbox", nullptr, Inkscape::UI::Toolbar::PencilToolbar::prep_pencil, "PencilToolbar", SP_VERB_CONTEXT_PENCIL_PREFS, "/tools/freehand/pencil", N_("Style of new paths created by Pencil")}, - { "/tools/freehand/pen", "pen_toolbox", nullptr, sp_pen_toolbox_prep, "PenToolbar", + { "/tools/freehand/pen", "pen_toolbox", nullptr, Inkscape::UI::Toolbar::PencilToolbar::prep_pen, "PenToolbar", SP_VERB_CONTEXT_PEN_PREFS, "/tools/freehand/pen", N_("Style of new paths created by Pen")}, - { "/tools/calligraphic", "calligraphy_toolbox", nullptr, sp_calligraphy_toolbox_prep,"CalligraphyToolbar", + { "/tools/calligraphic", "calligraphy_toolbox", nullptr, Inkscape::UI::Toolbar::CalligraphyToolbar::prep,"CalligraphyToolbar", SP_VERB_CONTEXT_CALLIGRAPHIC_PREFS, "/tools/calligraphic", N_("Style of new calligraphic strokes")}, - { "/tools/eraser", "eraser_toolbox", nullptr, sp_eraser_toolbox_prep,"EraserToolbar", + { "/tools/eraser", "eraser_toolbox", nullptr, Inkscape::UI::Toolbar::EraserToolbar::prep,"EraserToolbar", SP_VERB_CONTEXT_ERASER_PREFS, "/tools/eraser", _("TBD")}, - { "/tools/lpetool", "lpetool_toolbox", nullptr, sp_lpetool_toolbox_prep, "LPEToolToolbar", + { "/tools/lpetool", "lpetool_toolbox", nullptr, Inkscape::UI::Toolbar::LPEToolbar::prep, "LPEToolToolbar", SP_VERB_CONTEXT_LPETOOL_PREFS, "/tools/lpetool", _("TBD")}, // If you change TextToolbar here, change it also in desktop-widget.cpp - { "/tools/text", "text_toolbox", nullptr, sp_text_toolbox_prep, "TextToolbar", + { "/tools/text", "text_toolbox", nullptr, Inkscape::UI::Toolbar::TextToolbar::prep, "TextToolbar", SP_VERB_INVALID, nullptr, nullptr}, { "/tools/dropper", "dropper_toolbox", Inkscape::UI::Toolbar::DropperToolbar::create, nullptr, "DropperToolbar", SP_VERB_INVALID, nullptr, nullptr}, - { "/tools/connector", "connector_toolbox", nullptr, sp_connector_toolbox_prep, "ConnectorToolbar", + { "/tools/connector", "connector_toolbox", nullptr, Inkscape::UI::Toolbar::ConnectorToolbar::prep, "ConnectorToolbar", SP_VERB_INVALID, nullptr, nullptr}, - { "/tools/gradient", "gradient_toolbox", nullptr, sp_gradient_toolbox_prep, "GradientToolbar", + { "/tools/gradient", "gradient_toolbox", nullptr, Inkscape::UI::Toolbar::GradientToolbar::prep, "GradientToolbar", SP_VERB_INVALID, nullptr, nullptr}, - { "/tools/mesh", "mesh_toolbox", nullptr, sp_mesh_toolbox_prep, "MeshToolbar", + { "/tools/mesh", "mesh_toolbox", nullptr, Inkscape::UI::Toolbar::MeshToolbar::prep, "MeshToolbar", SP_VERB_INVALID, nullptr, nullptr}, #if HAVE_POTRACE - { "/tools/paintbucket", "paintbucket_toolbox", nullptr, sp_paintbucket_toolbox_prep, "PaintbucketToolbar", + { "/tools/paintbucket", "paintbucket_toolbox", nullptr, Inkscape::UI::Toolbar::PaintbucketToolbar::prep, "PaintbucketToolbar", SP_VERB_CONTEXT_PAINTBUCKET_PREFS, "/tools/paintbucket", N_("Style of Paint Bucket fill objects")}, #else { "/tools/paintbucket", "paintbucket_toolbox", 0, NULL, "PaintbucketToolbar", SP_VERB_NONE, "/tools/paintbucket", N_("Disabled")}, @@ -401,7 +401,7 @@ void purge_repr_listener( GObject* /*obj*/, GObject* tbl ) } } -PrefPusher::PrefPusher( GtkToggleAction *act, Glib::ustring const &path, void (*callback)(GObject*), GObject *cbData ) : +PrefPusher::PrefPusher( GtkToggleAction *act, Glib::ustring const &path, void (*callback)(gpointer), gpointer cbData ) : Observer(path), act(act), callback(callback), @@ -714,7 +714,7 @@ EgeAdjustmentAction * create_adjustment_action( gchar const *name, gchar const *label, gchar const *shortLabel, gchar const *tooltip, Glib::ustring const &path, gdouble def, GtkWidget *focusTarget, - GObject *dataKludge, + GObject * /* dataKludge */, gboolean altx, gchar const *altx_mark, gdouble lower, gdouble upper, gdouble step, gdouble page, gchar const** descrLabels, gdouble const* descrValues, guint descrCount, @@ -732,7 +732,7 @@ EgeAdjustmentAction * create_adjustment_action( gchar const *name, GtkAdjustment* adj = GTK_ADJUSTMENT( gtk_adjustment_new( prefs->getDouble(path, def) * factor, lower, upper, step, page, 0 ) ); - g_signal_connect( G_OBJECT(adj), "value-changed", G_CALLBACK(callback), dataKludge ); +// g_signal_connect( G_OBJECT(adj), "value-changed", G_CALLBACK(callback), dataKludge ); EgeAdjustmentAction* act = ege_adjustment_action_new( adj, name, label, tooltip, nullptr, climb, digits, unit_tracker ); if ( shortLabel ) { @@ -751,11 +751,14 @@ EgeAdjustmentAction * create_adjustment_action( gchar const *name, g_object_set( G_OBJECT(act), "self-id", altx_mark, NULL ); } + /* + * TODO: Is this ever used? if ( dataKludge ) { // Rather lame, but it's the only place where we need to get the entry name // but we don't have an Entry g_object_set_data( dataKludge, prefs->getEntry(path).getEntryName().data(), adj ); } + */ if (unit_tracker) { unit_tracker->addAdjustment(adj); @@ -1027,12 +1030,11 @@ void setup_aux_toolbox(GtkWidget *toolbox, SPDesktop *desktop) // that only contains a set of GtkActions. In other // words, this doesn't actually show anything... it // just defines behaviour. - GtkWidget* kludge = gtk_toolbar_new(); + GtkWidget* kludge = aux_toolboxes[i].prep_func(desktop, mainActions->gobj()); gtk_widget_set_name( kludge, "Kludge" ); - g_object_set_data( G_OBJECT(kludge), "dtw", desktop->canvas); - g_object_set_data( G_OBJECT(kludge), "desktop", desktop); + // g_object_set_data( G_OBJECT(kludge), "dtw", desktop->canvas); + // g_object_set_data( G_OBJECT(kludge), "desktop", desktop); dataHolders[aux_toolboxes[i].type_name] = kludge; - aux_toolboxes[i].prep_func( desktop, mainActions->gobj(), G_OBJECT(kludge) ); } else { // For the "create" method, directly create a "real" toolbar, diff --git a/src/widgets/toolbox.h b/src/widgets/toolbox.h index 4a61a7892..2236a7ab1 100644 --- a/src/widgets/toolbox.h +++ b/src/widgets/toolbox.h @@ -84,7 +84,10 @@ public: * @param callback function to invoke when changes are pushed. * @param cbData data to be passed on to the callback function. */ - PrefPusher( GtkToggleAction *act, Glib::ustring const &path, void (*callback)(GObject*) = nullptr, GObject *cbData = nullptr ); + PrefPusher( GtkToggleAction *act, + Glib::ustring const & path, + void (*callback)(gpointer) = nullptr, + gpointer cbData = nullptr ); /** * Destructor that unregisters the preference callback. @@ -112,8 +115,8 @@ private: void handleToggled(); GtkToggleAction *act; - void (*callback)(GObject*); - GObject *cbData; + void (*callback)(gpointer); + gpointer cbData; bool freeze; }; |
