improve frameless window support
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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) \
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ namespace noggit
|
||||
|
||||
void prompt_exit(QCloseEvent* event);
|
||||
void prompt_uid_fix_failure();
|
||||
QMenuBar* _menuBar;
|
||||
|
||||
std::unordered_set<QWidget*> displayed_widgets;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user