From 6c6f2df849f0cb4e8c3e316e9f19044ebc9951cb Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 22 Jul 2021 04:37:42 +0200 Subject: [PATCH] Honor "floating windows are dialogs" for tearoffs --- libs/widgets/tearoff.cc | 12 +++++++++++- libs/widgets/widgets/ui_config.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/libs/widgets/tearoff.cc b/libs/widgets/tearoff.cc index a753315d4f..a73b849a19 100644 --- a/libs/widgets/tearoff.cc +++ b/libs/widgets/tearoff.cc @@ -25,6 +25,7 @@ #include "gtkmm2ext/utils.h" #include "widgets/tearoff.h" +#include "widgets/ui_config.h" #include "pbd/i18n.h" @@ -70,7 +71,16 @@ TearOff::TearOff (Widget& c, bool allow_resize) own_window.add_events (KEY_PRESS_MASK|KEY_RELEASE_MASK|BUTTON_PRESS_MASK|BUTTON_RELEASE_MASK|POINTER_MOTION_MASK|POINTER_MOTION_HINT_MASK); own_window.set_resizable (allow_resize); - own_window.set_type_hint (WINDOW_TYPE_HINT_UTILITY); + +#ifdef __APPLE__ + set_type_hint (Gdk::WINDOW_TYPE_HINT_DIALOG); +#else + if (UIConfigurationBase::instance().get_all_floating_windows_are_dialogs ()) { + own_window.set_type_hint (WINDOW_TYPE_HINT_DIALOG); + } else { + own_window.set_type_hint (WINDOW_TYPE_HINT_UTILITY); + } +#endif own_window.add (window_box); diff --git a/libs/widgets/widgets/ui_config.h b/libs/widgets/widgets/ui_config.h index 13f238ac30..92357d930b 100644 --- a/libs/widgets/widgets/ui_config.h +++ b/libs/widgets/widgets/ui_config.h @@ -41,6 +41,7 @@ public: sigc::signal ColorsChanged; virtual float get_ui_scale () = 0; + virtual bool get_all_floating_windows_are_dialogs () const = 0; virtual bool get_widget_prelight () const = 0; virtual Gtkmm2ext::Color color (const std::string&, bool* failed = 0) const = 0; };