diff options
| author | John Smith <john.smith7545@yahoo.com> | 2012-08-28 01:48:54 +0000 |
|---|---|---|
| committer | John Smith <john.smith7545@yahoo.com> | 2012-08-28 01:48:54 +0000 |
| commit | 7f67c57da5884d9bf1c44799b29ba9017cb0ac53 (patch) | |
| tree | 61d2860b6fe48f4b5cc37d05fc465cfd8dbb9eb1 /src | |
| parent | Fix for 525597 : Undo History dialog not updating when switching windows (diff) | |
| download | inkscape-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.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); |
