diff options
| author | MenTaLguY <mental@rydia.net> | 2006-07-29 20:21:27 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2006-07-29 20:21:27 +0000 |
| commit | 116d1fa9472808c1c3b9fc2ecdd3cb1414f6d87b (patch) | |
| tree | 2f51d831d1d7706330b37fe794c7737d96371117 /src/widgets/desktop-widget.cpp | |
| parent | switch to sigc++ SPObject signals for SPGradientImage (diff) | |
| download | inkscape-116d1fa9472808c1c3b9fc2ecdd3cb1414f6d87b.tar.gz inkscape-116d1fa9472808c1c3b9fc2ecdd3cb1414f6d87b.zip | |
switch to sigc++ SPObject signals for desktop widget
(bzr r1506)
Diffstat (limited to 'src/widgets/desktop-widget.cpp')
| -rw-r--r-- | src/widgets/desktop-widget.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 0a4536bb1..9590af94c 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -77,7 +77,7 @@ static gint sp_desktop_widget_event (GtkWidget *widget, GdkEvent *event, SPDeskt static void sp_desktop_widget_adjustment_value_changed (GtkAdjustment *adj, SPDesktopWidget *dtw); -static void sp_desktop_widget_namedview_modified (SPNamedView *nv, guint flags, SPDesktopWidget *dtw); +static void sp_desktop_widget_namedview_modified (SPObject *obj, guint flags, SPDesktopWidget *dtw); static gdouble sp_dtw_zoom_value_to_display (gdouble value); static gdouble sp_dtw_zoom_display_to_value (gdouble value); @@ -163,6 +163,8 @@ sp_desktop_widget_init (SPDesktopWidget *dtw) GtkWidget *eventbox; GtkStyle *style; + new (&dtw->modified_connection) sigc::connection(); + widget = GTK_WIDGET (dtw); dtw->window = 0; @@ -344,12 +346,14 @@ sp_desktop_widget_destroy (GtkObject *object) if (dtw->desktop) { dtw->layer_selector->unreference(); inkscape_remove_desktop (dtw->desktop); // clears selection too - sp_signal_disconnect_by_data (G_OBJECT (dtw->desktop->namedview), dtw); + dtw->modified_connection.disconnect(); dtw->desktop->destroy(); Inkscape::GC::release (dtw->desktop); dtw->desktop = NULL; } + dtw->modified_connection.~connection(); + if (GTK_OBJECT_CLASS (dtw_parent_class)->destroy) { (* GTK_OBJECT_CLASS (dtw_parent_class)->destroy) (object); } @@ -449,7 +453,10 @@ sp_desktop_widget_realize (GtkWidget *widget) dtw->desktop->set_display_area (d.x0, d.y0, d.x1, d.y1, 10); /* Listen on namedview modification */ - g_signal_connect (G_OBJECT (dtw->desktop->namedview), "modified", G_CALLBACK (sp_desktop_widget_namedview_modified), dtw); + // originally (prior to the sigc++ conversion) the signal was simply + // connected twice rather than disconnecting the first connection + dtw->modified_connection.disconnect(); + dtw->modified_connection = dtw->desktop->namedview->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_desktop_widget_namedview_modified), dtw)); sp_desktop_widget_namedview_modified (dtw->desktop->namedview, SP_OBJECT_MODIFIED_FLAG, dtw); dtw->updateTitle(SP_DOCUMENT_NAME (dtw->desktop->doc())); @@ -897,7 +904,7 @@ sp_desktop_widget_new (SPNamedView *namedview) sp_view_widget_set_view (SP_VIEW_WIDGET (dtw), dtw->desktop); /* Listen on namedview modification */ - g_signal_connect (G_OBJECT (namedview), "modified", G_CALLBACK (sp_desktop_widget_namedview_modified), dtw); + dtw->modified_connection = namedview->connectModified(sigc::bind<2>(sigc::ptr_fun(&sp_desktop_widget_namedview_modified), dtw)); dtw->layer_selector->setDesktop(dtw->desktop); @@ -941,8 +948,9 @@ sp_desktop_widget_update_rulers (SPDesktopWidget *dtw) static void -sp_desktop_widget_namedview_modified (SPNamedView *nv, guint flags, SPDesktopWidget *dtw) +sp_desktop_widget_namedview_modified (SPObject *obj, guint flags, SPDesktopWidget *dtw) { + SPNamedView *nv=SP_NAMEDVIEW(obj); if (flags & SP_OBJECT_MODIFIED_FLAG) { dtw->dt2r = 1.0 / nv->doc_units->unittobase; dtw->ruler_origin = nv->gridorigin; |
