diff --git a/rpcs3/rpcs3_app.cpp b/rpcs3/rpcs3_app.cpp index 9216eab671..af333b181b 100644 --- a/rpcs3/rpcs3_app.cpp +++ b/rpcs3/rpcs3_app.cpp @@ -1,4 +1,4 @@ -#include "rpcs3_app.h" +#include "rpcs3_app.h" #include "rpcs3qt/qt_utils.h" @@ -385,7 +385,7 @@ void rpcs3_app::OnChangeStyleSheetRequest(const QString& path) // dock widget "QDockWidget{ background: transparent; color: black; }" - "[floating = \"true\"]{ background: white; }" + "[floating=\"true\"]{ background: white; }" "QDockWidget::title{ background: #e3e3e3; border: none; padding-top: 0.2em; padding-left: 0.2em; }" "QDockWidget::close-button, QDockWidget::float-button{ background-color: #e3e3e3; }" diff --git a/rpcs3/rpcs3qt/custom_dock_widget.h b/rpcs3/rpcs3qt/custom_dock_widget.h index 9c1a035e82..dad70e0651 100644 --- a/rpcs3/rpcs3qt/custom_dock_widget.h +++ b/rpcs3/rpcs3qt/custom_dock_widget.h @@ -1,4 +1,4 @@ -#pragma once +#pragma once #include #include @@ -6,16 +6,46 @@ class custom_dock_widget : public QDockWidget { +private: + std::shared_ptr m_title_bar_widget; + bool m_is_title_bar_visible = true; + public: explicit custom_dock_widget(const QString &title, QWidget *parent = Q_NULLPTR, Qt::WindowFlags flags = Qt::WindowFlags()) : QDockWidget(title, parent, flags) { + m_title_bar_widget.reset(titleBarWidget()); + connect(this, &QDockWidget::topLevelChanged, [this](bool/* topLevel*/) { + SetTitleBarVisible(m_is_title_bar_visible); style()->unpolish(this); style()->polish(this); }); - }; + } + + void SetTitleBarVisible(bool visible) + { + if (visible || isFloating()) + { + if (m_title_bar_widget.get() != titleBarWidget()) + { + setTitleBarWidget(m_title_bar_widget.get()); + QMargins margins = widget()->contentsMargins(); + margins.setTop(0); + widget()->setContentsMargins(margins); + } + } + else + { + setTitleBarWidget(new QWidget()); + QMargins margins = widget()->contentsMargins(); + margins.setTop(1); + widget()->setContentsMargins(margins); + } + + m_is_title_bar_visible = visible; + } protected: void paintEvent(QPaintEvent* event) override diff --git a/rpcs3/rpcs3qt/gui_settings.h b/rpcs3/rpcs3qt/gui_settings.h index 320815dbef..8fcf967a12 100644 --- a/rpcs3/rpcs3qt/gui_settings.h +++ b/rpcs3/rpcs3qt/gui_settings.h @@ -149,13 +149,14 @@ namespace gui const gui_save fd_decrypt_sprx = gui_save(main_window, "lastExplorePathSPRX", ""); const gui_save fd_cg_disasm = gui_save(main_window, "lastExplorePathCGD", ""); - const gui_save mw_debugger = gui_save(main_window, "debuggerVisible", false); - const gui_save mw_logger = gui_save(main_window, "loggerVisible", true); - const gui_save mw_gamelist = gui_save(main_window, "gamelistVisible", true); - const gui_save mw_toolBarVisible = gui_save(main_window, "toolBarVisible", true); - const gui_save mw_geometry = gui_save(main_window, "geometry", QByteArray()); - const gui_save mw_windowState = gui_save(main_window, "windowState", QByteArray()); - const gui_save mw_mwState = gui_save(main_window, "wwState", QByteArray()); + const gui_save mw_debugger = gui_save(main_window, "debuggerVisible", false); + const gui_save mw_logger = gui_save(main_window, "loggerVisible", true); + const gui_save mw_gamelist = gui_save(main_window, "gamelistVisible", true); + const gui_save mw_toolBarVisible = gui_save(main_window, "toolBarVisible", true); + const gui_save mw_titleBarsVisible = gui_save(main_window, "titleBarsVisible", true); + const gui_save mw_geometry = gui_save(main_window, "geometry", QByteArray()); + const gui_save mw_windowState = gui_save(main_window, "windowState", QByteArray()); + const gui_save mw_mwState = gui_save(main_window, "wwState", QByteArray()); const gui_save cat_hdd_game = gui_save(game_list, "categoryVisibleHDDGame", true); const gui_save cat_disc_game = gui_save(game_list, "categoryVisibleDiscGame", true); diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp index a860cea166..9d5e2a62b8 100644 --- a/rpcs3/rpcs3qt/main_window.cpp +++ b/rpcs3/rpcs3qt/main_window.cpp @@ -1145,6 +1145,13 @@ void main_window::RepaintGui() Q_EMIT RequestTrophyManagerRepaint(); } +void main_window::ShowTitleBars(bool show) +{ + m_gameListFrame->SetTitleBarVisible(show); + m_debuggerFrame->SetTitleBarVisible(show); + m_logFrame->SetTitleBarVisible(show); +} + void main_window::CreateActions() { ui->exitAct->setShortcuts(QKeySequence::Quit); @@ -1371,6 +1378,12 @@ void main_window::CreateConnects() guiSettings->SetValue(gui::mw_gamelist, checked); }); + connect(ui->showTitleBarsAct, &QAction::triggered, [=](bool checked) + { + ShowTitleBars(checked); + guiSettings->SetValue(gui::mw_titleBarsVisible, checked); + }); + connect(ui->showToolBarAct, &QAction::triggered, [=](bool checked) { ui->toolBar->setVisible(checked); @@ -1606,12 +1619,15 @@ void main_window::ConfigureGuiFromSettings(bool configure_all) ui->showGameListAct->setChecked(guiSettings->GetValue(gui::mw_gamelist).toBool()); ui->showDebuggerAct->setChecked(guiSettings->GetValue(gui::mw_debugger).toBool()); ui->showToolBarAct->setChecked(guiSettings->GetValue(gui::mw_toolBarVisible).toBool()); + ui->showTitleBarsAct->setChecked(guiSettings->GetValue(gui::mw_titleBarsVisible).toBool()); m_debuggerFrame->setVisible(ui->showDebuggerAct->isChecked()); m_logFrame->setVisible(ui->showLogAct->isChecked()); m_gameListFrame->setVisible(ui->showGameListAct->isChecked()); ui->toolBar->setVisible(ui->showToolBarAct->isChecked()); + ShowTitleBars(ui->showTitleBarsAct->isChecked()); + ui->showHiddenEntriesAct->setChecked(guiSettings->GetValue(gui::gl_show_hidden).toBool()); m_gameListFrame->SetShowHidden(ui->showHiddenEntriesAct->isChecked()); // prevent GetValue in m_gameListFrame->LoadSettings diff --git a/rpcs3/rpcs3qt/main_window.h b/rpcs3/rpcs3qt/main_window.h index 060a1cebe1..91eb25900a 100644 --- a/rpcs3/rpcs3qt/main_window.h +++ b/rpcs3/rpcs3qt/main_window.h @@ -116,6 +116,7 @@ private: void CreateConnects(); void CreateDockWindows(); void EnableMenus(bool enabled); + void ShowTitleBars(bool show); void InstallPkg(const QString& dropPath = "", bool is_bulk = false); void InstallPup(const QString& dropPath = ""); diff --git a/rpcs3/rpcs3qt/main_window.ui b/rpcs3/rpcs3qt/main_window.ui index 40118f6095..ad8b4a9af1 100644 --- a/rpcs3/rpcs3qt/main_window.ui +++ b/rpcs3/rpcs3qt/main_window.ui @@ -263,6 +263,7 @@ + @@ -956,6 +957,14 @@ Add Games + + + true + + + Show Title Bars + +