diff options
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/dialog/align-and-distribute.cpp | 19 | ||||
| -rw-r--r-- | src/ui/dialog/align-and-distribute.h | 6 |
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); |
