Sergio Martins
743dbc0718
Added dockWidgetInserted|Removed signals to TabBarWidget
...
Since QTabBar doesn't have them.
Useful for custom tab bars
2022-03-12 12:47:26 +00:00
Sergio Martins
fd4588de0f
TitleBarWidget: Mark members as protected
...
So custom titlebars have more power
2022-03-12 12:31:53 +00:00
Sergio Martins
6ba10cfe12
Added TitleBar::tabBar()
...
Useful for people writing custom titlebar's with style that depends
on the current tab
2022-03-11 18:21:49 +00:00
Sergio Martins
096176dc72
Don't dereference potentially nullptr
2022-03-10 18:37:28 +00:00
Sergio Martins
25b04d7ed8
MDI: Fix another case of showing resize handles wrong
...
the logic for 'y' only makes sense if 'x' is bounded and vice-versa
2022-03-10 10:55:17 +00:00
Sergio Martins
e345e89c35
MDI: Fix case where resize cursor would be shown for frame bellow
...
Was already fixed a few days ago, but this is the case for nested
mdi.
2022-03-09 19:08:29 +00:00
Sergio Martins
01cc915734
Further move onCloseEvent to base class
...
So that it can be reused by MDI layouts too
2022-03-09 14:58:35 +00:00
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
524dff9105
Don't try to restore to previous position if there isn't any
2022-03-07 16:36:38 +00:00
Sergio Martins
0099a19a82
Make redocking floating windows with tabs possible
...
TitleBar::isFloating() was returning false, while it should
have returned true.
Fixed by making isFloating() simpler and dumb. isFloating() should
only say if it belongs to a floating window or not. It shouldn't
contain any logic about whether button should be visible or not.
There's already logic elsewhere that will hide the float button
in case there's nesting.
Fixes issue #96 and #44
2022-03-07 15:56:15 +00:00
Sergio Martins
e6b8636e88
MDI: Fix resize cursor appearing for frames that had others on top
2022-03-04 11:34:35 +00:00
Sergio Martins
86419fd979
MDI: Fixed closing dock widget in MDI would close main window
...
We only close the window when the window is a FloatingWindow and
it's the last frame
2022-03-03 17:52:13 +00:00
Eism
220471f746
Corrected the updating of normal geometry for window
2022-02-14 15:34:01 +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
54bf24d5d4
Added Config::setDropIndicatorAllowedFunc()
2022-02-11 19:49:23 +00:00
Sergio Martins
76cbb760ed
Minor refactoring before introducing DropIndicatorAllowedFunc
...
Deals with all the false case first
2022-02-11 19:07:28 +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
a502a8250b
Fix possible nullptr dereference
2022-02-11 17:42:09 +00:00
Sergio Martins
85fb4ff671
indicators: Prepare the visibility to be more granular
...
Currently either all or none inner indicators can be hidden/shown,
and same of the outter.
We'll soon allow some of them to be hidden, selectively, by the
client app.
2022-02-11 17:37:26 +00:00
Sergio Martins
5811cab164
segmented indicators: Fix potential bugs due to decoupled drop types
...
The returned QVector was indexed by the enum values, but the enum
is flag based now, no longer sequential. Instead of depending
on ordering of the enum, let's instead return a QHash where the
type is coupled with the corresponding QPolygon already
2022-02-11 17:08:30 +00:00
Sergio Martins
1387c2f573
segmented indicators: Use the base class logic
...
Instead of repeating it
2022-02-11 16:58:12 +00:00
Sergio Martins
79cc347cd8
Refactor: Move indicator visibility logic into base class
2022-02-11 16:42:07 +00:00
Sergio Martins
ecd3c20adf
Fix build with Qt5+C++20
...
Error was:
qvector.h:532:18: error: use of overloaded operator '!=' is ambiguous (with operand types 'int *' and 'QTypedArrayData<int>::iterator')
while (i != d->begin())
2022-02-10 11:01:14 +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
e00a552bf8
Add DragController::currentStateChanged() signal
2022-02-04 17:52:54 +00:00
Sergio Martins
faf93fe597
Add DragController::isIdle()
2022-02-04 17:48:42 +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
4f8b174a8d
Fixed Frame::isFloating() for the nested MDI case
2022-02-04 15:17:11 +00:00
Sergio Martins
b13ba1e42e
Fix crash due to use of native widgets on Windows
...
Qt has corner cases when all of its widgets are native widgets.
This particular crash was a loop between QWidget::create()
and QWidget::createWinId().
2022-02-02 13:21:14 +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
6b04e20a7e
Add some doxygen
2022-01-30 02:40:53 +00:00
Sergio Martins
8a3ee35993
Fix firstParentOfType() going through different windows
2022-01-30 02:15:58 +00:00
Sergio Martins
146c656e29
Minor: Use OOP, add ItemRef::isInMainWindow()
2022-01-29 21:43:41 +00:00
Sergio Martins
a190e2dfbf
Fix -Wshadow warning
2022-01-29 20:57:19 +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
40231b7fae
Minor coding style
2022-01-29 19:02:17 +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
7de26139a2
Restore source-compat for TabWidgetWidget()
2022-01-24 15:47:06 +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
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
68e01c70ee
nested mdi: Delete wrappers once we close the last nested DW
2022-01-23 21:46:37 +00:00
Sergio Martins
296b2a3370
nested mdi: Fix MDI's frame title not being updated
...
Before we didn't need to update it because there was only 1
dock widget. But now, if there's more than one we need to set the
application's name instead of the dock widget's name as title.
2022-01-23 21:46:37 +00:00
Sergio Martins
074bc26be9
Added DropArea::mdiDockWidgetWrapper()
2022-01-23 21:46:37 +00:00
Sergio Martins
f8e6ecf821
Remove DropArea::setIsMDIWrapper(), use ctor instead
...
This propery is meant to be set only once, so enforce it via
compiler.
2022-01-23 21:46:37 +00:00
Sergio Martins
3e70a2cc71
nested mdi: Added DockWidgetBase::Private::isMDIWrapper
2022-01-23 21:46:37 +00:00
Sergio Martins
65ced9604f
nested mdi: Fixed title bar visibility
...
When there's only one docked widget we only show 1 title bar.
Just like happens with a FloatingWindow
2022-01-23 21:46:37 +00:00
Sergio Martins
45b0536c6a
Added DropArea::hasSingleFrame()
...
For readability
2022-01-23 21:46:37 +00:00