summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Smith <john.smith7545@yahoo.com>2012-08-28 01:48:54 +0000
committerJohn Smith <john.smith7545@yahoo.com>2012-08-28 01:48:54 +0000
commit7f67c57da5884d9bf1c44799b29ba9017cb0ac53 (patch)
tree61d2860b6fe48f4b5cc37d05fc465cfd8dbb9eb1 /src
parentFix for 525597 : Undo History dialog not updating when switching windows (diff)
downloadinkscape-7f67c57da5884d9bf1c44799b29ba9017cb0ac53.tar.gz
inkscape-7f67c57da5884d9bf1c44799b29ba9017cb0ac53.zip
Fix for 1042500 : Align and Distribute dialog when floating doesnt work on active doc
(bzr r11625)
Diffstat (limited to 'src')
-rw-r--r--src/ui/dialog/align-and-distribute.cpp19
-rw-r--r--src/ui/dialog/align-and-distribute.h6
2 files changed, 23 insertions, 2 deletions
diff --git a/src/ui/dialog/align-and-distribute.cpp b/src/ui/dialog/align-and-distribute.cpp
index 9653b4e7a..67980cdc1 100644
--- a/src/ui/dialog/align-and-distribute.cpp
+++ b/src/ui/dialog/align-and-distribute.cpp
@@ -1104,6 +1104,9 @@ AlignAndDistribute::AlignAndDistribute()
g_signal_connect (G_OBJECT (INKSCAPE), "change_selection", G_CALLBACK (on_selection_changed), this);
randomize_bbox = Geom::OptRect();
+ _desktopChangeConn = _deskTrack.connectDesktopChanged( sigc::mem_fun(*this, &AlignAndDistribute::setDesktop) );
+ _deskTrack.connect(GTK_WIDGET(gobj()));
+
show_all_children();
on_tool_changed (NULL, NULL, this); // set current mode
@@ -1114,11 +1117,23 @@ AlignAndDistribute::~AlignAndDistribute()
sp_signal_disconnect_by_data (G_OBJECT (INKSCAPE), this);
for (std::list<Action *>::iterator it = _actionList.begin();
- it != _actionList.end();
- ++it)
+ it != _actionList.end(); ++it) {
delete *it;
+ }
+
+ _desktopChangeConn.disconnect();
+ _deskTrack.disconnect();
+}
+
+void AlignAndDistribute::setTargetDesktop(SPDesktop *desktop)
+{
+ if (_desktop != desktop) {
+ _desktop = desktop;
+ on_tool_changed (NULL, NULL, this);
+ }
}
+
void AlignAndDistribute::on_ref_change(){
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setInt("/dialogs/align/align-to", _combo.get_active_row_number());
diff --git a/src/ui/dialog/align-and-distribute.h b/src/ui/dialog/align-and-distribute.h
index 7e649834e..969703807 100644
--- a/src/ui/dialog/align-and-distribute.h
+++ b/src/ui/dialog/align-and-distribute.h
@@ -22,6 +22,7 @@
#include <gtkmm/comboboxtext.h>
#include <gtkmm/label.h>
#include "2geom/rect.h"
+#include "ui/dialog/desktop-tracker.h"
#if WITH_GTKMM_3_0
#include <gtkmm/checkbutton.h>
@@ -108,6 +109,7 @@ protected:
void addBaselineButton(const Glib::ustring &id, const Glib::ustring tiptext,
guint row, guint col, Gtk::Table &table, Geom::Dim2 orientation, bool distribute);
#endif
+ void setTargetDesktop(SPDesktop *desktop);
std::list<Action *> _actionList;
UI::Widget::Frame _alignFrame, _distributeFrame, _rearrangeFrame, _removeOverlapFrame, _nodesFrame;
@@ -129,6 +131,10 @@ protected:
Gtk::CheckButton _selgrp;
Gtk::ComboBoxText _combo;
+ SPDesktop *_desktop;
+ DesktopTracker _deskTrack;
+ sigc::connection _desktopChangeConn;
+
private:
AlignAndDistribute(AlignAndDistribute const &d);
AlignAndDistribute& operator=(AlignAndDistribute const &d);