mirror of
https://github.com/fergalmoran/flameshot.git
synced 2025-12-22 09:51:06 +00:00
Center dialogs on current screen (#4024)
* Center dialogs on current sreen * Center QuitPrompt
This commit is contained in:
@@ -37,8 +37,8 @@
|
||||
#endif
|
||||
|
||||
Flameshot::Flameshot()
|
||||
: m_captureWindow(nullptr)
|
||||
, m_haveExternalWidget(false)
|
||||
: m_haveExternalWidget(false)
|
||||
, m_captureWindow(nullptr)
|
||||
#if defined(Q_OS_MACOS)
|
||||
, m_HotkeyScreenshotCapture(nullptr)
|
||||
, m_HotkeyScreenshotHistory(nullptr)
|
||||
@@ -221,6 +221,12 @@ void Flameshot::config()
|
||||
if (m_configWindow == nullptr) {
|
||||
m_configWindow = new ConfigWindow();
|
||||
m_configWindow->show();
|
||||
// Call show() first, otherwise the correct geometry cannot be fetched
|
||||
// for centering the window on the screen
|
||||
QRect position = m_configWindow->frameGeometry();
|
||||
QScreen* currentScreen = QGuiAppCurrentScreen().currentScreen();
|
||||
position.moveCenter(currentScreen->availableGeometry().center());
|
||||
m_configWindow->move(position.topLeft());
|
||||
#if defined(Q_OS_MACOS)
|
||||
m_configWindow->activateWindow();
|
||||
m_configWindow->raise();
|
||||
@@ -249,7 +255,14 @@ void Flameshot::history()
|
||||
historyWidget = nullptr;
|
||||
});
|
||||
}
|
||||
|
||||
historyWidget->show();
|
||||
// Call show() first, otherwise the correct geometry cannot be fetched
|
||||
// for centering the window on the screen
|
||||
QRect position = historyWidget->frameGeometry();
|
||||
QScreen* currentScreen = QGuiAppCurrentScreen().currentScreen();
|
||||
position.moveCenter(currentScreen->availableGeometry().center());
|
||||
historyWidget->move(position.topLeft());
|
||||
|
||||
#if defined(Q_OS_MACOS)
|
||||
historyWidget->activateWindow();
|
||||
|
||||
@@ -475,7 +475,6 @@ void CaptureWidget::initQuitPrompt()
|
||||
{
|
||||
m_quitPrompt = new QMessageBox;
|
||||
makeChild(m_quitPrompt);
|
||||
m_quitPrompt->hide();
|
||||
|
||||
QString baseSheet = "QDialog { background-color: %1; }"
|
||||
"QLabel, QCheckBox { color: %2 }"
|
||||
@@ -493,6 +492,15 @@ void CaptureWidget::initQuitPrompt()
|
||||
auto* check = new QCheckBox(tr("Do not show this again"));
|
||||
m_quitPrompt->setCheckBox(check);
|
||||
|
||||
// Call show() first, otherwise the correct geometry cannot be fetched
|
||||
// for centering the window on the screen
|
||||
m_quitPrompt->show();
|
||||
QRect position = m_quitPrompt->frameGeometry();
|
||||
QScreen* currentScreen = QGuiAppCurrentScreen().currentScreen();
|
||||
position.moveCenter(currentScreen->availableGeometry().center());
|
||||
m_quitPrompt->move(position.topLeft());
|
||||
m_quitPrompt->hide();
|
||||
|
||||
QObject::connect(check, &QCheckBox::clicked, [](bool checked) {
|
||||
ConfigHandler().setShowQuitPrompt(!checked);
|
||||
});
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "./ui_capturelauncher.h"
|
||||
#include "src/config/cacheutils.h"
|
||||
#include "src/core/flameshot.h"
|
||||
#include "src/core/qguiappcurrentscreen.h"
|
||||
#include "src/utils/globalvalues.h"
|
||||
#include "src/utils/screengrabber.h"
|
||||
#include "src/utils/screenshotsaver.h"
|
||||
@@ -84,7 +85,14 @@ CaptureLauncher::CaptureLauncher(QDialog* parent)
|
||||
ui->screenshotY->setText(QString::number(lastRegion.y()));
|
||||
ui->screenshotWidth->setText(QString::number(lastRegion.width()));
|
||||
ui->screenshotHeight->setText(QString::number(lastRegion.height()));
|
||||
|
||||
show();
|
||||
// Call show() first, otherwise the correct geometry cannot be fetched
|
||||
// for centering the window on the screen
|
||||
QRect position = frameGeometry();
|
||||
QScreen* screen = QGuiAppCurrentScreen().currentScreen();
|
||||
position.moveCenter(screen->availableGeometry().center());
|
||||
move(position.topLeft());
|
||||
}
|
||||
|
||||
// HACK:
|
||||
|
||||
@@ -23,12 +23,13 @@ InfoWindow::InfoWindow(QWidget* parent)
|
||||
connect(
|
||||
ui->CopyInfoButton, &QPushButton::clicked, this, &InfoWindow::copyInfo);
|
||||
|
||||
show();
|
||||
// Call show() first, otherwise the correct geometry cannot be fetched for
|
||||
// centering the window on the screen
|
||||
QRect position = frameGeometry();
|
||||
QScreen* screen = QGuiAppCurrentScreen().currentScreen();
|
||||
position.moveCenter(screen->availableGeometry().center());
|
||||
move(position.topLeft());
|
||||
|
||||
show();
|
||||
}
|
||||
|
||||
InfoWindow::~InfoWindow()
|
||||
|
||||
Reference in New Issue
Block a user