From 76c74ffc9633a9c69062f0477f84592fb899203a Mon Sep 17 00:00:00 2001
From: Kingcom <sorgts@googlemail.com>
Date: Tue, 6 Jan 2015 16:09:30 +0100
Subject: [PATCH] citra-qt: Add option to hide dock widget title bars

---
 src/citra_qt/main.cpp | 25 ++++++++++++
 src/citra_qt/main.h   |  1 +
 src/citra_qt/main.ui  | 94 +++++++++++++++++++++++++++----------------
 3 files changed, 86 insertions(+), 34 deletions(-)

diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index c6671bef1..3e7b5ddfe 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -114,6 +114,9 @@ GMainWindow::GMainWindow()
     ui.action_Single_Window_Mode->setChecked(settings.value("singleWindowMode", true).toBool());
     ToggleWindowMode();
 
+    ui.actionDisplay_widget_title_bars->setChecked(settings.value("displayTitleBars", true).toBool());
+    OnDisplayTitleBars(ui.actionDisplay_widget_title_bars->isChecked());
+
     // Setup connections
     connect(ui.action_Load_File, SIGNAL(triggered()), this, SLOT(OnMenuLoadFile()));
     connect(ui.action_Load_Symbol_Map, SIGNAL(triggered()), this, SLOT(OnMenuLoadSymbolMap()));
@@ -156,6 +159,27 @@ GMainWindow::~GMainWindow()
     Pica::g_debug_context.reset();
 }
 
+void GMainWindow::OnDisplayTitleBars(bool show)
+{
+    QList<QDockWidget*> widgets = findChildren<QDockWidget*>();
+
+    if (show) {
+        for (QDockWidget* widget: widgets) {
+            QWidget* old = widget->titleBarWidget();
+            widget->setTitleBarWidget(nullptr);
+            if (old != nullptr)
+                delete old;
+        }
+    } else {
+        for (QDockWidget* widget: widgets) {
+            QWidget* old = widget->titleBarWidget();
+            widget->setTitleBarWidget(new QWidget());
+            if (old != nullptr)
+                delete old;
+        }
+    }
+}
+
 void GMainWindow::BootGame(std::string filename)
 {
     LOG_INFO(Frontend, "Citra starting...\n");
@@ -259,6 +283,7 @@ void GMainWindow::closeEvent(QCloseEvent* event)
     settings.setValue("state", saveState());
     settings.setValue("geometryRenderWindow", render_window->saveGeometry());
     settings.setValue("singleWindowMode", ui.action_Single_Window_Mode->isChecked());
+    settings.setValue("displayTitleBars", ui.actionDisplay_widget_title_bars->isChecked());
     settings.setValue("firstStart", false);
     SaveHotkeys(settings);
 
diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h
index 72df17c50..dd53489dd 100644
--- a/src/citra_qt/main.h
+++ b/src/citra_qt/main.h
@@ -46,6 +46,7 @@ private slots:
     void OnMenuLoadSymbolMap();
     void OnOpenHotkeysDialog();
     void OnConfigure();
+    void OnDisplayTitleBars(bool);
     void ToggleWindowMode();
 
 private:
diff --git a/src/citra_qt/main.ui b/src/citra_qt/main.ui
index d06c207a0..a3752ac1e 100644
--- a/src/citra_qt/main.ui
+++ b/src/citra_qt/main.ui
@@ -32,7 +32,7 @@
      <x>0</x>
      <y>0</y>
      <width>1081</width>
-     <height>20</height>
+     <height>21</height>
     </rect>
    </property>
    <widget class="QMenu" name="menu_File">
@@ -59,6 +59,7 @@
      <string>&amp;View</string>
     </property>
     <addaction name="action_Single_Window_Mode"/>
+    <addaction name="actionDisplay_widget_title_bars"/>
     <addaction name="action_Hotkeys"/>
    </widget>
    <widget class="QMenu" name="menu_Help">
@@ -73,17 +74,17 @@
    <addaction name="menu_Help"/>
   </widget>
   <widget class="QStatusBar" name="statusbar"/>
-   <action name="action_Load_File">
-     <property name="text">
-       <string>Load File...</string>
-     </property>
-   </action>
-   <action name="action_Load_Symbol_Map">
-     <property name="text">
-       <string>Load Symbol Map...</string>
-     </property>
-   </action>
-   <action name="action_Exit">
+  <action name="action_Load_File">
+   <property name="text">
+    <string>Load File...</string>
+   </property>
+  </action>
+  <action name="action_Load_Symbol_Map">
+   <property name="text">
+    <string>Load Symbol Map...</string>
+   </property>
+  </action>
+  <action name="action_Exit">
    <property name="text">
     <string>E&amp;xit</string>
    </property>
@@ -101,28 +102,28 @@
     <string>&amp;Pause</string>
    </property>
   </action>
-   <action name="action_Stop">
-     <property name="enabled">
-       <bool>false</bool>
-     </property>
-     <property name="text">
-       <string>&amp;Stop</string>
-     </property>
-   </action>
-   <action name="action_About">
-     <property name="text">
-       <string>About Citra</string>
-     </property>
-   </action>
-   <action name="action_Single_Window_Mode">
-     <property name="checkable">
-       <bool>true</bool>
-     </property>
-     <property name="text">
-       <string>Single Window Mode</string>
-     </property>
-   </action>
-   <action name="action_Hotkeys">
+  <action name="action_Stop">
+   <property name="enabled">
+    <bool>false</bool>
+   </property>
+   <property name="text">
+    <string>&amp;Stop</string>
+   </property>
+  </action>
+  <action name="action_About">
+   <property name="text">
+    <string>About Citra</string>
+   </property>
+  </action>
+  <action name="action_Single_Window_Mode">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Single Window Mode</string>
+   </property>
+  </action>
+  <action name="action_Hotkeys">
    <property name="text">
     <string>Configure &amp;Hotkeys ...</string>
    </property>
@@ -132,6 +133,14 @@
     <string>Configure ...</string>
    </property>
   </action>
+  <action name="actionDisplay_widget_title_bars">
+   <property name="checkable">
+    <bool>true</bool>
+   </property>
+   <property name="text">
+    <string>Display Dock Widget Headers</string>
+   </property>
+  </action>
  </widget>
  <resources/>
  <connections>
@@ -167,8 +176,25 @@
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>actionDisplay_widget_title_bars</sender>
+   <signal>triggered(bool)</signal>
+   <receiver>MainWindow</receiver>
+   <slot>OnDisplayTitleBars(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>-1</x>
+     <y>-1</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>540</x>
+     <y>364</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
  <slots>
   <slot>OnConfigure()</slot>
+  <slot>OnDisplayTitleBars(bool)</slot>
  </slots>
 </ui>