qt: Use QDesktopWidget for screen retrival

This commit is contained in:
Cacodemon345
2022-02-10 15:30:39 +06:00
parent c3a86b0482
commit 775dad5fa3
4 changed files with 23 additions and 4 deletions

View File

@@ -68,6 +68,7 @@ extern "C" {
#include "qt_settings.hpp" #include "qt_settings.hpp"
#include "qt_machinestatus.hpp" #include "qt_machinestatus.hpp"
#include "qt_mediamenu.hpp" #include "qt_mediamenu.hpp"
#include "qt_util.hpp"
#ifdef __unix__ #ifdef __unix__
#ifdef WAYLAND #ifdef WAYLAND
@@ -184,9 +185,9 @@ MainWindow::MainWindow(QWidget *parent) :
connect(this, &MainWindow::resizeContents, this, [this](int w, int h) { connect(this, &MainWindow::resizeContents, this, [this](int w, int h) {
if (!QApplication::platformName().contains("eglfs") && vid_resize == 0) { if (!QApplication::platformName().contains("eglfs") && vid_resize == 0) {
w = w / (!dpi_scale ? this->screen()->devicePixelRatio() : 1); w = w / (!dpi_scale ? util::screenOfWidget(this)->devicePixelRatio() : 1);
int modifiedHeight = (h / (!dpi_scale ? this->screen()->devicePixelRatio() : 1)) int modifiedHeight = (h / (!dpi_scale ? util::screenOfWidget(this)->devicePixelRatio() : 1))
+ menuBar()->height() + menuBar()->height()
+ (statusBar()->height() * !hide_status_bar) + (statusBar()->height() * !hide_status_bar)
+ (ui->toolBar->height() * !hide_tool_bar); + (ui->toolBar->height() * !hide_tool_bar);

View File

@@ -25,6 +25,7 @@
#include "qt_hardwarerenderer.hpp" #include "qt_hardwarerenderer.hpp"
#include "qt_mainwindow.hpp" #include "qt_mainwindow.hpp"
#include "qt_util.hpp"
#include "evdev_mouse.hpp" #include "evdev_mouse.hpp"
@@ -173,7 +174,7 @@ void RendererStack::mouseMoveEvent(QMouseEvent *event)
ignoreNextMouseEvent--; ignoreNextMouseEvent--;
} }
else if (event->globalPos().x() == 0 || event->globalPos().y() == 0) leaveEvent((QEvent*)event); else if (event->globalPos().x() == 0 || event->globalPos().y() == 0) leaveEvent((QEvent*)event);
else if (event->globalPos().x() == (screen()->geometry().width() - 1) || event->globalPos().y() == (screen()->geometry().height() - 1)) leaveEvent((QEvent*)event); else if (event->globalPos().x() == (util::screenOfWidget(this)->geometry().width() - 1) || event->globalPos().y() == (util::screenOfWidget(this)->geometry().height() - 1)) leaveEvent((QEvent*)event);
oldPos = event->pos(); oldPos = event->pos();
#endif #endif
} }

View File

@@ -16,10 +16,23 @@
*/ */
#include <QStringBuilder> #include <QStringBuilder>
#include <QStringList> #include <QStringList>
#include <QWidget>
#include <QApplication>
#if QT_VERSION <= QT_VERSION_CHECK(5, 14, 0)
#include <QDesktopWidget>
#endif
#include "qt_util.hpp" #include "qt_util.hpp"
namespace util namespace util
{ {
QScreen* screenOfWidget(QWidget* widget)
{
#if QT_VERSION <= QT_VERSION_CHECK(5, 14, 0)
return QApplication::screens()[QApplication::desktop()->screenNumber(widget) == -1 ? 0 : QApplication::desktop()->screenNumber(widget)];
#else
return widget->screen();
#endif
}
QString DlgFilter(std::initializer_list<QString> extensions, bool last) QString DlgFilter(std::initializer_list<QString> extensions, bool last)
{ {

View File

@@ -2,13 +2,17 @@
#define QT_UTIL_HPP #define QT_UTIL_HPP
#include <QString> #include <QString>
#include <QWidget>
#include <initializer_list> #include <initializer_list>
class QScreen;
namespace util namespace util
{ {
/* Creates extension list for qt filedialog */ /* Creates extension list for qt filedialog */
QString DlgFilter(std::initializer_list<QString> extensions, bool last = false); QString DlgFilter(std::initializer_list<QString> extensions, bool last = false);
/* Returns screen the widget is on */
QScreen* screenOfWidget(QWidget* widget);
}; };
#endif #endif