From 3c9243686f6b45a2d71b326e70693fa61ec55f03 Mon Sep 17 00:00:00 2001 From: Leigh Scott Date: Nov 30 2022 13:28:46 +0000 Subject: Update to 5.6.1 release --- diff --git a/muffin.spec b/muffin.spec index 42b8296..3da555a 100644 --- a/muffin.spec +++ b/muffin.spec @@ -1,12 +1,11 @@ Name: muffin -Version: 5.6.0 -Release: 2%{?dist} +Version: 5.6.1 +Release: 1%{?dist} Summary: Window and compositing manager based on Clutter License: GPLv2+ URL: https://github.com/linuxmint/%{name} Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz -Patch0: %{url}/pull/649.patch#/window_placement.patch ExcludeArch: %{ix86} @@ -92,6 +91,9 @@ rm -rf %{buildroot}%{_datadir}/applications/ %{_libdir}/pkgconfig/* %changelog +* Wed Nov 30 2022 Leigh Scott - 5.6.1-1 +- Update to 5.6.1 release + * Mon Nov 28 2022 Leigh Scott - 5.6.0-2 - Readd lost window placement modes diff --git a/sources b/sources index afcd874..710af26 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (muffin-5.6.0.tar.gz) = 9d36ac4f9e9ee91c2712c51b7a7ec0223ddb3178739b6b2e644d54e425420ceb99bd72e5da129d2f8a42c5693eba144a4b0713bc550f09339a3d15136d0953dd +SHA512 (muffin-5.6.1.tar.gz) = ee33a2f48603f007635590b3c300df787c6d389eed610016ae02702a5fbcf0d2dc9fbb0e10c4e8d9e11aa7d8be31c464c9d85fbd03443833d5b6ee829b363b3d diff --git a/window_placement.patch b/window_placement.patch deleted file mode 100644 index 4bddd65..0000000 --- a/window_placement.patch +++ /dev/null @@ -1,316 +0,0 @@ -From ae5351e44e45cab44a8997bea60cabe2a34c1dc5 Mon Sep 17 00:00:00 2001 -From: Duncan Grisby -Date: Fri, 25 Nov 2022 12:54:59 +0000 -Subject: [PATCH] Bring back window placement-mode to allow pointer and manual - window placement. - ---- - data/org.cinnamon.muffin.gschema.xml.in | 28 +++++++++++++++++ - debian/libmuffin0.symbols | 2 +- - src/core/place.c | 42 ++++++++++++++++++++++++- - src/core/prefs.c | 26 +++++++-------- - src/core/window-private.h | 1 + - src/core/window.c | 9 ++++++ - src/meta/common.h | 19 +++++++++++ - src/meta/prefs.h | 6 ++-- - 8 files changed, 115 insertions(+), 18 deletions(-) - -diff --git a/data/org.cinnamon.muffin.gschema.xml.in b/data/org.cinnamon.muffin.gschema.xml.in -index 5ee5c4edd..05099509c 100644 ---- a/data/org.cinnamon.muffin.gschema.xml.in -+++ b/data/org.cinnamon.muffin.gschema.xml.in -@@ -5,6 +5,13 @@ - - - -+ -+ -+ -+ -+ -+ -+ - - -@@ -138,6 +145,27 @@ - - - -+ -+ 'automatic' -+ Window placement mode -+ -+ The window placement mode indicates how new windows are positioned. -+ -+ • “automatic” — the system chooses a location automatically based on -+ the space available on the desktop, or by a simple -+ cascade if there is no space -+ -+ • “pointer” — new windows are placed according to the mouse pointer -+ position -+ -+ • “manual” — the user must manually place the new window with the -+ mouse or keyboard. -+ -+ • “center” — new windows are always put in the center of the active -+ screen of the monitor -+ -+ -+ - - 'blend' - Background transition -diff --git a/debian/libmuffin0.symbols b/debian/libmuffin0.symbols -index 1f2dd49e6..00249da37 100644 ---- a/debian/libmuffin0.symbols -+++ b/debian/libmuffin0.symbols -@@ -2386,7 +2386,7 @@ libmuffin.so.0 libmuffin0 #MINVER# - meta_prefs_get_auto_raise@Base 5.3.0 - meta_prefs_get_auto_raise_delay@Base 5.3.0 - meta_prefs_get_button_layout@Base 5.3.0 -- meta_prefs_get_center_new_windows@Base 5.3.0 -+ meta_prefs_get_new_window_placement_mode@Base 5.3.0 - meta_prefs_get_check_alive_timeout@Base 5.3.0 - meta_prefs_get_cursor_size@Base 5.3.0 - meta_prefs_get_cursor_theme@Base 5.3.0 -diff --git a/src/core/place.c b/src/core/place.c -index 846845376..9c78b659c 100644 ---- a/src/core/place.c -+++ b/src/core/place.c -@@ -75,6 +75,32 @@ northwestcmp (gconstpointer a, gconstpointer b) - return 0; - } - -+ -+static gboolean -+place_by_pointer(MetaWindow *window, -+ MetaPlacementMode placement_mode, -+ int *new_x, -+ int *new_y) -+{ -+ MetaBackend *backend = meta_get_backend (); -+ MetaCursorTracker *cursor_tracker = meta_backend_get_cursor_tracker (backend); -+ int root_x, root_y; -+ -+ meta_cursor_tracker_get_pointer (cursor_tracker, &root_x, &root_y, NULL); -+ -+ MetaRectangle frame_rect; -+ meta_window_get_frame_rect (window, &frame_rect); -+ -+ *new_x = root_x - frame_rect.width / 2; -+ *new_y = root_y - frame_rect.height / 2; -+ -+ if (placement_mode == META_PLACEMENT_MODE_MANUAL) -+ window->move_after_placement = TRUE; -+ -+ return TRUE; -+} -+ -+ - static void - find_next_cascade (MetaWindow *window, - /* visible windows on relevant workspaces */ -@@ -323,7 +349,8 @@ window_place_centered (MetaWindow *window) - return (type == META_WINDOW_DIALOG || - type == META_WINDOW_MODAL_DIALOG || - type == META_WINDOW_SPLASHSCREEN || -- (type == META_WINDOW_NORMAL && meta_prefs_get_center_new_windows ())); -+ (type == META_WINDOW_NORMAL && -+ meta_prefs_get_new_window_placement_mode () == META_PLACEMENT_MODE_CENTER)); - } - - static void -@@ -668,6 +695,7 @@ meta_window_place (MetaWindow *window, - MetaBackend *backend = meta_get_backend (); - GList *windows = NULL; - MetaLogicalMonitor *logical_monitor; -+ MetaPlacementMode placement_mode; - - meta_topic (META_DEBUG_PLACEMENT, "Placing window %s\n", window->desc); - -@@ -884,6 +912,18 @@ meta_window_place (MetaWindow *window, - x = logical_monitor->rect.x; - y = logical_monitor->rect.y; - -+ -+ /* Placement based on pointer position */ -+ placement_mode = meta_prefs_get_new_window_placement_mode(); -+ -+ if (placement_mode == META_PLACEMENT_MODE_POINTER || -+ placement_mode == META_PLACEMENT_MODE_MANUAL) -+ { -+ if (place_by_pointer (window, placement_mode, &x, &y)) -+ goto done_check_denied_focus; -+ } -+ -+ - if (find_first_fit (window, windows, - logical_monitor, - x, y, &x, &y)) -diff --git a/src/core/prefs.c b/src/core/prefs.c -index aed5b6d9b..c07359abc 100644 ---- a/src/core/prefs.c -+++ b/src/core/prefs.c -@@ -93,7 +93,7 @@ static MetaKeyCombo locate_pointer_key_combo = { 0, 0, 0 }; - static CDesktopFocusMode focus_mode = C_DESKTOP_FOCUS_MODE_CLICK; - static CDesktopFocusNewWindows focus_new_windows = C_DESKTOP_FOCUS_NEW_WINDOWS_SMART; - static gboolean raise_on_click = TRUE; --static gboolean center_new_windows = FALSE; -+static MetaPlacementMode new_window_placement_mode = META_PLACEMENT_MODE_AUTOMATIC; - static gboolean attach_modal_dialogs = FALSE; - static int num_workspaces = 4; - static gboolean workspace_cycle = FALSE; -@@ -270,6 +270,13 @@ static MetaEnumPreference preferences_enum[] = - }, - &focus_mode, - }, -+ { -+ { "placement-mode", -+ SCHEMA_MUFFIN, -+ META_PREF_NEW_WINDOW_PLACEMENT_MODE, -+ }, -+ &new_window_placement_mode, -+ }, - { - { "visual-bell-type", - SCHEMA_GENERAL, -@@ -324,13 +331,6 @@ static MetaBoolPreference preferences_bool[] = - }, - &attach_modal_dialogs, - }, -- { -- { "center-new-windows", -- SCHEMA_MUFFIN, -- META_PREF_CENTER_NEW_WINDOWS, -- }, -- ¢er_new_windows, -- }, - { - { "raise-on-click", - SCHEMA_GENERAL, -@@ -1311,10 +1311,10 @@ meta_prefs_get_focus_new_windows (void) - return focus_new_windows; - } - --gboolean --meta_prefs_get_center_new_windows (void) -+MetaPlacementMode -+meta_prefs_get_new_window_placement_mode (void) - { -- return center_new_windows; -+ return new_window_placement_mode; - } - - gboolean -@@ -1850,8 +1850,8 @@ meta_preference_to_string (MetaPreference pref) - case META_PREF_FOCUS_NEW_WINDOWS: - return "FOCUS_NEW_WINDOWS"; - -- case META_PREF_CENTER_NEW_WINDOWS: -- return "CENTER_NEW_WINDOWS"; -+ case META_PREF_NEW_WINDOW_PLACEMENT_MODE: -+ return "NEW_WINDOW_PLACEMENT_MODE"; - - case META_PREF_ATTACH_MODAL_DIALOGS: - return "ATTACH_MODAL_DIALOGS"; -diff --git a/src/core/window-private.h b/src/core/window-private.h -index 65b32f31f..cf859c2cd 100644 ---- a/src/core/window-private.h -+++ b/src/core/window-private.h -@@ -238,6 +238,7 @@ struct _MetaWindow - guint maximize_horizontally_after_placement : 1; - guint maximize_vertically_after_placement : 1; - guint minimize_after_placement : 1; -+ guint move_after_placement : 1; - - /* The current tile mode */ - MetaTileMode tile_mode; -diff --git a/src/core/window.c b/src/core/window.c -index 0027f4f2b..e5df4bfd5 100644 ---- a/src/core/window.c -+++ b/src/core/window.c -@@ -1127,6 +1127,7 @@ _meta_window_shared_new (MetaDisplay *display, - window->maximize_horizontally_after_placement = FALSE; - window->maximize_vertically_after_placement = FALSE; - window->minimize_after_placement = FALSE; -+ window->move_after_placement = FALSE; - window->fullscreen = FALSE; - window->require_fully_onscreen = TRUE; - window->require_on_single_monitor = TRUE; -@@ -2631,6 +2632,14 @@ meta_window_show (MetaWindow *window) - timestamp = meta_display_get_current_time_roundtrip (window->display); - - meta_window_focus (window, timestamp); -+ -+ if (window->move_after_placement) -+ { -+ timestamp = meta_display_get_current_time_roundtrip (window->display); -+ meta_window_begin_grab_op(window, META_GRAB_OP_KEYBOARD_MOVING, -+ FALSE, timestamp); -+ window->move_after_placement = FALSE; -+ } - } - else if (display->x11_display) - { -diff --git a/src/meta/common.h b/src/meta/common.h -index 201d53755..99e1cf20f 100644 ---- a/src/meta/common.h -+++ b/src/meta/common.h -@@ -548,6 +548,25 @@ typedef enum - META_LAYER_LAST = 8 - } MetaStackLayer; - -+ -+/** -+ * MetaPlacementMode: -+ * @META_PLACEMENT_MODE_AUTOMATIC: Automatic -+ * @META_PLACEMENT_MODE_POINTER: Pointer -+ * @META_PLACEMENT_MODE_MANUAL: Manual -+ * @META_PLACEMENT_MODE_CENTER: Center -+ * -+ * How new windows should be placed. -+ */ -+typedef enum -+{ -+ META_PLACEMENT_MODE_AUTOMATIC, -+ META_PLACEMENT_MODE_POINTER, -+ META_PLACEMENT_MODE_MANUAL, -+ META_PLACEMENT_MODE_CENTER -+} MetaPlacementMode; -+ -+ - /* MetaGravity: (skip) - * - * Identical to the corresponding gravity value macros from libX11. -diff --git a/src/meta/prefs.h b/src/meta/prefs.h -index 8996379f7..fda8a175e 100644 ---- a/src/meta/prefs.h -+++ b/src/meta/prefs.h -@@ -65,7 +65,7 @@ - * @META_PREF_WORKSPACES_ONLY_ON_PRIMARY: workspaces only on primary - * @META_PREF_DRAGGABLE_BORDER_WIDTH: draggable border width - * @META_PREF_AUTO_MAXIMIZE: auto-maximize -- * @META_PREF_CENTER_NEW_WINDOWS: center new windows -+ * @META_PREF_NEW_WINDOW_PLACEMENT_MODE: new window placement mode - * @META_PREF_DRAG_THRESHOLD: drag threshold - * @META_PREF_LOCATE_POINTER: show pointer location - * @META_PREF_GTK_THEME: gtk theme name -@@ -110,7 +110,7 @@ typedef enum - META_PREF_WORKSPACES_ONLY_ON_PRIMARY, - META_PREF_DRAGGABLE_BORDER_WIDTH, - META_PREF_AUTO_MAXIMIZE, -- META_PREF_CENTER_NEW_WINDOWS, -+ META_PREF_NEW_WINDOW_PLACEMENT_MODE, - META_PREF_DRAG_THRESHOLD, - META_PREF_LOCATE_POINTER, - META_PREF_CHECK_ALIVE_TIMEOUT, -@@ -211,7 +211,7 @@ META_EXPORT - gboolean meta_prefs_get_auto_maximize (void); - - META_EXPORT --gboolean meta_prefs_get_center_new_windows (void); -+MetaPlacementMode meta_prefs_get_new_window_placement_mode (void); - - META_EXPORT - gboolean meta_prefs_get_show_fallback_app_menu (void);