improve frameless window support
This commit is contained in:
@@ -7,6 +7,14 @@
|
|||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
<file alias="icon">../media/noggit_icon.png</file>
|
<file alias="icon">../media/noggit_icon.png</file>
|
||||||
<file alias="splash">../media/splash.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>
|
||||||
<qresource prefix="/shader">
|
<qresource prefix="/shader">
|
||||||
<file alias="m2_vs">../src/glsl/m2_vert.glsl</file>
|
<file alias="m2_vs">../src/glsl/m2_vert.glsl</file>
|
||||||
|
|||||||
@@ -75,6 +75,10 @@
|
|||||||
<property name="focusPolicy">
|
<property name="focusPolicy">
|
||||||
<enum>Qt::NoFocus</enum>
|
<enum>Qt::NoFocus</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="./resources/resources.qrc">
|
||||||
|
<normaloff>:icon</normaloff>:icon</iconset>
|
||||||
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
<size>
|
<size>
|
||||||
<width>24</width>
|
<width>24</width>
|
||||||
@@ -146,8 +150,8 @@
|
|||||||
<string>Minimize</string>
|
<string>Minimize</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../images.qrc">
|
<iconset resource="./resources/resources.qrc">
|
||||||
<normaloff>:/images/button_minimize_black.svg</normaloff>:/images/button_minimize_black.svg</iconset>
|
<normaloff>:./media/button_minimize_black.svg</normaloff>:./media/button_minimize_black.svg</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -187,9 +191,9 @@
|
|||||||
<string>Maximize</string>
|
<string>Maximize</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../images.qrc">
|
<iconset resource="./resources/resources.qrc">
|
||||||
<normaloff>:/images/button_maximize_black.svg</normaloff>
|
<normaloff>:./media/button_maximize_black.svg</normaloff>
|
||||||
<normalon>:/images/button_restore_black.svg</normalon>:/images/button_maximize_black.svg</iconset>
|
<normalon>:./media/button_restore_black.svg</normalon>:./media/button_maximize_black.svg</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -232,8 +236,8 @@
|
|||||||
<string>Close</string>
|
<string>Close</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="icon">
|
<property name="icon">
|
||||||
<iconset resource="../images.qrc">
|
<iconset resource="./resources/resources.qrc">
|
||||||
<normaloff>:/images/button_close_black.svg</normaloff>:/images/button_close_black.svg</iconset>
|
<normaloff>:./media/button_close_black.svg</normaloff>:./media/button_close_black.svg</iconset>
|
||||||
</property>
|
</property>
|
||||||
<property name="iconSize">
|
<property name="iconSize">
|
||||||
<size>
|
<size>
|
||||||
@@ -247,7 +251,7 @@
|
|||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../images.qrc"/>
|
<include location="./resources/resources.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
<connections/>
|
<connections/>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
@@ -470,19 +470,19 @@ void MapView::createGUI()
|
|||||||
_main_window->addToolBar(Qt::TopToolBarArea, _view_toolbar);
|
_main_window->addToolBar(Qt::TopToolBarArea, _view_toolbar);
|
||||||
connect (this, &QObject::destroyed, _view_toolbar, &QObject::deleteLater);
|
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);
|
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);
|
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);
|
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);
|
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);
|
connect (this, &QObject::destroyed, help_menu, &QObject::deleteLater);
|
||||||
|
|
||||||
#define ADD_ACTION(menu, name, shortcut, on_action) \
|
#define ADD_ACTION(menu, name, shortcut, on_action) \
|
||||||
|
|||||||
@@ -32,6 +32,8 @@
|
|||||||
|
|
||||||
#include "revision.h"
|
#include "revision.h"
|
||||||
|
|
||||||
|
#include "ui_TitleBar.h"
|
||||||
|
#include <external/framelesshelper/framelesswindowsmanager.h>
|
||||||
|
|
||||||
namespace noggit
|
namespace noggit
|
||||||
{
|
{
|
||||||
@@ -53,7 +55,45 @@ namespace noggit
|
|||||||
_settings = new settings(this);
|
_settings = new settings(this);
|
||||||
_about = new about(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"));
|
auto settings_action (file_menu->addAction ("Settings"));
|
||||||
QObject::connect ( settings_action, &QAction::triggered
|
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();
|
build_menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ namespace noggit
|
|||||||
|
|
||||||
void prompt_exit(QCloseEvent* event);
|
void prompt_exit(QCloseEvent* event);
|
||||||
void prompt_uid_fix_failure();
|
void prompt_uid_fix_failure();
|
||||||
|
QMenuBar* _menuBar;
|
||||||
|
|
||||||
std::unordered_set<QWidget*> displayed_widgets;
|
std::unordered_set<QWidget*> displayed_widgets;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user