Sergio Martins
d44a173945
Wayland: Really end the drag after dropping
...
Fixes a crash on shutdown
2020-10-15 17:27:12 +01:00
Sergio Martins
ac001d6f32
wayland: Don't allow to drop onto itself
...
It was showing the drop indicators in the window being dragged
2020-10-15 16:50:46 +01:00
Sergio Martins
e3de2df69c
wayland: Add initial drag and drop support
...
You can drag a floating window and drop it somewhere
- Only works with segmented indicator style. Classical indicators
require us being able to positioning an overlay, which wayland
doesn't allow us to.
- Detaching inner tabs and dock widgets not implemented yet.
- polishing needed
2020-10-15 16:50:46 +01:00
Sergio Martins
bca21defa5
wayland: Don't grab mouse or set window opacity
...
Not supported by the QPA and not needed for wayland anyway
2020-10-15 16:50:46 +01:00
Sergio Martins
6479bcabfb
Make DropArea::drop() receive WindowBeingDragged instead
...
In prep for wayland support
2020-10-14 20:42:51 +01:00
Sergio Martins
c2cc914b5c
indicators: Depend less on FloatingWindow
...
Deal in terms of WindowBeingDragged instead, as wayland won't have
a floating window being dragged
2020-10-14 19:39:51 +01:00
Sergio Martins
beef3c7fb5
Specialize StateDragging for wayland
...
Introduces StateDraggingWayland. Wayland is the alien, so don't want
to introduce hacks in the existing clean code.
StateDraggingWayland will deal with the wayland workarounds.
Although the impl only has placeholders for now I'm committing it
because it's already an improvement: broken detachment is no longer
possible. Detached windows were going to a random place on screen.
2020-10-14 18:12:25 +01:00
Sergio Martins
52184ca72b
Added StateBase::isActiveState()
2020-10-14 18:01:48 +01:00
Sergio Martins
78cd7c56f7
Minor: Switch order of ifdefs
...
Will want to add a case for wayland too.
2020-10-14 16:41:17 +01:00
Sergio Martins
7bfac091ae
Rename DockRegistry::nestedwindows() to DockRegistry::floatingWindow
...
which is the naming we use everywhere else
2020-10-10 20:41:42 +01:00
Sergio Martins
543f734650
Added DragController::enableFallbackMouseGrabber()
...
So it's easier to test the fallback mouse grabber
2020-10-03 18:37:26 +01:00
Sergio Martins
991075d69e
Windows: Start a native drag as soon as possible
...
Native drag works much better with HDPI crossing screens.
Relates to issue #78
2020-09-29 12:39:10 +01:00
Sergio Martins
576627eb17
Always outter indicators if the center is obscured with something else
...
If there's some other floating window over our drop zone, then it's
very difficult to drop if there's no outter indicators.
Now we'll show the outter indicators if we suspect there's some other
window obscuring
2020-09-16 12:54:09 +01:00
Sergio Martins
02c165163a
DragController: Use the geometry of the QWindow
...
While this works fine for QtWidgets, where the geometry of the
top-level QWidget is the same as the QWindow, it doesn't work
for QtQuick, where the geometry of the root item starts at 0,0
2020-08-10 19:03:15 +01:00
Sergio Martins
37590b44d7
qml: DragController now compiles with the QtQuick frontend
2020-08-06 23:31:44 +01:00
Sergio Martins
78dcb0f7f3
qml: Abstract some methods that QQuickItem doesn't have
...
geometry(), isMinimized(), etc.
2020-08-06 23:10:08 +01:00
Sergio Martins
c7afbf0803
qml: make qtTopLevelUnderCursor_impl() receive QWindow
...
QWindow works for both QtWidgets and QtQuick
2020-08-06 18:30:53 +01:00
Sergio Martins
769d34d746
qml: implement childAt
...
Added a namespace-level parentWidget() helper, so it works for
both widgets and quick
2020-08-06 17:51:49 +01:00
Sergio Martins
6502ee5071
DragControl: Remove some dead code paths
...
Neither DockWidget nor DropArea are ever a top-level
2020-08-04 18:23:55 +01:00
Sergio Martins
9657bc50a3
qml: Remove QtWidget'ism from DragController
2020-07-30 22:18:05 +01:00
Sergio Martins
c53d71e2de
qml: Remove more QWidget'isms, make code generic
2020-07-26 16:49:01 +01:00
Allen Winter
b4f49895c2
clarify: licensing is GPL2 or GPL3 or commercial licensed
...
follow the REUSE specs
2020-07-24 18:16:13 -04:00
Sérgio Martins
8474f246ae
Fix Qt6 build
...
Didn't include the cmake changes, as those are hacks for now.
Only included fixes to cpp code.
2020-07-18 18:51:47 +01:00
Sergio Martins
bcfb57f89d
Fix aerosnap|alwaysTabs|noTitleBar
...
DragController would ignore the non-client mouse press
2020-06-24 16:18:58 +01:00
Sergio Martins
5f4d8b515f
Fix detaching now allowing to continue a drag
...
Seen sometimes on Windows.
Also, since aero-snap works fine now, we can re-enable the mouse grab
2020-06-23 19:19:59 +01:00
Sergio Martins
b76ec9e611
Remove unused trivial variable from linux build
2020-06-23 17:10:06 +01:00
Sergio Martins
8baac15d24
Fix floating window position when dragging with constraints
...
When the detach starts we might make the window smaller so it
respects the max-size constraint. The quirk was that in that
case the window was no longer under the mouse cursor, so looked
weird while dragging, although it worked
2020-06-08 18:19:46 +01:00
Sergio Martins
cd1f52a4bb
When looking for drop target honour affinity
2020-05-25 21:29:29 +01:00
Sergio Martins
39d70c8186
Fix crash due to recurency in DragController
...
A drop could cause the events to be processed and trigger
another mouse move
Fixes : #19
2020-05-25 20:48:18 +01:00
Sergio Martins
d541a41536
Minor refactoring, factor some code into a function
2020-05-25 20:40:02 +01:00
Sergio Martins
7a852f700f
Save floating geometry right before starting a drag
...
so if you drop, then set floating again it goes to the original
floating position
2020-05-22 12:15:24 +01:00
Sergio Martins
6de5860e9a
Don't allow to drop to itself when having mainwindow inside dock widget
2020-05-20 16:33:48 +01:00
Sergio Martins
ea56d20959
Fix clazy warnings about unused trivial variables
2020-05-17 19:15:59 +01:00
Sergio Martins
ab0fc1e328
Add DockWidget::Option_NonDockable
...
A dock widget with this option will always be floating and not be
able to dock into anything. Other widgets can't dock into it either.
2020-04-13 13:23:38 +01:00
Allen Winter
df692686e7
various - update copyright year
2020-01-07 11:36:56 -05:00
Sergio Martins
927510dfff
Support re-ordering tabs with mouse
...
Just set KDDockWidgets::Config::Flag_AllowReorderTabs before creating
the dock widgets.
Fixes #20
2019-12-26 15:19:27 +00:00
Sergio Martins
a29a33a46d
Abstract starting a drag
...
So draggables can give their opinion on when to start a drag.
So we can support movable tab-bars.
2019-12-24 10:18:20 +00:00
Sergio Martins
cdc70ec34b
Support MainWindow being embedded into a widget on Linux/macOS too
...
Dragging indicators weren't being shown.
Suprisingly we already had a test for this: tst_embeddedMainWindow
But it passed on offscreen, just failed with xcb, which we don't
usually run
2019-12-18 18:00:11 +00:00
Sergio Martins
787f7802be
Move the private code into a private/ folder
...
It's nice to have a similar include hierarchy at build time and install
time.
It also makes things more explicit
2019-10-20 19:24:54 +01:00