summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorLiam P. White <inkscapebrony@gmail.com>2014-06-27 19:23:06 +0000
committerLiam P. White <inkscapebrony@gmail.com>2014-06-27 19:23:06 +0000
commit45f373f3319b598d8e0222fb48e9d3a4760b2044 (patch)
tree846a9ec382567267b09e63c3dde2e1f20cbbffb5 /src/widgets
parentMove constructor/destructor into private section, remove protected section. R... (diff)
downloadinkscape-45f373f3319b598d8e0222fb48e9d3a4760b2044.tar.gz
inkscape-45f373f3319b598d8e0222fb48e9d3a4760b2044.zip
5. Refactoring of Application class: make copy/assignment operators private, disallow pointers to Application
(bzr r13341.5.9)
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/box3d-toolbar.cpp2
-rw-r--r--src/widgets/desktop-widget.cpp8
-rw-r--r--src/widgets/gradient-vector.cpp11
-rw-r--r--src/widgets/select-toolbar.cpp2
-rw-r--r--src/widgets/sp-widget.cpp110
-rw-r--r--src/widgets/sp-widget.h7
-rw-r--r--src/widgets/stroke-marker-selector.cpp2
7 files changed, 60 insertions, 82 deletions
diff --git a/src/widgets/box3d-toolbar.cpp b/src/widgets/box3d-toolbar.cpp
index ecc7890b9..532eecb0f 100644
--- a/src/widgets/box3d-toolbar.cpp
+++ b/src/widgets/box3d-toolbar.cpp
@@ -254,7 +254,7 @@ static void box3d_angle_z_value_changed(GtkAdjustment *adj, GObject *dataKludge)
static void box3d_vp_state_changed( GtkToggleAction *act, GtkAction * /*box3d_angle*/, Proj::Axis axis )
{
// TODO: Take all selected perspectives into account
- std::list<Persp3D *> sel_persps = sp_desktop_selection(inkscape_active_desktop())->perspList();
+ std::list<Persp3D *> sel_persps = sp_desktop_selection(INKSCAPE.active_desktop())->perspList();
if (sel_persps.empty()) {
// this can happen when the document is created; we silently ignore it
return;
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 8822416a7..09b5d24a9 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -795,7 +795,7 @@ static void sp_desktop_widget_dispose(GObject *object)
dtw->layer_selector->setDesktop(NULL);
dtw->layer_selector->unreference();
- INKSCAPE->remove_desktop (dtw->desktop); // clears selection too
+ INKSCAPE.remove_desktop (dtw->desktop); // clears selection too
dtw->modified_connection.disconnect();
dtw->desktop->destroy();
Inkscape::GC::release (dtw->desktop);
@@ -1091,7 +1091,7 @@ SPDesktopWidget::shutdown()
{
g_assert(desktop != NULL);
- if (INKSCAPE->sole_desktop_for_document(*desktop)) {
+ if (INKSCAPE.sole_desktop_for_document(*desktop)) {
SPDocument *doc = desktop->doc();
if (doc->isModifiedSinceSave()) {
GtkWidget *dialog;
@@ -1672,7 +1672,7 @@ SPDesktopWidget* SPDesktopWidget::createInstance(SPNamedView *namedview)
dtw->desktop = new SPDesktop();
dtw->stub = new SPDesktopWidget::WidgetStub (dtw);
dtw->desktop->init (namedview, dtw->canvas, dtw->stub);
- INKSCAPE->add_desktop (dtw->desktop);
+ INKSCAPE.add_desktop (dtw->desktop);
// Add the shape geometry to libavoid for autorouting connectors.
// This needs desktop set for its spacing preferences.
@@ -1818,7 +1818,7 @@ bool SPDesktopWidget::onFocusInEvent(GdkEventFocus*)
}
}
- INKSCAPE->activate_desktop (desktop);
+ INKSCAPE.activate_desktop (desktop);
return false;
}
diff --git a/src/widgets/gradient-vector.cpp b/src/widgets/gradient-vector.cpp
index 9c27da1f8..62a6599f2 100644
--- a/src/widgets/gradient-vector.cpp
+++ b/src/widgets/gradient-vector.cpp
@@ -1033,18 +1033,18 @@ GtkWidget * sp_gradient_vector_editor_new(SPGradient *gradient, SPStop *stop)
wd.win = dlg;
wd.stop = 0;
- INKSCAPE->signal_activate_desktop.connect(sigc::bind<0>(sigc::bind(sigc::ptr_fun(&sp_transientize_callback), &wd), INKSCAPE));
+ INKSCAPE.signal_activate_desktop.connect(sigc::bind(sigc::ptr_fun(&sp_transientize_callback), &wd));
g_signal_connect(G_OBJECT(dlg), "event", G_CALLBACK(sp_dialog_event_handler), dlg);
g_signal_connect(G_OBJECT(dlg), "destroy", G_CALLBACK(sp_gradient_vector_dialog_destroy), dlg);
g_signal_connect(G_OBJECT(dlg), "delete_event", G_CALLBACK(sp_gradient_vector_dialog_delete), dlg);
- INKSCAPE->signal_shut_down.connect(
+ INKSCAPE.signal_shut_down.connect(
sigc::hide_return(
sigc::bind(sigc::ptr_fun(&sp_gradient_vector_dialog_delete), (GtkWidget *) NULL, (GdkEvent *) NULL, (GtkWidget *) NULL)
));
- INKSCAPE->signal_dialogs_hide.connect(sigc::bind(sigc::ptr_fun(&gtk_widget_hide), dlg));
- INKSCAPE->signal_dialogs_unhide.connect(sigc::bind(sigc::ptr_fun(&gtk_widget_show), dlg));
+ INKSCAPE.signal_dialogs_hide.connect(sigc::bind(sigc::ptr_fun(&gtk_widget_hide), dlg));
+ INKSCAPE.signal_dialogs_unhide.connect(sigc::bind(sigc::ptr_fun(&gtk_widget_show), dlg));
gtk_container_set_border_width(GTK_CONTAINER(dlg), PAD);
@@ -1161,13 +1161,14 @@ static void sp_gradient_vector_widget_load_gradient(GtkWidget *widget, SPGradien
blocked = FALSE;
}
+// \FIXME this
#if GTK_CHECK_VERSION(3,0,0)
static void sp_gradient_vector_dialog_destroy(GtkWidget * /*object*/, gpointer /*data*/)
#else
static void sp_gradient_vector_dialog_destroy(GtkObject * /*object*/, gpointer /*data*/)
#endif
{
- sp_signal_disconnect_by_data(INKSCAPE, dlg);
+ //sp_signal_disconnect_by_data(INKSCAPE, dlg);
wd.win = dlg = NULL;
wd.stop = 0;
}
diff --git a/src/widgets/select-toolbar.cpp b/src/widgets/select-toolbar.cpp
index 284e436bf..db93c1552 100644
--- a/src/widgets/select-toolbar.cpp
+++ b/src/widgets/select-toolbar.cpp
@@ -468,7 +468,7 @@ void sp_select_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GOb
contextActions->push_back( act );
// Create the parent widget for x y w h tracker.
- GtkWidget *spw = sp_widget_new_global(INKSCAPE);
+ GtkWidget *spw = sp_widget_new_global();
// Remember the desktop's canvas widget, to be used for defocusing.
g_object_set_data(G_OBJECT(spw), "dtw", sp_desktop_canvas(desktop));
diff --git a/src/widgets/sp-widget.cpp b/src/widgets/sp-widget.cpp
index 08344d9b2..8feb5b994 100644
--- a/src/widgets/sp-widget.cpp
+++ b/src/widgets/sp-widget.cpp
@@ -58,15 +58,15 @@ public:
#endif
static void sizeAllocate(GtkWidget *widget, GtkAllocation *allocation);
- static void modifySelectionCB(Application *inkscape, Selection *selection, guint flags, SPWidget *spw);
- static void changeSelectionCB(Application *inkscape, Selection *selection, SPWidget *spw);
- static void setSelectionCB(Application *inkscape, Selection *selection, SPWidget *spw);
+ 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, Inkscape::Application *inkscape);
+ static GtkWidget *constructGlobal(SPWidget *spw);
- void modifySelection(Application *inkscape, Selection *selection, guint flags);
- void changeSelection(Application *inkscape, Selection *selection);
- void setSelection(Application *inkscape, Selection *selection);
+ void modifySelection(Selection *selection, guint flags);
+ void changeSelection(Selection *selection);
+ void setSelection(Selection *selection);
private:
static GtkBinClass *parentClass;
@@ -172,8 +172,6 @@ void SPWidgetImpl::classInit(SPWidgetClass *klass)
void SPWidgetImpl::init(SPWidget *spw)
{
- spw->inkscape = NULL;
-
spw->_impl = new SPWidgetImpl(*spw); // ctor invoked after all other init
}
@@ -181,21 +179,12 @@ void SPWidgetImpl::dispose(GObject *object)
{
SPWidget *spw = reinterpret_cast<SPWidget *>(object);
- if (spw->inkscape) {
- // Disconnect signals
-
- // the checks are necessary because when destroy is caused by the program shutting down,
- // the inkscape object may already be (partly?) invalid --bb
- if (dynamic_cast<Inkscape::Application *>(spw->inkscape)) {
- spw->selModified.disconnect();
- spw->selChanged.disconnect();
- spw->selSet.disconnect();
- }
- //if (G_IS_OBJECT(spw->inkscape) && G_OBJECT_GET_CLASS(spw->inkscape)) {
- //sp_signal_disconnect_by_data(spw->inkscape, spw);
- //}
- spw->inkscape = NULL;
- }
+ // Disconnect signals
+ if (Application::exists()) {
+ spw->selModified.disconnect();
+ spw->selChanged.disconnect();
+ spw->selSet.disconnect();
+ }
delete spw->_impl;
spw->_impl = 0;
@@ -209,23 +198,20 @@ void SPWidgetImpl::show(GtkWidget *widget)
{
SPWidget *spw = SP_WIDGET(widget);
- if (spw->inkscape) {
+ if (Application::exists()) {
// Connect signals
- spw->selModified = spw->inkscape->signal_selection_modified.connect(
- sigc::bind<0>(
+ spw->selModified = INKSCAPE.signal_selection_modified.connect(
sigc::bind(
- sigc::ptr_fun(SPWidgetImpl::modifySelectionCB), spw), spw->inkscape
- ));
- spw->selChanged = spw->inkscape->signal_selection_changed.connect(
- sigc::bind<0>(
+ sigc::ptr_fun(SPWidgetImpl::modifySelectionCB), spw)
+ );
+ spw->selChanged = INKSCAPE.signal_selection_changed.connect(
sigc::bind(
- sigc::ptr_fun(SPWidgetImpl::changeSelectionCB), spw), spw->inkscape
- ));
- spw->selSet = spw->inkscape->signal_selection_set.connect(
- sigc::bind<0>(
+ sigc::ptr_fun(SPWidgetImpl::changeSelectionCB), spw)
+ );
+ spw->selSet = INKSCAPE.signal_selection_set.connect(
sigc::bind(
- sigc::ptr_fun(SPWidgetImpl::setSelectionCB), spw), spw->inkscape
- ));
+ sigc::ptr_fun(SPWidgetImpl::setSelectionCB), spw)
+ );
}
if (reinterpret_cast<GtkWidgetClass *>(parentClass)->show) {
@@ -237,7 +223,7 @@ void SPWidgetImpl::hide(GtkWidget *widget)
{
SPWidget *spw = SP_WIDGET (widget);
- if (spw->inkscape) {
+ if (Application::exists()) {
// Disconnect signals
spw->selModified.disconnect();
spw->selChanged.disconnect();
@@ -313,27 +299,21 @@ void SPWidgetImpl::sizeAllocate(GtkWidget *widget, GtkAllocation *allocation)
}
}
-GtkWidget *SPWidgetImpl::constructGlobal(SPWidget *spw, Inkscape::Application *inkscape)
+GtkWidget *SPWidgetImpl::constructGlobal(SPWidget *spw)
{
- g_return_val_if_fail(!spw->inkscape, NULL);
-
- spw->inkscape = inkscape;
if (gtk_widget_get_visible(GTK_WIDGET(spw))) {
- spw->selModified = spw->inkscape->signal_selection_modified.connect(
- sigc::bind<0>(
+ spw->selModified = INKSCAPE.signal_selection_modified.connect(
sigc::bind(
- sigc::ptr_fun(SPWidgetImpl::modifySelectionCB), spw), spw->inkscape
- ));
- spw->selChanged = spw->inkscape->signal_selection_changed.connect(
- sigc::bind<0>(
+ sigc::ptr_fun(SPWidgetImpl::modifySelectionCB), spw)
+ );
+ spw->selChanged = INKSCAPE.signal_selection_changed.connect(
sigc::bind(
- sigc::ptr_fun(SPWidgetImpl::changeSelectionCB), spw), spw->inkscape
- ));
- spw->selSet = spw->inkscape->signal_selection_set.connect(
- sigc::bind<0>(
+ sigc::ptr_fun(SPWidgetImpl::changeSelectionCB), spw)
+ );
+ spw->selSet = INKSCAPE.signal_selection_set.connect(
sigc::bind(
- sigc::ptr_fun(SPWidgetImpl::setSelectionCB), spw), spw->inkscape
- ));
+ sigc::ptr_fun(SPWidgetImpl::setSelectionCB), spw)
+ );
}
g_signal_emit(spw, signals[CONSTRUCT], 0);
@@ -341,32 +321,32 @@ GtkWidget *SPWidgetImpl::constructGlobal(SPWidget *spw, Inkscape::Application *i
return GTK_WIDGET(spw);
}
-void SPWidgetImpl::modifySelectionCB(Application *inkscape, Selection *selection, guint flags, SPWidget *spw)
+void SPWidgetImpl::modifySelectionCB(Selection *selection, guint flags, SPWidget *spw)
{
- spw->_impl->modifySelection(inkscape, selection, flags);
+ spw->_impl->modifySelection(selection, flags);
}
-void SPWidgetImpl::changeSelectionCB(Application *inkscape, Selection *selection, SPWidget *spw)
+void SPWidgetImpl::changeSelectionCB(Selection *selection, SPWidget *spw)
{
- spw->_impl->changeSelection(inkscape, selection);
+ spw->_impl->changeSelection(selection);
}
-void SPWidgetImpl::setSelectionCB(Application *inkscape, Selection *selection, SPWidget *spw)
+void SPWidgetImpl::setSelectionCB(Selection *selection, SPWidget *spw)
{
- spw->_impl->setSelection(inkscape, selection);
+ spw->_impl->setSelection(selection);
}
-void SPWidgetImpl::modifySelection(Application * /*inkscape*/, Selection *selection, guint flags)
+void SPWidgetImpl::modifySelection(Selection *selection, guint flags)
{
g_signal_emit(&_target, signals[MODIFY_SELECTION], 0, selection, flags);
}
-void SPWidgetImpl::changeSelection(Application * /*inkscape*/, Selection *selection)
+void SPWidgetImpl::changeSelection(Selection *selection)
{
g_signal_emit(&_target, signals[CHANGE_SELECTION], 0, selection);
}
-void SPWidgetImpl::setSelection(Application * /*inkscape*/, Selection *selection)
+void SPWidgetImpl::setSelection(Selection *selection)
{
// Emit "set_selection" signal
g_signal_emit(&_target, signals[SET_SELECTION], 0, selection);
@@ -377,11 +357,11 @@ void SPWidgetImpl::setSelection(Application * /*inkscape*/, Selection *selection
// Methods
-GtkWidget *sp_widget_new_global(Inkscape::Application *inkscape)
+GtkWidget *sp_widget_new_global()
{
SPWidget *spw = reinterpret_cast<SPWidget*>(g_object_new(SP_TYPE_WIDGET, NULL));
- if (!SPWidgetImpl::constructGlobal(spw, inkscape)) {
+ if (!SPWidgetImpl::constructGlobal(spw)) {
g_object_unref(spw);
spw = 0;
}
diff --git a/src/widgets/sp-widget.h b/src/widgets/sp-widget.h
index 469ab2d92..b4696e66e 100644
--- a/src/widgets/sp-widget.h
+++ b/src/widgets/sp-widget.h
@@ -17,6 +17,7 @@
#include <glib.h>
#include <gtk/gtk.h>
+#include "inkscape.h"
#define SP_TYPE_WIDGET (SPWidget::getType())
#define SP_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_WIDGET, SPWidget))
@@ -27,7 +28,6 @@
namespace Inkscape {
-struct Application;
class Selection;
class SPWidgetImpl;
@@ -38,10 +38,7 @@ struct SPWidget {
static GType getType();
- //
-
GtkBin bin;
- Inkscape::Application *inkscape;
sigc::connection selModified;
sigc::connection selChanged;
@@ -64,7 +61,7 @@ struct SPWidgetClass {
/* fixme: Think (Lauris) */
/** Generic constructor for global widget. */
-GtkWidget *sp_widget_new_global(Inkscape::Application *inkscape);
+GtkWidget *sp_widget_new_global();
#endif // SEEN_SP_WIDGET_H
/*
diff --git a/src/widgets/stroke-marker-selector.cpp b/src/widgets/stroke-marker-selector.cpp
index 00b6b5c91..b5867abaa 100644
--- a/src/widgets/stroke-marker-selector.cpp
+++ b/src/widgets/stroke-marker-selector.cpp
@@ -64,7 +64,7 @@ MarkerComboBox::MarkerComboBox(gchar const *id, int l) :
sp_pixbuf_new( Inkscape::ICON_SIZE_SMALL_TOOLBAR, INKSCAPE_ICON("no-marker") ) ) );
sandbox = ink_markers_preview_doc ();
- desktop = inkscape_active_desktop();
+ desktop = INKSCAPE.active_desktop();
doc = sp_desktop_document(desktop);
modified_connection = doc->getDefs()->connectModified( sigc::hide(sigc::hide(sigc::bind(sigc::ptr_fun(&MarkerComboBox::handleDefsModified), this))) );