From d145ff7b7b11d8240d1c24b4de5ce3b4beae5aec Mon Sep 17 00:00:00 2001 From: John Smith Date: Tue, 28 Aug 2012 11:21:31 +0900 Subject: Fix for 1042508 : Transform dialog when floating doesnt work on active doc (bzr r11627) --- src/ui/dialog/transformation.cpp | 11 +++++++++++ src/ui/dialog/transformation.h | 14 +++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/ui/dialog/transformation.cpp b/src/ui/dialog/transformation.cpp index 15ad41d02..1c9d6689b 100644 --- a/src/ui/dialog/transformation.cpp +++ b/src/ui/dialog/transformation.cpp @@ -157,14 +157,25 @@ Transformation::Transformation() g_signal_connect (G_OBJECT (INKSCAPE), "change_selection", G_CALLBACK (on_selection_changed), this); g_signal_connect (G_OBJECT (INKSCAPE), "modify_selection", G_CALLBACK (on_selection_modified), this); + _desktopChangeConn = _deskTrack.connectDesktopChanged( sigc::mem_fun(*this, &Transformation::setDesktop) ); + _deskTrack.connect(GTK_WIDGET(gobj())); + show_all_children(); } Transformation::~Transformation() { sp_signal_disconnect_by_data (G_OBJECT (INKSCAPE), this); + _desktopChangeConn.disconnect(); + _deskTrack.disconnect(); } +void Transformation::setTargetDesktop(SPDesktop *desktop) +{ + if (_desktop != desktop) { + _desktop = desktop; + } +} /*######################################################################## # U T I L I T Y diff --git a/src/ui/dialog/transformation.h b/src/ui/dialog/transformation.h index 68c6a1e8e..1d24a0c94 100644 --- a/src/ui/dialog/transformation.h +++ b/src/ui/dialog/transformation.h @@ -12,19 +12,15 @@ #define INKSCAPE_UI_DIALOG_TRANSFORMATION_H - #include #include - - #include "ui/widget/panel.h" #include "ui/widget/notebook-page.h" #include "ui/widget/scalar-unit.h" #include "ui/widget/imageicon.h" #include "ui/widget/button.h" - - +#include "ui/dialog/desktop-tracker.h" namespace Inkscape { @@ -32,8 +28,6 @@ namespace UI { namespace Dialog { - - /** * Transformation dialog. * @@ -159,6 +153,10 @@ protected: UI::Widget::CheckButton _check_apply_separately; UI::Widget::CheckButton _check_replace_matrix; + SPDesktop *_desktop; + DesktopTracker _deskTrack; + sigc::connection _desktopChangeConn; + /** * Layout the GUI components, and prepare for use */ @@ -217,6 +215,8 @@ protected: void applyPageSkew(Inkscape::Selection *); void applyPageTransform(Inkscape::Selection *); + void setTargetDesktop(SPDesktop* desktop); + private: /** -- cgit v1.2.3