Skip to content

Commit b5cb6a1

Browse files
committedAug 12, 2021
Limit window size to 2/3
Fixes: #8366
1 parent 473f4fe commit b5cb6a1

File tree

8 files changed

+49
-27
lines changed

8 files changed

+49
-27
lines changed
 

‎changelog/unreleased/8366

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Bugfix: Limit min window size to 2/3 available
2+
3+
When scaling was used the window could become bigger than the screen.
4+
The size is now limited to 2/3 of the screen.
5+
6+
https://github.com/owncloud/client/issues/8366

‎src/gui/settingsdialog.cpp

+23-14
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,23 @@
3030
#include "protocolwidget.h"
3131
#include "owncloudsetupwizard.h"
3232

33+
#include <QImage>
3334
#include <QLabel>
34-
#include <QStandardItemModel>
35-
#include <QStackedWidget>
35+
#include <QLayout>
36+
#include <QMessageBox>
37+
#include <QPainter>
38+
#include <QPainterPath>
39+
#include <QPixmap>
3640
#include <QPushButton>
41+
#include <QScreen>
3742
#include <QSettings>
43+
#include <QStackedWidget>
44+
#include <QStandardItemModel>
3845
#include <QToolBar>
3946
#include <QToolButton>
40-
#include <QLayout>
4147
#include <QVBoxLayout>
42-
#include <QPixmap>
43-
#include <QImage>
4448
#include <QWidgetAction>
45-
#include <QPainter>
46-
#include <QPainterPath>
47-
#include <QMessageBox>
49+
#include <QWindow>
4850

4951
#ifdef Q_OS_MAC
5052
#include "settingsdialog_mac.h"
@@ -250,11 +252,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent)
250252
customizeStyle();
251253

252254
cfg.restoreGeometry(this);
253-
if (size().width() < minimumSizeHint().width() || size().height() < minimumSizeHint().height())
254-
{
255-
resize(minimumSizeHint());
256-
}
257-
255+
setMinimumSize(minimumSizeHint());
258256
#ifdef Q_OS_MAC
259257
setActivationPolicy(ActivationPolicy::Accessory);
260258
#endif
@@ -267,7 +265,18 @@ SettingsDialog::~SettingsDialog()
267265

268266
QSize SettingsDialog::minimumSizeHint() const
269267
{
270-
return {800, 500};
268+
const auto screen = windowHandle() ? windowHandle()->screen() : QApplication::screenAt(QCursor::pos());
269+
const auto availableSize = screen->availableSize();
270+
const QSize min { 800, 600 };
271+
if (!availableSize.isValid()) {
272+
return min;
273+
}
274+
return min.boundedTo(availableSize * 0.75);
275+
}
276+
277+
QSize SettingsDialog::sizeHintForChild() const
278+
{
279+
return ocApp()->gui()->settingsDialog()->size() * 0.9;
271280
}
272281

273282
QWidget* SettingsDialog::currentPage()

‎src/gui/settingsdialog.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ class SettingsDialog : public QMainWindow
5151

5252
public:
5353
explicit SettingsDialog(ownCloudGui *gui, QWidget *parent = nullptr);
54-
~SettingsDialog() override;
54+
~SettingsDialog() override;
55+
5556
QSize minimumSizeHint() const override;
57+
QSize sizeHintForChild() const;
5658

5759
QWidget* currentPage();
5860

‎src/gui/sharedialog.cpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,7 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState,
137137
connect(job, &PropfindJob::finishedWithError, this, &ShareDialog::slotPropfindError);
138138
job->start();
139139

140-
auto size = ocApp()->gui()->settingsDialog()->minimumSizeHint();
141-
resize(size.width() - 50, size.height() - 50);
140+
setMinimumSize(minimumSizeHint());
142141
}
143142

144143
ShareDialog::~ShareDialog()
@@ -219,6 +218,11 @@ void ShareDialog::showSharingUi()
219218
}
220219
}
221220

221+
QSize ShareDialog::minimumSizeHint() const
222+
{
223+
return ocApp()->gui()->settingsDialog()->sizeHintForChild();
224+
}
225+
222226
void ShareDialog::slotThumbnailFetched(const int &statusCode, const QByteArray &reply)
223227
{
224228
if (statusCode != 200) {

‎src/gui/sharedialog.h

+2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ class ShareDialog : public QDialog
4848
QWidget *parent);
4949
~ShareDialog() override;
5050

51+
QSize minimumSizeHint() const override;
52+
5153
private slots:
5254
void done(int r) override;
5355
void slotPropfindReceived(const QMap<QString, QString> &result);

‎src/gui/sharedialog.ui

-8
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,6 @@
22
<ui version="4.0">
33
<class>OCC::ShareDialog</class>
44
<widget class="QDialog" name="OCC::ShareDialog">
5-
<property name="geometry">
6-
<rect>
7-
<x>0</x>
8-
<y>0</y>
9-
<width>408</width>
10-
<height>281</height>
11-
</rect>
12-
</property>
135
<property name="windowTitle">
146
<string>Dialog</string>
157
</property>

‎src/gui/wizard/owncloudwizard.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
5252
, _credentialsPage(nullptr)
5353
{
5454
setObjectName("owncloudWizard");
55-
auto size = ocApp()->gui()->settingsDialog()->minimumSizeHint();
56-
resize(size.width() - 50, size.height() - 50);
5755

5856
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
5957
setPage(WizardCommon::Page_ServerSetup, _setupPage);
@@ -86,6 +84,8 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
8684
setOption(QWizard::CancelButtonOnLeft);
8785
setTitleFormat(Qt::RichText);
8886
setSubTitleFormat(Qt::RichText);
87+
88+
setMinimumSize(minimumSizeHint());
8989
}
9090

9191
void OwncloudWizard::setAccount(AccountPtr account)
@@ -264,4 +264,9 @@ void OwncloudWizard::askExperimentalVirtualFilesFeature(QWidget *receiver, const
264264
msgBox->open();
265265
}
266266

267+
QSize OCC::OwncloudWizard::minimumSizeHint() const
268+
{
269+
return ocApp()->gui()->settingsDialog()->sizeHintForChild();
270+
}
271+
267272
} // end namespace

‎src/gui/wizard/owncloudwizard.h

+2
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ class OwncloudWizard : public QWizard
7070

7171
DetermineAuthTypeJob::AuthType authType() const;
7272

73+
QSize minimumSizeHint() const override;
74+
7375
public slots:
7476
void setAuthType(DetermineAuthTypeJob::AuthType type);
7577
void setRemoteFolder(const QString &);

0 commit comments

Comments
 (0)