Commit Graph

288 Commits

Author SHA1 Message Date
Allen Winter
d9ba67dee7 Fix SPDX headers that were broken by clang-format line break 2022-10-25 12:44:25 -04:00
Sergio Martins
fd9858f1aa Windows: Fix artifacts when moving window to another screen
We had a workaround for this Qt bug, but Window::screenChanged
wasn't being emitted, since Window is a temporary object, not the
actual QWindow.

Fix by connecting directly to QWindow
Fixes issue #320
2022-10-21 15:58:47 +01:00
Sergio Martins
4e3f4e3073 More replacing of show() with open()
This time on DockWidgetViewInterface
2022-09-10 12:40:54 +01:00
Sergio Martins
cf44110033 Rename DockWidget::show() to DockWidget::open()
Since non-current tabs are open but not visible.
2022-09-10 12:26:30 +01:00
Sergio Martins
b5a9c03c21 Don't handle QEvent::Hide anymore
Update the buttons in DockWidget::setIsOpen() instead.
This makes the controllers self-contained and not depending
on the "view technology". Other frameworks might not even
have the concept of show/hidden events
2022-09-10 11:37:32 +01:00
Sergio Martins
932a80e73b Export SideBarButton
This allows code to link to subclasses of SideBarButton.

(cherry-picked from commit daebe9e680)
2022-09-08 00:15:34 +01:00
Sergio Martins
1998800883 Remove unneeded "spontaneous" argument from onShown/hidden 2022-08-21 22:55:45 +01:00
Sergio Martins
763ad1ae6b Wrapper views now also get a dummy controller
Now we can finally make all setVisible/isVisible calls go
through the controller
2022-08-20 19:24:21 +01:00
Sergio Martins
91f0a250e7 Workround Qt bug when reordering tabs 2022-08-15 21:25:11 +01:00
Sergio Martins
63ae96a919 Re-add support for reordering tabs
And this time, implement the state in the controllers.
2022-08-15 21:22:53 +01:00
Sergio Martins
65b0b7e140 Remove TabViewInterface::numDockWidgets()
The controller knows how many. Frontends no longer need to
implement this
2022-08-15 21:02:44 +01:00
Sergio Martins
a11414ed8d insertDockWidget() now returns void instead of bool
It doesn't fail.
Furthermore, the views shouldn't dictate anything. The controller
is in charge. Views don't get to say a tab failed to be added.
2022-08-15 20:56:21 +01:00
Sergio Martins
376202c3f8 Remove more logic from tabbar view into controller 2022-08-15 14:33:33 +01:00
Sergio Martins
2a37813409 Remove more TabBarViewInterface related to indexes
That's in the controller now, shared by all frontends
2022-08-15 14:14:15 +01:00
Sergio Martins
bbef108e32 Override QTabBar::tabInserted insted of QTabWidget::tabInserted
Since we're moving logic to tab bar instead of tab widget.
Otherwise calling count() on the tab bar while QTabWidget::tabInserted
is running can give the wrong value. So settle with a single class.
2022-08-15 13:47:03 +01:00
Sergio Martins
7f072366ed Remove now unneeded TabBar::currentTabChanged(int)
It's all in terms of current dock widget now, not indexes.
2022-08-14 18:31:50 +01:00
Sergio Martins
0b5e9bc6c1 Remove unneeded emissions of currentDockWidgetChanged
It's now wrapped with a setter, so it's emitted at the right
times always
2022-08-14 17:45:33 +01:00
Sergio Martins
8834f7d75b TabBar controller now stores the current dock widget
It's no longer stored in the view.
This makes it easier for new frontends.
2022-08-14 17:34:01 +01:00
Sergio Martins
30955b5f5b Remove more pure-virtuals from GroupViewInterface
In this case, made them non-pure, as the default impl is enough
for most frontends. Only qtquick does something different
2022-08-13 22:32:49 +01:00
Sergio Martins
7a4c969b86 Removed a lot of unneeded GroupViewInterface methods
These are already implemented in TabViewInterface
2022-08-13 22:17:56 +01:00
Sergio Martins
3ffe116a02 Move more methods away from StackViewInterface
Let's just have TabBarViewInterface, which is similar
2022-08-13 20:35:09 +01:00
Sergio Martins
fb59e30c59 Move more code away from Stack and into TabBar 2022-08-13 16:04:32 +01:00
Sergio Martins
8955ec8bcb Remove unused StackViewInterface::currentIndex() 2022-08-13 14:54:59 +01:00
Sergio Martins
1868ad7bd4 Move more code out of Stack and into TabBar
The signals are more about the tabs.
2022-08-13 14:50:19 +01:00
Sergio Martins
1abebef40b Move move code from StackViewInterface.h to TabBarViewInterface.h
Phasing out the former, so frontend writers don't have to implement
two duplicate interfaces
2022-08-13 14:11:33 +01:00
Sergio Martins
fb6175c4b3 Move the old ViewWrapper to qtcommon
Since it's Qt specific
2022-08-10 19:28:56 +01:00
Sergio Martins
69c7d3fd57 Remove View::maximumSize() as we already have View::maxSizeHint()
Having both was due to QWidgets having both. For QtQuick and other
frontends we only want the latter.
2022-08-07 14:49:32 +01:00
Sergio Martins
d8189e3e03 .clang-format: wrap at column 100 2022-08-05 16:49:00 +01:00
Sergio Martins
84ec64fade unnest CreateViewOptions so we can create dart bindings for it
Our binding generator doesn't support nested classes yet
2022-07-26 15:03:21 +01:00
Sergio Martins
36931e7c45 Allow DragController views to have access to its controller
For consistency
2022-07-20 13:12:52 +01:00
Sergio Martins
de40629094 Remove duplicate signal "currentDockWidgetChanged"
Because they were not equivalent, one was emitted in situations
where the other wasn't. Use a single signal to avoid that.
2022-07-17 19:30:28 +01:00
Allen Winter
fae03328f6 codespelling fixes 2022-07-13 09:12:36 -04:00
Sergio Martins
7f71efd5f8 Fix build on older gcc
Error was:
    undefined reference to `KDDockWidgets::Views::View_qtwidgets<QTabBar>::childViewsFor(QWidget const*)'
    (Repeated for QLineEdit and others)
2022-07-13 07:19:37 +01:00
Sergio Martins
6ebb680c92 Re-ran clang-format 14 over the source
Fixes some differences with clang 13
2022-07-11 11:40:38 +01:00
Sergio Martins
640ef58553 Allow to pass View* to qDebug 2022-07-10 18:36:35 +01:00
Sergio Martins
9a8539fa42 qtquick: Add support for "Always show tabs" option
Shows the tab even if the group only has 1 dock widget
2022-07-07 18:05:33 +01:00
Sergio Martins
019692fd2f Store the "tab auto hide" state in the controller, not the view
Added a signal for the QtQuick view too
2022-07-07 13:52:03 +01:00
Sergio Martins
b1605cc58b Rename Group::tabWidget() to Group::stack()
Matches its class name now
2022-07-07 11:37:47 +01:00
Sergio Martins
cd41697ee6 Added Config::startDragDistance()
Allows the user to change the drag threshold without having
to inherit from Platform
2022-07-07 11:11:02 +01:00
Sergio Martins
7d21516f6d Add a m_thisWeakPtr member to Views
Allows to promote back to shared pointer
2022-07-02 20:12:33 +01:00
Sergio Martins
5639b5632a tests: Construct QCoreApplication earlier
The global event filter wasn't being set as it didn't have
a qGuiApp at that point
2022-07-02 12:48:16 +01:00
Waqar Ahmed
7fc7fba697 Fix static build 2022-06-30 13:16:20 +05:00
Sergio Martins
9546e55cb0 Trying to fix msvc 2017 build 2022-06-29 14:46:41 +01:00
Sergio Martins
d7f677c8fc Remove unused ClassicIndicatorsOverlay_qtwidgets file 2022-06-29 13:59:36 +01:00
Sergio Martins
cadd94c233 Fix drop indicator overlay leak 2022-06-29 12:31:16 +01:00
Sergio Martins
cba3f77906 Revert "Remove Window::setProperty/property"
This reverts commit ff9a7fba69.

It's still being used by windows code paths
2022-06-29 09:35:12 +01:00
Sergio Martins
2eb72114d7 Share View::setObjectName() implementation between qtwidgets/qtquick 2022-06-28 20:12:07 +01:00
Sergio Martins
aff9806ab1 Port away from using event filter in DockWidget.cpp
Platform now abstract the emittion of window activation/deactivation
2022-06-28 18:36:10 +01:00
Sergio Martins
0cd515679f Don't handle ParentChange event directly, use the signal instead
This removes some duplicated code and decouples from QObject a bit
more
2022-06-28 17:24:03 +01:00
Sergio Martins
83a2620015 Remove View_qtwidgets::asQWidget 2022-06-27 23:54:18 +01:00