Commit Graph

150 Commits

Author SHA1 Message Date
Sergio Martins
3454b67a45 Refactor: Move close event logic from FloatingWindow to DropArea
So main window can use it too
2022-03-09 14:39:20 +00:00
Sergio Martins
2eeb4aac27 Fix Item_p.h being exposed in public API
Forward declare Item instead
2022-02-12 14:37:19 +00:00
Sergio Martins
755d53432b Fix "drag to detach" MDI windows when in nested MDI mode
We were deleting the draggable, causing the drag to stop
2022-02-04 17:54:43 +00:00
Sergio Martins
4f8aac7df3 Fix floating windows not restoring to previous position
The dock widget wrapper that we deleted had that info. We need
to preserve it.
2022-02-04 16:57:44 +00:00
Sergio Martins
2b1aa44eff Fix crash when floating nested mdi 2022-01-24 19:18:55 +00:00
Sergio Martins
18457d80aa nested mdi: Get rid of unneeded drop area mdi wrapper when floating
When floating, the FloatingWindow has its own DropArea for nesting.
We delete the redundant level of wrappers when floating.
2022-01-23 21:46:37 +00:00
Sergio Martins
c7682a3524 Use QScopedValueRollback, it's more expressive 2022-01-23 21:46:37 +00:00
Sergio Martins
45b0536c6a Added DropArea::hasSingleFrame()
For readability
2022-01-23 21:46:37 +00:00
Allen Winter
2fbe4f872e Merge branch '1.5' 2022-01-20 08:15:23 -05:00
Allen Winter
93e60a743e update copyright year 2022-01-20 08:05:26 -05:00
Allen Winter
328a14b46a src/private/FloatingWindow.cpp - fix compile with mingw
NOMINMAX should only be defined with MSVC on Windows.
2022-01-20 07:50:24 -05:00
Allen Winter
0adb130d4b src/private/FloatingWindow.cpp - on Windows, define NOMINMAX
else windows.h will define the max() macro which doesn't
play nice with the std::numeric_limits::max()

Issue #266
2021-12-27 08:09:09 -05:00
Allen Winter
92d0d74641 src/private/FloatingWindow.cpp - on Windows, define NOMINMAX
else windows.h will define the max() macro which doesn't
play nice with the std::numeric_limits::max()

Issue #266
2021-12-27 07:56:00 -05:00
Sergio Martins
4d4f2a0183 Merge branch '1.5' 2021-12-22 17:07:24 +00:00
Alistair Baxter
f1e19ec59c Ensure that floating windows are not positioned off-screen when they are shown
At points when a Rect is to be used to position a floating widget,
test to see if it overlaps any of the system's screens.

If it does not, adjust the Rect to within the closest screen edges.
2021-12-22 16:48:45 +00:00
Eism
336f1146d3 Fixed the restoration of geometry when user closed maximized window 2021-12-22 15:31:26 +00:00
Sergio Martins
fafc0b7946 Fix "normal geometry" not being restored
When restoring a maximized window, calling QWidget::showNormal()
on it wouldn't set it's previous non-maximized size.

QWidget::normalGeometry() doesn't have a setter, so use private API.
2021-09-04 19:59:03 +01:00
Sergio Martins
25b48920bb Make FloatingWindow::normalGeometry() virtual
So it can be overridden by QtQuick, since there's no "normal geometry"
for QWindow.

Also useful to workaround window manager bugs in a class derived from FloatingWindow.
2021-09-03 15:33:46 +01:00
Sergio Martins
3b9773f872 Add support for restoring minimized/maximized floating window state 2021-09-02 18:32:35 +01:00
Sergio Martins
3e3cf10fff Allow to override FloatingWindow maximization/minimization
So users can workaround bugs in window managers / Qt, such as QTBUG-95478

The custom behavior needs to be done in a FloatingWindow sub-class,
as a generic workaround which doesn't break other window managers isn't
possible
2021-09-02 18:08:13 +01:00
Allen Winter
7001aa58ce clang-format on code base 2021-07-12 17:05:37 -04:00
Sergio Martins
6f031e3c33 Windows: Fix initial FloatingWindow size in HDPI
When:
- Screen A (100%), B (150%)
- MainWindow on screen B
- Trying to open a floating window on screen A (via setGeometry())

The Qt Windows QPA would error out when setting the geometry and it
would be too small.

The solution is to call setGeometry() before we create the QWindow.

Too much of an edge case to risk putting this on 1.3 branch.
Will be in 1.4.0.

Fixes #191
2021-06-22 23:09:38 +01:00
Sergio Martins
d2db92f1e7 Remove private/multisplitter/ from private include path
It's not needed.
Even wrong since then ../LayoutSaver_p.h would work
2021-06-15 16:46:07 +01:00
Sergio Martins
536e048f1c Fix build with Qt 5.9
The needed overload was introduced in Qt 5.10 only
2021-04-21 19:08:30 +01:00
Sergio Martins
2266f4a75c Fix FloatingWindow max size when there's tabbed dock widget
We don't support this case yet
2021-04-20 22:56:26 +01:00
Sergio Martins
06b680f603 Also update FloatingWindow's max size when children change constraints
A dock widget can change its max size later in life, so we need
to react to that
2021-04-20 22:52:08 +01:00
Sergio Martins
ec6be7d1a5 Fix potential crash 2021-04-20 22:51:43 +01:00
Sergio Martins
37040bfc9e Also update FloatingWindow max-size when adding nested dock widgets
We only support FLoatingWindow max-size when there's 1 frame.
When adding more, we need to remove the max size
2021-04-20 22:34:36 +01:00
Sergio Martins
1f4f7ec0e5 FloatingWindow now honours max size of the docked widget
Only if there's a single dock widget though.
Tabbed cases are more complicated as QStackedLayout doesn't
propagate size constraints
2021-04-20 21:00:33 +01:00
Sergio Martins
a31571ab2c Bound FloatingWindow::maxSizeHint()
Can't be bigger than Qt's hardcoded limit
Fixes a warning emitted by Qt
2021-04-20 20:57:14 +01:00
Sergio Martins
6ae8a203d9 qtquick: Fix build 2021-04-20 19:43:26 +01:00
Sergio Martins
1dbd491738 Minor: Move a comment to another place 2021-04-20 19:16:14 +01:00
Sergio Martins
e8693edb33 Minor refactoring: Factor out the FloatingWindow max size code
Created FloatingWindow::maxSizeHint()
2021-04-20 19:13:32 +01:00
Sergio Martins
5cbad00cb5 Minor coding style: bail out early 2021-04-20 18:47:34 +01:00
Sergio Martins
15e63381a9 Added DockWidgetBase::setUserType(int)
This is an opaque value which KDDW won't try to interpret or do
anything with it other than forward it to the FrameworkWidgetFactory.

Which if specialized by the user he can have different title bars
for different said "dock widget types"
2021-02-28 18:57:35 +00:00
Sergio Martins
ff67b9bcbc Merge branch '1.3' into master 2021-02-26 15:20:32 +00:00
Sergio Martins
7c3f06f98f When using a native title bar make floating window geometry smaller
When undocking a dock widget, the size of the dock widget should
be maintained

Fixes #174
2021-02-26 15:12:43 +00:00
Sergio Martins
6ac77a7662 Use the flags instead of the enum 2021-02-26 14:36:22 +00:00
Sergio Martins
610b85d01a Minor readability improv: replace bool with enum
CC issue #174
2021-02-26 14:32:55 +00:00
Sergio Martins
acdf03fc84 Merge branch '1.3' into master 2021-02-24 13:56:28 +00:00
Sergio Martins
a6f19e07c4 Fixed Flag_NativeTitleBar not hidding the client title bars
When restoring the layout the native title bar would be visible
Fixes #170
2021-02-24 13:52:44 +00:00
Milian Wolff
91ad74e3ad Relay status tip events to the parent of FloatingWindow
That allows the status bar of the main window - if available - to
show the event contents.
2021-02-17 20:36:37 +01:00
Sergio Martins
b128d25fbe Added convenience FloatingWindow::mainWindow() 2021-02-17 19:35:54 +00:00
Sergio Martins
13f84ab518 Fix QtQuick build 2021-02-17 18:14:57 +00:00
Sergio Martins
f75c3a123e Merge branch '1.3' into master 2021-02-17 17:44:05 +00:00
Sergio Martins
a6f3f21b70 Added Draggable::isWindow() 2021-02-17 16:54:15 +00:00
Sergio Martins
f500791ba3 FloatingWindow: This setup code is windows only 2021-02-15 22:15:26 +00:00
Sergio Martins
4ebc4e9546 Fix Linux build 2021-02-15 22:09:27 +00:00
Sergio Martins
94ee2e55fd Move FloatingWindow::setupWindow() into a reusable function
So other QWindow can use this
2021-02-15 22:03:44 +00:00
Sergio Martins
e3c370eb6b Revert "Move FloatingWindow::setupWindow() into a reusable function"
This reverts commit 6fea5af585.
Need to fix the windows build first
2021-02-15 10:43:15 -08:00