summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/dock-behavior.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/dialog/dock-behavior.cpp')
-rw-r--r--src/ui/dialog/dock-behavior.cpp23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/ui/dialog/dock-behavior.cpp b/src/ui/dialog/dock-behavior.cpp
index cf4d36cff..9b216e841 100644
--- a/src/ui/dialog/dock-behavior.cpp
+++ b/src/ui/dialog/dock-behavior.cpp
@@ -46,16 +46,22 @@ DockBehavior::DockBehavior(Dialog &dialog) :
Inkscape::Verb::get(dialog._verb_num)->get_image() : ""),
static_cast<Widget::DockItem::State>(
Inkscape::Preferences::get()->getInt(_dialog._prefs_path + "/state",
- UI::Widget::DockItem::DOCKED_STATE)))
+ UI::Widget::DockItem::DOCKED_STATE)),
+ static_cast<Widget::DockItem::Placement>(
+ Inkscape::Preferences::get()->getInt(_dialog._prefs_path + "/placement",
+ UI::Widget::DockItem::TOP)))
+
{
// Connect signals
_signal_hide_connection = signal_hide().connect(sigc::mem_fun(*this, &Inkscape::UI::Dialog::Behavior::DockBehavior::_onHide));
+ signal_show().connect(sigc::mem_fun(*this, &Inkscape::UI::Dialog::Behavior::DockBehavior::_onShow));
_dock_item.signal_state_changed().connect(sigc::mem_fun(*this, &Inkscape::UI::Dialog::Behavior::DockBehavior::_onStateChanged));
if (_dock_item.getState() == Widget::DockItem::FLOATING_STATE) {
if (Gtk::Window *floating_win = _dock_item.getWindow())
sp_transientize(GTK_WIDGET(floating_win->gobj()));
}
+
}
DockBehavior::~DockBehavior()
@@ -178,8 +184,12 @@ DockBehavior::_onHide()
{
_dialog.save_geometry();
_dialog._user_hidden = true;
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setInt(_dialog._prefs_path + "/state", _dock_item.getPrevState());
+}
+
+void
+DockBehavior::_onShow()
+{
+ _dialog._user_hidden = false;
}
void
@@ -187,8 +197,6 @@ DockBehavior::_onStateChanged(Widget::DockItem::State /*prev_state*/,
Widget::DockItem::State new_state)
{
// TODO probably need to avoid window calls unless the state is different. Check.
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setInt(_dialog._prefs_path + "/state", new_state);
if (new_state == Widget::DockItem::FLOATING_STATE) {
if (Gtk::Window *floating_win = _dock_item.getWindow())
@@ -212,8 +220,9 @@ DockBehavior::onShowF12()
void
DockBehavior::onShutdown()
{
- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- prefs->setInt(_dialog._prefs_path + "/state", _dock_item.getPrevState());
+ int visible = _dock_item.isIconified() || !_dialog._user_hidden;
+ int status = (_dock_item.getState() == Inkscape::UI::Widget::DockItem::UNATTACHED) ? _dock_item.getPrevState() : _dock_item.getState();
+ _dialog.save_status( visible, status, _dock_item.getPlacement() );
}
void