From 1ed2f1681ad32eb73cf68964788e81bc03786577 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Thu, 17 Dec 2020 22:27:40 +0100 Subject: desktop: remove the view-state There was the "application state", which decided what to show in the "quadrants" and the "view state" which decided which quadrant to show. These interacted in a hard-to-grasp way. The "view state" is used to show the map or dive list in full screen. I simply couldn't get these two orthogonal states to interact properly. Moreover the thing was buggy: If a quadrant was hidden, the user could still show it, by dragging from the side of the window, at least under KDE. To solve these woes, merge the two states into a single application state. If the widget of a quadrant is set to null, don't show it. So the four "view states" are now "application states" where three of the four quadrants are not shown. This also changes the memory management of the widgets: widgets that are not shown are now removed from the QSplitter objects. This makes it possible that the same widget is shown in *different* quadrants. While writing this, I stumbled upon a Qt bug, which is known since 2014: https://forum.qt.io/topic/43176/qsplitter-sizes-return-0 When restoring the quadrant sizes there was a test whether the quadrant size is 0. If that was the case, a default size was set. This seems not to work if the widgets were recently added. Since this test now always fails, make the quadrants non-collapsible and thus guarantee that 0 is never saved as a size. Signed-off-by: Berthold Stoeger --- core/applicationstate.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'core') diff --git a/core/applicationstate.h b/core/applicationstate.h index 5bae09aa4..c3a8f360d 100644 --- a/core/applicationstate.h +++ b/core/applicationstate.h @@ -13,6 +13,10 @@ enum class ApplicationState { EditDiveSite, FilterDive, Statistics, + MapMaximized, + ProfileMaximized, + ListMaximized, + InfoMaximized, Count }; -- cgit v1.2.3-70-g09d2