fixed multi monitor support
This commit is contained in:
parent
b3c663046f
commit
e4732d086b
2 changed files with 43 additions and 13 deletions
|
|
@ -26,22 +26,37 @@ void ExtendedCheckBox::customEvent(QEvent* ev) {
|
|||
}
|
||||
|
||||
QRect MainWindow::setSizePosition(int width, int height) {
|
||||
//setGeometry ignores decoration size xdddd
|
||||
//setGeometry ignores decoration size, theres others for that
|
||||
QRect trayIconPos = this->trayIcon->geometry();
|
||||
int tix1, tix2, tiy1, tiy2;
|
||||
trayIconPos.getCoords(&tix1, &tiy1, &tix2, &tiy2);
|
||||
log_debugcpp("Tray Icon Pos: " + std::to_string(tix1) + " " + std::to_string(tix2)+" " + std::to_string(tiy1) + " " + std::to_string(tiy2));
|
||||
|
||||
screen = this->getCurrentScreen();
|
||||
log_debugcpp("Screen: " + screen->model().toStdString() + " " + screen->name().toStdString());
|
||||
this->setScreen(screen);
|
||||
|
||||
screen = QGuiApplication::primaryScreen();
|
||||
QRect screenRes = screen->geometry();
|
||||
int srx1, srx2, sry1, sry2;
|
||||
screenRes.getCoords(&srx1, &sry1, &srx2, &sry2);
|
||||
log_debugcpp("Screen Res: " + std::to_string(srx1) + " " + std::to_string(srx2)+" " + std::to_string(sry1) + " " + std::to_string(sry2));
|
||||
|
||||
QRect availableRes = screen->availableGeometry();
|
||||
int arx1, arx2, ary1, ary2;
|
||||
availableRes.getCoords(&arx1, &ary1, &arx2, &ary2);
|
||||
log_debugcpp("Available res: " + std::to_string(arx1) + " " + std::to_string(arx2)+" " + std::to_string(ary1) + " " + std::to_string(ary2));
|
||||
|
||||
if(height > (ary2 - ary1)) height = (ary2 - ary1);
|
||||
log_debugcpp("Height res: " + std::to_string(height));
|
||||
|
||||
uint8_t pos = 0;
|
||||
pos = tiy2 < (sry2 / 2) ? SpawnPos::UP : SpawnPos::DOWN;
|
||||
pos = tix2 < (srx2 / 2) ? pos | SpawnPos::LEFT : pos | SpawnPos::RIGHT;
|
||||
int leftDistance = std::abs(srx1 - tix1);
|
||||
int rightDistance = std::abs(srx2 - tix1);
|
||||
int upDistance = std::abs(sry1 - tiy1);
|
||||
int downDistance = std::abs(sry2 - tiy1);
|
||||
|
||||
pos = (upDistance < downDistance) ? SpawnPos::UP : SpawnPos::DOWN;
|
||||
pos = (leftDistance < rightDistance) ? pos | SpawnPos::LEFT : pos | SpawnPos::RIGHT;
|
||||
|
||||
switch (pos) {
|
||||
case SpawnPos::UP | SpawnPos::RIGHT:
|
||||
|
|
@ -84,6 +99,21 @@ void MainWindow::calculateChildWidgetsSize() {
|
|||
setGeometry(setSizePosition(width, height));
|
||||
}
|
||||
|
||||
QScreen* MainWindow::getCurrentScreen() {
|
||||
//Using cursor pos as screen detector. Flawed.
|
||||
QPoint cursorPos = QCursor::pos();
|
||||
log_debugcpp("Cursor pos: " + std::to_string(cursorPos.ry()) + " " + std::to_string(cursorPos.rx()));
|
||||
|
||||
for (QScreen *screen : QGuiApplication::screens()) {
|
||||
QRect screenRect = screen->geometry();
|
||||
if (screenRect.contains(cursorPos)) {
|
||||
return screen;
|
||||
}
|
||||
}
|
||||
|
||||
return QGuiApplication::primaryScreen();
|
||||
}
|
||||
|
||||
SessionWidget::SessionWidget(uint64_t idx, SessionHandler* sh, QWidget *parent) : QWidget(parent){
|
||||
//todo: based on qgridlayout, name+mute should be its own widget, same with channels
|
||||
this->idx = idx;
|
||||
|
|
@ -621,14 +651,11 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), lastRowSpacer(1,
|
|||
/*
|
||||
* Menu bar code
|
||||
*/
|
||||
mainMenuBar = this->menuBar();
|
||||
mainMenuBar = new QToolBar(this);
|
||||
hw = new HeaderWidget(this);
|
||||
mainMenuBar->setCornerWidget(hw,Qt::TopLeftCorner);
|
||||
mainMenuBar->show();
|
||||
this->setMenuBar(mainMenuBar);
|
||||
|
||||
//setCentralWidget(widget);
|
||||
//widgetLayout->addWidget(pintas, 0, 0);
|
||||
mainMenuBar->addWidget(hw);
|
||||
mainMenuBar->setMovable(false);
|
||||
this->addToolBar(Qt::BottomToolBarArea, mainMenuBar);
|
||||
|
||||
reloadEndpointWidgets();
|
||||
//scrollArea->setMinimumWidth(ews.at(0)->minimumWidth());
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@
|
|||
#include <QMenuBar>
|
||||
#include <QMenu>
|
||||
#include <QScreen>
|
||||
#include <QToolBar>
|
||||
#include <QWindow>
|
||||
|
||||
//#include <QScrollBar>
|
||||
/*
|
||||
|
|
@ -201,7 +203,8 @@ public:
|
|||
protected:
|
||||
void closeEvent(QCloseEvent *event) override;
|
||||
void customEvent(QEvent* ev) override;
|
||||
QRect setSizePosition(int width, int height);
|
||||
QRect setSizePosition(int width, int height);
|
||||
QScreen* getCurrentScreen();
|
||||
|
||||
private slots:
|
||||
void trayIconActivated(QSystemTrayIcon::ActivationReason reason);
|
||||
|
|
@ -229,7 +232,7 @@ private:
|
|||
|
||||
QScrollArea *scrollArea;
|
||||
HeaderWidget* hw;
|
||||
QMenuBar *mainMenuBar;
|
||||
QToolBar *mainMenuBar;
|
||||
QScreen *screen;
|
||||
//todo: ratio
|
||||
//Win10 1080p 120%
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue