set(GTK_TARGET 2 CACHE STRING "GTK target")
add_definitions(-DGTK_TARGET=${GTK_TARGET})
- if (GTK_TARGET EQUAL 2 AND WIN32)
- add_definitions(-DWORKAROUND_WINDOWS_GTK2_GLWIDGET=1)
+ if (WIN32)
+ add_definitions(-DWORKAROUND_WINDOWS_FLOATING_WINDOW=1)
+
+ if (GTK_TARGET EQUAL 2)
+ add_definitions(-DWORKAROUND_WINDOWS_GTK2_GLWIDGET=1)
+ endif ()
endif ()
endif ()
else
ifeq ($(OS),Win32)
- CPPFLAGS_COMMON += -DWIN32 -D_WIN32 -D_inline=inline -DWORKAROUND_WINDOWS_GTK2_GLWIDGET=1
+ CPPFLAGS_COMMON += -DWIN32 -D_WIN32 -D_inline=inline -DWORKAROUND_WINDOWS_FLOATING_WINDOW=1 -DWORKAROUND_WINDOWS_GTK2_GLWIDGET=1
CFLAGS_COMMON += -mms-bitfields
LDFLAGS_DLL = -Wl,--add-stdcall-alias
LIBS_COMMON = -lws2_32 -luser32 -lgdi32 -lole32
* at the same time, some being minimized while being restored at the same time, triggering the
* minimization and the restoration of the others, and so on.
* It's difficult to say such bug will never happen on other OS or with some window manager.
- * Design choice: those floating windows are made to be displayed/hidden using menu or shortcuts,
- * then the OS-specific way to minimize/restore them is superfluous and less efficient.
- * The mainframe is not a floating window and is not created using this function so the user
- * minimizes the application by minimizing the mainframe.
+ * While it's possible to decide this can be a design choihce since those floating windows are made
+ * to be displayed/hidden using menu or shortcuts, meaning the OS-specific way to minimize/restore
+ * them is superfluous and less efficient, the floating window mode that fixes issues on Windows
+ * is also known to be broken on KDE (the floating window does not get focus), this is likely to be
+ * a bug in kwin.
+ * In any way the mainframe is not a floating window and is not created using this function so the
+ * user minimizes the whole application including floating windows by minimizing the mainframe
*/
+
+#ifdef WORKAROUND_WINDOWS_FLOATING_WINDOW
gtk_window_set_type_hint( window, GDK_WINDOW_TYPE_HINT_UTILITY );
+#endif // WORKAROUND_WINDOWS_FLOATING_WINDOW
if ( parent ) {
gtk_window_set_transient_for( window, parent );