summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMaximilian Albert <maximilian.albert@gmail.com>2008-02-03 16:04:33 +0000
committercilix42 <cilix42@users.sourceforge.net>2008-02-03 16:04:33 +0000
commitbc75860245b32e4a3bbe25c848d9f1a7613d4dac (patch)
tree58424eb0c41b29d505e1b31a698c6e66dec58414 /src
parentMake units pc (pica) and ft (feet) work correctly. Closes: LP #167943. (diff)
downloadinkscape-bc75860245b32e4a3bbe25c848d9f1a7613d4dac.tar.gz
inkscape-bc75860245b32e4a3bbe25c848d9f1a7613d4dac.zip
Fix missing ruler and document title updates when a file is opened in an existing window
(bzr r4640)
Diffstat (limited to 'src')
-rw-r--r--src/desktop.cpp10
-rw-r--r--src/desktop.h2
-rw-r--r--src/widgets/desktop-widget.cpp9
-rw-r--r--src/widgets/desktop-widget.h2
4 files changed, 21 insertions, 2 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 8cd63a68c..d2547f5a6 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -85,6 +85,7 @@
#include "layer-manager.h"
#include "event-log.h"
#include "display/canvas-grid.h"
+#include "widgets/desktop-widget.h"
#include "display/sp-canvas.h"
@@ -501,6 +502,15 @@ SPDesktop::change_document (SPDocument *theDocument)
selection->clear();
setDocument (theDocument);
+
+ /* update the rulers, connect the desktop widget's signal to the new namedview etc.
+ (this can probably be done in a better way) */
+ Gtk::Window *parent = this->getToplevel();
+ g_assert(parent != NULL);
+ SPDesktopWidget *dtw = (SPDesktopWidget *) parent->get_data("desktopwidget");
+ if (dtw) dtw->desktop = this;
+ sp_desktop_widget_update_namedview(dtw);
+
_namedview_modified (namedview, SP_OBJECT_MODIFIED_FLAG, this);
_document_replaced_signal.emit (this, theDocument);
}
diff --git a/src/desktop.h b/src/desktop.h
index 0a3732d56..84b829726 100644
--- a/src/desktop.h
+++ b/src/desktop.h
@@ -42,13 +42,11 @@ typedef struct _GtkWidget GtkWidget;
struct SPCanvas;
struct SPCanvasItem;
struct SPCanvasGroup;
-struct SPDesktopWidget;
struct SPEventContext;
struct SPItem;
struct SPNamedView;
struct SPObject;
struct SPStyle;
-struct SPViewWidget;
namespace Gtk
{
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 146717fc2..f4d87f084 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -701,6 +701,15 @@ sp_desktop_widget_realize (GtkWidget *widget)
dtw->desktop->set_display_area (d.x0, d.y0, d.x1, d.y1, 10);
+ sp_desktop_widget_update_namedview(dtw);
+}
+
+/* This is just to provide access to common functionality from sp_desktop_widget_realize() above
+ as well as from SPDesktop::change_document() */
+void
+sp_desktop_widget_update_namedview (SPDesktopWidget *dtw) {
+ g_return_if_fail(dtw);
+
/* Listen on namedview modification */
// originally (prior to the sigc++ conversion) the signal was simply
// connected twice rather than disconnecting the first connection
diff --git a/src/widgets/desktop-widget.h b/src/widgets/desktop-widget.h
index c20a8524e..aece4f75d 100644
--- a/src/widgets/desktop-widget.h
+++ b/src/widgets/desktop-widget.h
@@ -46,6 +46,8 @@ void sp_desktop_widget_update_rulers (SPDesktopWidget *dtw);
void sp_desktop_widget_update_hruler (SPDesktopWidget *dtw);
void sp_desktop_widget_update_vruler (SPDesktopWidget *dtw);
+void sp_desktop_widget_update_namedview (SPDesktopWidget *dtw);
+
/* Show/hide rulers & scrollbars */
void sp_desktop_widget_toggle_rulers (SPDesktopWidget *dtw);
void sp_desktop_widget_toggle_scrollbars (SPDesktopWidget *dtw);