From f446af2aa592997f6bc4aa3b5559cf477f9259f8 Mon Sep 17 00:00:00 2001 From: Volker Krause Date: Mon, 14 Feb 2022 18:12:24 +0100 Subject: Add KWindowStateSaver This is basically the C++ counter-part to https://invent.kde.org/frameworks/kconfig/-/merge_requests/94 and allows to easily retrofit window size persistence on existing windows/ dialogs, replacing e.g. code like https://invent.kde.org/pim/pimcommon/-/blob/master/src/pimcommon/widgets/kpimprintpreviewdialog.cpp. This is a bit more complicated than one might expect, as KWindowConfig works with QWindows, but that's something freshly created QWidget windows/ dialogs don't have yet. Additionally, we are in a library here that doesn't depend on Qt::Widgets. To overcome this we move the widget-dependent code (basically just a call to QWidget::windowHandle()) to inline template code (and thus into the consumer), use std::function's type erasure to pass it into the library code, and an event filter on the widget to wait for the QWindow to become available. --- src/gui/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/gui/CMakeLists.txt') diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index c7474893..e717c1c1 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -11,6 +11,7 @@ target_sources(KF5ConfigGui PRIVATE kstandardshortcut.cpp kstandardshortcutwatcher.cpp kwindowconfig.cpp + kwindowstatesaver.cpp ) ecm_qt_declare_logging_category(KF5ConfigGui @@ -48,6 +49,7 @@ ecm_generate_headers(KConfigGui_HEADERS KStandardShortcut KStandardShortcutWatcher KWindowConfig + KWindowStateSaver REQUIRED_HEADERS KConfigGui_HEADERS ) -- cgit v1.2.1