Commit Graph

849 Commits

Author SHA1 Message Date
Sergio Martins
037140b980 Add KDDockWidgets::initPlatform()
Instead of using the static variable, which is initialized before
having QApplication.

Will allow us to remove the QTimer from Platform init
2022-04-11 00:55:28 +01:00
Sergio Martins
613a18f60c Delete operator== for ViewWrapper
Fixes a bug in the tests too
2022-04-10 20:47:33 +01:00
Sergio Martins
d6fd54cec4 Por all usages of QWindop/windowHandle to KDDockWidgets::Window
Removes a lot of asQWidget() code and is also prepared for non-Qt
views.
2022-04-09 19:21:56 +01:00
Sergio Martins
4944ad5882 Add Platform::qobjectAsView()
to be removed once we port away from Qt, but needed for now to
support QtQuick
2022-04-07 23:10:01 +01:00
Sergio Martins
59f9824cc2 Fix typo during porting of test 2022-04-07 22:48:09 +01:00
Sergio Martins
71f0b644f2 Port away from including TitleBar_qtwidgets in tests 2022-04-07 22:43:56 +01:00
Sergio Martins
b60b54327b Port away from Item::guestAsQObject()
Use Item::guestView() instead.
2022-04-07 22:27:22 +01:00
Sergio Martins
0f2da43737 Rename guestWidget to guestView
As we deal in View now
2022-04-07 20:12:47 +01:00
Sergio Martins
558bd42447 tests: Remove more QWidget dependencies 2022-04-07 00:49:36 +01:00
Sergio Martins
7107bfe3e6 Remove _qtwidget include from utils.h 2022-04-07 00:40:25 +01:00
Sergio Martins
ad3febd87e Add copyright headers to tst_viewguard 2022-04-05 21:29:35 +01:00
Waqar Ahmed
607ec01feb Extend tst_viewguard to test signal trigger after destruction 2022-04-06 01:13:50 +05:00
Waqar Ahmed
b573d3f0f7 Introduce ViewGuard: A weak ptr to View 2022-04-05 17:05:17 +05:00
Sergio Martins
e593233b8f Renamed views_qtwidgets/ into qtwidgets/views/
As there will be some files that are specific to QtWidgets and
but aren't views
2022-04-03 23:51:02 +01:00
Sergio Martins
84fb080d13 Remove more QWidget dependencies 2022-04-03 23:40:01 +01:00
Sergio Martins
81e5d14e4f Cleanup DropArea and base classes re receiving QWidget
They receive View now
2022-04-03 23:19:53 +01:00
Sergio Martins
d5700d94e6 MainWindow controller now receives View parent instead of QWidget 2022-04-03 21:23:03 +01:00
Sergio Martins
dcdd9333d4 Remove a bunch of asQWidget() calls 2022-04-02 15:34:38 +01:00
Sergio Martins
b6bc3810bd tests: Remove unneeded deletion of top-level windows
They are deleted automatically nowadays
2022-03-30 19:36:17 +01:00
Sergio Martins
15cb93ed43 Port away from Controller::window() returning a QWidget
It now returns a ViewWrapper, which is agnostic to QtWidgets
2022-03-30 19:30:18 +01:00
Sergio Martins
15601fc3c9 Split MainWindow into view/controller 2022-03-30 11:51:31 +01:00
Sergio Martins
f2957e35d5 Moved MainWindow into Controllers namespace
All renamings and movings are done, next step is to make the controller
a proper controller, and same for the view.
2022-03-25 11:30:40 +00:00
Sergio Martins
9fba1e9799 Rename Controller::DockWidgetBase to Controller::DockWidget
As done for other controllers
2022-03-25 10:53:02 +00:00
Sergio Martins
8656108e81 Renamed MainWindowBase to MainWindow
As done for other controllers
2022-03-25 10:47:20 +00:00
Sergio Martins
63b5109113 Rename Views::MainWindow to Views::MainWindow_qtwidgets
As done for other views
2022-03-25 10:41:46 +00:00
Sergio Martins
264b08a731 Move MainWindow view into Views namespace 2022-03-25 10:40:16 +00:00
Sergio Martins
0c686c1339 Renamed MainWindowBase.h to MainWindow.h
As done for other controllers
2022-03-25 10:30:07 +00:00
Sergio Martins
27007184aa Rename MainWindow.h to MainWindow_qtwidgets.h
Just like the other views.
2022-03-25 10:27:25 +00:00
Sergio Martins
7e2f448ae1 Moved MainWindowBase/MainWindow into controllers/view folder
This is just the move, not ported yet
2022-03-25 10:21:07 +00:00
Sergio Martins
c6d95c42a8 Split most widgets into a Controller and a View
Controllers don't have any GUI and don't depend on the frontend
technology.

Views are implemented in a specific GUI tech (QtWidgets, QtQuick, etc).

For now only QtWidgets work. There's still a lot to decouple.

This will make it easier to introduce non-Qt backends.
2022-03-24 16:05:37 +00:00
Sergio Martins
ca3fe4070a Port layouting signals to KDBindings 2022-02-12 16:15:07 +00:00
Sergio Martins
412860abac tests: Use QT_NO_KEYWORDS too 2022-02-12 14:43:37 +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
4824a398ab Move DropIndicatorOverlayInterface::DropLocation enum to namespace scope
It's public now
2022-02-11 18:14:26 +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
719803ecfa Fix a test with offscreen QPA
We were pressing on pos 6,6 to start a drag but that triggered
a window resize instead.
2022-02-04 16:10:13 +00:00
Sergio Martins
f0ef24383b Debug++ 2022-02-04 16:10:13 +00:00
Sergio Martins
4f8b174a8d Fixed Frame::isFloating() for the nested MDI case 2022-02-04 15:17:11 +00:00
Sergio Martins
481dae64c3 nested_mdi: Fix floating windows not going back to their previous location
When floating a mdi window that was nested in a drop area, clicking the
float button should put it back to the MDI area.
2022-01-30 02:55:02 +00:00
Sergio Martins
721795b113 Remove LastPosition struct, move its members to Position
It was an unneeded indirection that didn't provide added semantics
2022-01-29 19:29:03 +00:00
Sergio Martins
d0dcac6b03 Make DockWidgetBase::setMDIPosition|setMDISize support nesting
They now honour Option_MDINestable.
Before they would bail out assuming they weren't in a MDI area.
Now they look further up the hierarchy to find our MDIArea, if any.
2022-01-25 20:14:04 +00:00
Sergio Martins
2b1aa44eff Fix crash when floating nested mdi 2022-01-24 19:18:55 +00:00
Sergio Martins
128645693c nested_mdi: Fix DnD over dock widgets docked in MDI
Dragging was always detecting the main window's drop indicator
overlay. Make it transparent for mouse events, so that
QWidget::childAt() doesn't pick it, and we can see the inner
drop areas.
2022-01-23 23:31:50 +00:00
Sergio Martins
86bceb4c48 nested mdi: Fix detaching inner dock widgets
Only the outter-most MDI frame is dragged in MDI mode. The inner ones
are dragged in normal docking mode, they become real floating windows.
2022-01-23 21:46:37 +00:00
Sergio Martins
ea64aae861 tests++ 2022-01-23 21:46:37 +00:00
Sergio Martins
d1645dff73 tests: Remove unneeded sleep 2022-01-23 21:46:37 +00:00
Sergio Martins
a72e018f3b nested mdi: Also test floating a nested MDI 2022-01-23 21:46:37 +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
9f6ec0244f nested mdi: More tests for closing docks 2022-01-23 21:46:37 +00:00
Sergio Martins
747e987f28 test++ 2022-01-23 21:46:37 +00:00