diff --git a/resources/resources.qrc b/resources/resources.qrc
index 0b1cfbfc..db784903 100644
--- a/resources/resources.qrc
+++ b/resources/resources.qrc
@@ -7,6 +7,14 @@
../media/noggit_icon.png
../media/splash.png
+ ../media/button_minimize_black.svg
+ ../media/button_minimize_white.svg
+ ../media/button_maximize_black.svg
+ ../media/button_maximize_white.svg
+ ../media/button_restore_black.svg
+ ../media/button_restore_white.svg
+ ../media/button_close_black.svg
+ ../media/button_close_white.svg
../src/glsl/m2_vert.glsl
diff --git a/src/external/framelesshelper/examples/QMainWindow/TitleBar.ui b/src/external/framelesshelper/examples/QMainWindow/TitleBar.ui
index a763cecc..7ca1775b 100644
--- a/src/external/framelesshelper/examples/QMainWindow/TitleBar.ui
+++ b/src/external/framelesshelper/examples/QMainWindow/TitleBar.ui
@@ -75,6 +75,10 @@
Qt::NoFocus
+
+
+ :icon:icon
+
24
@@ -146,8 +150,8 @@
Minimize
-
- :/images/button_minimize_black.svg:/images/button_minimize_black.svg
+
+ :./media/button_minimize_black.svg:./media/button_minimize_black.svg
@@ -187,9 +191,9 @@
Maximize
-
- :/images/button_maximize_black.svg
- :/images/button_restore_black.svg:/images/button_maximize_black.svg
+
+ :./media/button_maximize_black.svg
+ :./media/button_restore_black.svg:./media/button_maximize_black.svg
@@ -232,8 +236,8 @@
Close
-
- :/images/button_close_black.svg:/images/button_close_black.svg
+
+ :./media/button_close_black.svg:./media/button_close_black.svg
@@ -247,7 +251,7 @@
-
+
diff --git a/src/noggit/MapView.cpp b/src/noggit/MapView.cpp
index 1885fb39..28156f2c 100644
--- a/src/noggit/MapView.cpp
+++ b/src/noggit/MapView.cpp
@@ -470,19 +470,19 @@ void MapView::createGUI()
_main_window->addToolBar(Qt::TopToolBarArea, _view_toolbar);
connect (this, &QObject::destroyed, _view_toolbar, &QObject::deleteLater);
- auto file_menu (_main_window->menuBar()->addMenu ("Editor"));
+ auto file_menu (_main_window->_menuBar->addMenu ("Editor"));
connect (this, &QObject::destroyed, file_menu, &QObject::deleteLater);
- auto edit_menu (_main_window->menuBar()->addMenu ("Edit"));
+ auto edit_menu (_main_window->_menuBar->addMenu ("Edit"));
connect (this, &QObject::destroyed, edit_menu, &QObject::deleteLater);
- auto assist_menu (_main_window->menuBar()->addMenu ("Assist"));
+ auto assist_menu (_main_window->_menuBar->addMenu ("Assist"));
connect (this, &QObject::destroyed, assist_menu, &QObject::deleteLater);
- auto view_menu (_main_window->menuBar()->addMenu ("View"));
+ auto view_menu (_main_window->_menuBar->addMenu ("View"));
connect (this, &QObject::destroyed, view_menu, &QObject::deleteLater);
- auto help_menu (_main_window->menuBar()->addMenu ("Help"));
+ auto help_menu (_main_window->_menuBar->addMenu ("Help"));
connect (this, &QObject::destroyed, help_menu, &QObject::deleteLater);
#define ADD_ACTION(menu, name, shortcut, on_action) \
diff --git a/src/noggit/ui/main_window.cpp b/src/noggit/ui/main_window.cpp
index 1b82fbf6..02247b41 100644
--- a/src/noggit/ui/main_window.cpp
+++ b/src/noggit/ui/main_window.cpp
@@ -32,6 +32,8 @@
#include "revision.h"
+#include "ui_TitleBar.h"
+#include
namespace noggit
{
@@ -53,7 +55,45 @@ namespace noggit
_settings = new settings(this);
_about = new about(this);
- auto file_menu (menuBar()->addMenu ("&Noggit"));
+ QWidget *widget = new QWidget(this);
+ Ui::TitleBar titleBarWidget;
+ titleBarWidget.setupUi(widget);
+
+ _menuBar = new QMenuBar(nullptr);
+ _menuBar->setNativeMenuBar(false);
+ titleBarWidget.horizontalLayout->insertWidget(1, _menuBar);
+ _menuBar->setMaximumHeight(20);
+
+ setMenuWidget(widget);
+
+ QObject::connect(this,
+ &QMainWindow::windowTitleChanged,
+ titleBarWidget.titleLabel,
+ &QLabel::setText);
+
+ QObject::connect(titleBarWidget.closeButton,
+ &QPushButton::clicked,
+ this,
+ &QMainWindow::close);
+
+ QObject::connect(titleBarWidget.minimizeButton,
+ &QPushButton::clicked,
+ this,
+ &QMainWindow::showMinimized);
+
+ QObject::connect(titleBarWidget.maximizeButton,
+ &QPushButton::clicked,
+ [this, titleBarWidget]() {
+ if (this->isMaximized()) {
+ this->showNormal();
+ titleBarWidget.maximizeButton->setToolTip(QObject::tr("Maximize"));
+ } else {
+ this->showMaximized();
+ titleBarWidget.maximizeButton->setToolTip(QObject::tr("Restore"));
+ }
+ });
+
+ auto file_menu (_menuBar->addMenu ("&Noggit"));
auto settings_action (file_menu->addAction ("Settings"));
QObject::connect ( settings_action, &QAction::triggered
@@ -79,6 +119,14 @@ namespace noggit
}
);
+ FramelessWindowsManager::addIgnoreObject(this, _menuBar);
+ FramelessWindowsManager::addIgnoreObject(this, titleBarWidget.minimizeButton);
+ FramelessWindowsManager::addIgnoreObject(this, titleBarWidget.maximizeButton);
+ FramelessWindowsManager::addIgnoreObject(this, titleBarWidget.closeButton);
+
+ FramelessWindowsManager::setResizable(this, true);
+ FramelessWindowsManager::setMinimumSize(this, {1280, 720});
+
build_menu();
}
diff --git a/src/noggit/ui/main_window.hpp b/src/noggit/ui/main_window.hpp
index 9ab49e64..d853f2c2 100644
--- a/src/noggit/ui/main_window.hpp
+++ b/src/noggit/ui/main_window.hpp
@@ -28,6 +28,7 @@ namespace noggit
void prompt_exit(QCloseEvent* event);
void prompt_uid_fix_failure();
+ QMenuBar* _menuBar;
std::unordered_set displayed_widgets;