improve frameless window support

This commit is contained in:
Skarn
2020-11-04 20:08:27 +03:00
parent 7b47b62fbd
commit 1d023bd98b
5 changed files with 75 additions and 14 deletions

View File

@@ -7,6 +7,14 @@
<qresource prefix="/">
<file alias="icon">../media/noggit_icon.png</file>
<file alias="splash">../media/splash.png</file>
<file>../media/button_minimize_black.svg</file>
<file>../media/button_minimize_white.svg</file>
<file>../media/button_maximize_black.svg</file>
<file>../media/button_maximize_white.svg</file>
<file>../media/button_restore_black.svg</file>
<file>../media/button_restore_white.svg</file>
<file>../media/button_close_black.svg</file>
<file>../media/button_close_white.svg</file>
</qresource>
<qresource prefix="/shader">
<file alias="m2_vs">../src/glsl/m2_vert.glsl</file>

View File

@@ -75,6 +75,10 @@
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="icon">
<iconset resource="./resources/resources.qrc">
<normaloff>:icon</normaloff>:icon</iconset>
</property>
<property name="iconSize">
<size>
<width>24</width>
@@ -146,8 +150,8 @@
<string>Minimize</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/button_minimize_black.svg</normaloff>:/images/button_minimize_black.svg</iconset>
<iconset resource="./resources/resources.qrc">
<normaloff>:./media/button_minimize_black.svg</normaloff>:./media/button_minimize_black.svg</iconset>
</property>
<property name="iconSize">
<size>
@@ -187,9 +191,9 @@
<string>Maximize</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/button_maximize_black.svg</normaloff>
<normalon>:/images/button_restore_black.svg</normalon>:/images/button_maximize_black.svg</iconset>
<iconset resource="./resources/resources.qrc">
<normaloff>:./media/button_maximize_black.svg</normaloff>
<normalon>:./media/button_restore_black.svg</normalon>:./media/button_maximize_black.svg</iconset>
</property>
<property name="iconSize">
<size>
@@ -232,8 +236,8 @@
<string>Close</string>
</property>
<property name="icon">
<iconset resource="../images.qrc">
<normaloff>:/images/button_close_black.svg</normaloff>:/images/button_close_black.svg</iconset>
<iconset resource="./resources/resources.qrc">
<normaloff>:./media/button_close_black.svg</normaloff>:./media/button_close_black.svg</iconset>
</property>
<property name="iconSize">
<size>
@@ -247,7 +251,7 @@
</widget>
<layoutdefault spacing="6" margin="11"/>
<resources>
<include location="../images.qrc"/>
<include location="./resources/resources.qrc"/>
</resources>
<connections/>
</ui>

View File

@@ -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) \

View File

@@ -32,6 +32,8 @@
#include "revision.h"
#include "ui_TitleBar.h"
#include <external/framelesshelper/framelesswindowsmanager.h>
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();
}

View File

@@ -28,6 +28,7 @@ namespace noggit
void prompt_exit(QCloseEvent* event);
void prompt_uid_fix_failure();
QMenuBar* _menuBar;
std::unordered_set<QWidget*> displayed_widgets;