src/uiutilities.cpp

Wed, 25 May 2022 20:36:34 +0300

author
Teemu Piippo <teemu@hecknology.net>
date
Wed, 25 May 2022 20:36:34 +0300
changeset 199
6988973515d2
parent 178
a23024fc98e0
child 259
c27612f0eac0
permissions
-rw-r--r--

Fix pick() picking from weird places on the screen with high DPI scaling

glReadPixels reads data from the frame buffer, which contains data after
high DPI scaling, so any reads to that need to take this scaling into account

24
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
1 /*
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
2 * LDForge: LDraw parts authoring CAD
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
3 * Copyright (C) 2013 - 2020 Teemu Piippo
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
4 *
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
5 * This program is free software: you can redistribute it and/or modify
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
6 * it under the terms of the GNU General Public License as published by
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
7 * the Free Software Foundation, either version 3 of the License, or
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
8 * (at your option) any later version.
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
9 *
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
10 * This program is distributed in the hope that it will be useful,
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
13 * GNU General Public License for more details.
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
14 *
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
15 * You should have received a copy of the GNU General Public License
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
17 */
1a0faaaceb84 added license
Teemu Piippo <teemu@hecknology.net>
parents: 16
diff changeset
18
178
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
19 #include <QStyleFactory>
16
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
20 #include "uiutilities.h"
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
21
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
22 QVector<QAction*> uiutilities::collectActions(QObject* subject)
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
23 {
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
24 QVector<QAction*> actions;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
25 for (QAction* action : subject->findChildren<QAction*>())
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
26 {
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
27 if (not action->text().isEmpty()
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
28 and action->data().isNull()
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
29 and not action->objectName().isEmpty())
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
30 {
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
31 actions.push_back(action);
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
32 }
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
33 }
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
34 return actions;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
35 }
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
36
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
37 uiutilities::KeySequenceMap uiutilities::makeKeySequenceMap(const QVector<QAction*>& actions)
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
38 {
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
39 KeySequenceMap result;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
40 for (QAction* action : actions)
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
41 {
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
42 result[action->objectName()] = action->shortcut();
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
43 }
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
44 return result;
Teemu Piippo <teemu@hecknology.net>
parents:
diff changeset
45 }
178
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
46
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
47 void uiutilities::colorizeWidget(QWidget* widget, const QColor& color)
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
48 {
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
49 QPalette pal{color};
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
50 widget->setPalette(pal);
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
51 widget->setAutoFillBackground(true);
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
52 widget->setStyle(QStyleFactory::create("Fusion"));
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
53 widget->update();
a23024fc98e0 fix saving
Teemu Piippo <teemu@hecknology.net>
parents: 24
diff changeset
54 }

mercurial