# HG changeset patch # User Torsten # Date 1374814397 -7200 # Node ID 1d544ac393694280bb63a666828ea4d0aaef2da3 # Parent 3cbbdb49b8fffe42d6ed19c843ccbbd670e88788 show correct undock-button of widgets when window layout is resetted * octave_dock_widget.cc(make_widget): optional parameter indicating if widget has to be docked to the main window or just reparented (default true) * octave_dock_widget.h: optional parameter for make_widget, default true * main_window.cc(set_window_layout): call make_widget (only for reparenting) when widget is should not be floating but has no parent diff -r 3cbbdb49b8ff -r 1d544ac39369 libgui/src/main-window.cc --- a/libgui/src/main-window.cc Fri Jul 26 00:38:56 2013 -0400 +++ b/libgui/src/main-window.cc Fri Jul 26 06:53:17 2013 +0200 @@ -557,7 +557,7 @@ if (floating) widget->make_window (); else if (! widget->parent ()) // should not be floating but is - widget->setParent (this); // reparent + widget->make_widget (false); // no docking, just reparent // restore geometry QVariant val = settings->value (name); @@ -569,7 +569,10 @@ if (floating && visible) // floating and visible float_and_visible.append (widget); // not show before main win else - widget->setVisible (visible); // not floating -> show + { + widget->make_widget (); + widget->setVisible (visible); // not floating -> show + } } } diff -r 3cbbdb49b8ff -r 1d544ac39369 libgui/src/octave-dock-widget.cc --- a/libgui/src/octave-dock-widget.cc Fri Jul 26 00:38:56 2013 -0400 +++ b/libgui/src/octave-dock-widget.cc Fri Jul 26 06:53:17 2013 +0200 @@ -154,7 +154,7 @@ // dock the widget void -octave_dock_widget::make_widget () +octave_dock_widget::make_widget (bool dock) { QSettings *settings = resource_manager::get_settings (); @@ -163,14 +163,18 @@ saveGeometry ()); settings->sync (); - // add widget to last saved docking area - int area = settings->value ("DockWidgets/" + objectName () + "_dock_area", - Qt::TopDockWidgetArea).toInt (); - _parent->addDockWidget (static_cast (area), this); + if (dock) + { // add widget to last saved docking area (dock=true is default) + int area = settings->value ("DockWidgets/" + objectName () + "_dock_area", + Qt::TopDockWidgetArea).toInt (); + _parent->addDockWidget (static_cast (area), this); - // FIXME: restoreGeometry is ignored for docked widgets and its child widget - // restoreGeometry (settings->value - // ("DockWidgets/" + objectName ()).toByteArray ()); + // FIXME: restoreGeometry is ignored for docked widgets and its child widget + // restoreGeometry (settings->value + // ("DockWidgets/" + objectName ()).toByteArray ()); + } + else // only reparent, no docking + setParent (_parent); // adjust the (un)dock icon _dock_action->setIcon (QIcon (":/actions/icons/widget-undock.png")); diff -r 3cbbdb49b8ff -r 1d544ac39369 libgui/src/octave-dock-widget.h --- a/libgui/src/octave-dock-widget.h Fri Jul 26 00:38:56 2013 -0400 +++ b/libgui/src/octave-dock-widget.h Fri Jul 26 06:53:17 2013 +0200 @@ -40,7 +40,7 @@ virtual void connect_visibility_changed (void); void make_window (void); - void make_widget (void); + void make_widget (bool dock=true); void set_title (const QString&); signals: