Commit Graph

17 Commits

Author SHA1 Message Date
Sergio Martins
4691f9bfa5 Ran clang-format over the codebase 2022-07-12 11:28:05 +01:00
Allen Winter
93e60a743e update copyright year 2022-01-20 08:05:26 -05:00
Allen Winter
7001aa58ce clang-format on code base 2021-07-12 17:05:37 -04:00
Sergio Martins
79fe9c2875 cmake: Remove private/ from our PRIVATE include path
Because some build systems don't support public/private includes,
and would require us to add private/ to the public include path.

This allows for an easier integration with some more exotic
build systems
2021-06-15 19:53:05 +01:00
Sergio Martins
693fb84a3e Fix DockWidgetBase::isFocusChanged() not being emitted
The previous commit fixed that the dock widget wasn't
getting focused on tab change, but didn't fix the signal.

When changing tabs, FocusScope::setFocused() would bailout
early because it was already focused, so never emitted
the signal for the new focused dock widget.

Refactored the code a bit and it's more robust now.
Setting the current focused widget is now centralized in
DockRegistry. Before it was split in two different places.

Fixes issue #188
2021-04-19 09:42:59 +01:00
Sergio Martins
818acc0ff1 Fix edge case when focusing FocusScope and tab bar is focused
When we focus a FocusScope we focus the last focused widget
inside that scope. But it could happen that the last focused widget
was the tab bar itself, which isn't very useful.

Fixes issue #188
2021-04-19 00:15:15 +01:00
Sergio Martins
e1363aadaa Remove inclusion of moc from .cpp file
doesn't play nice with cmake unity build on older cmake
2021-01-06 14:40:40 +00:00
Allen Winter
a2f4c972a6 update copyright year 2021-01-02 09:27:50 -05:00
Sergio Martins
cd859d6725 Fix a bunch of clazy warnings 2020-12-22 17:01:50 +00:00
Giuseppe D'Angelo
17539e5b88 Frame: stop using "virtual" signals
They don't work as expected across DLL boundaries on MSVC: connecting
to Frame::isFocusedChanged using the PMF syntax fails.

The reason has to do with how MSVC implements pointers to virtual
function members: they are "regular" function pointers to a DLL-local
stub that implements the virtual call. For that reason, a connect()
happening in client code would generate a pointer for the signal that
doesn't compare equal to the same pointer generated from inside KDDW;
and moc-generated code relies on this comparison to find the index of
the signal.

Just avoid the whole thing: rename the non-signal virtual call into a
"callback", and reimplement it in the first QObject subclass to turn it
into a proper signal.
2020-12-22 11:54:44 +00:00
Sergio Martins
fad81d595a qtquick: Remove some dependencies to QApplication 2020-11-26 19:31:32 +00:00
Sergio Martins
22d5db32ce FocusScope: Remove focus when nothing is focused 2020-11-09 15:25:32 +00:00
Sergio Martins
a6a1047f75 FocusScope: Also honour widgets embedded in the tab bar
A widget embedded in a tab bar (like a line edit) lives outside
the DockWidget but inside the Frame. It should still focus the
current dockwidget.
2020-11-03 17:12:21 +00:00
Sergio Martins
3e70b846e8 FocusScope: Modify the member variable before emitting signal 2020-11-03 16:19:47 +00:00
Sergio Martins
819725351a Fix -Wweak-vtables warnings 2020-10-14 14:55:28 +01:00
Sergio Martins
890784ba5a Finish FocusScope support
When clicking on a TitleBar the focus will be redirected to either:
- Last widget that had focus inside the scope
- To the DockWidget. Implies the user setting a guest widget that
accepts focus

Fixes: #56
2020-08-08 17:34:06 +01:00
Sergio Martins
10026ba191 Add FocusScope behaviour to TitleBar
Github issue #56 is not a KDDW bug, it's how Qt works. QtWidgets don't
have focus scope. But let's workaround and handroll our own FocusScope.

Now the title bar can be colored differently if the dock widget it controls
contains any focused children.

This just implements half of the story. You have to focus a child
for the title bar to change color. Clicking the title bar directly
isn't done yet. Needs to be figured out. What do we focus when clicking it?
TitleBars usually don't care about keyboard focus. Probably we
just use the user's widget as a focus proxy.
2020-08-08 12:33:23 +01:00