changeset 15581:5649e84ea3ce

GUI: add toolbar to editor when undocked * file_editor_interface.h (file_editor_interface::file_editor_interface): Added dockWidget_topLevelChanged slot to capture topLevelChanged signal when undocking editor window.
author Richard Crozier <richard.crozier@yahoo.co.uk>
date Sat, 20 Oct 2012 11:36:09 +0100
parents 673889d49256
children 52df2e7baabe
files libgui/src/m-editor/file-editor-interface.h
diffstat 1 files changed, 31 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor-interface.h	Fri Nov 02 15:19:05 2012 -0400
+++ b/libgui/src/m-editor/file-editor-interface.h	Sat Oct 20 11:36:09 2012 +0100
@@ -44,6 +44,16 @@
 
     connect (this, SIGNAL (visibilityChanged (bool)), this,
              SLOT (handle_visibility_changed (bool)));
+
+    // connect the editor dockWidget's topLevelChanged signal, which
+    // is emitted when its floating property changes, to a
+    // user-defined slot. We do this so than when the editor is popped
+    // out we can turn it into a proper window with all the normal
+    // toolbar buttons for a window, i.e. minimise, maximise, close
+    connect (this,
+             SIGNAL(topLevelChanged(bool)), this,
+             SLOT(dockWidget_topLevelChanged(bool)));
+
   }
 
   virtual ~file_editor_interface () { }
@@ -78,6 +88,27 @@
     if (visible)
       emit active_changed (true);
   }
+
+  // when the floating property of a dockWidget is changed from docked
+  // to floating we make it a top level window (with minmize,
+  // maximize, and close button in the title bar) by calling
+  // setWindowFlags(Qt::Window)
+  //
+  // The dockWidget will automatically regain it's Qt::widget flag
+  // when it becomes docked again (by dragging it to the right place
+  // or double clicking the title bar)
+  void dockWidget_topLevelChanged (bool isFloating)
+  {
+      if (isFloating)
+        {
+          //file_editor.setWindowFlags(Qt::Window);
+          this->setWindowFlags(Qt::Window);
+          // setWindowFlags calls setParent() when changing the flags
+          // for a window, causing the widget to be hidden. We must
+          // call show() to make the widget visible again
+          this->show();
+        }
+  }
 };
 
 #endif // FILEEDITORINTERFACE_H