Hello community,

here is the log from the commit of package muffin for openSUSE:Factory checked 
in at 2018-06-19 12:04:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/muffin (Old)
 and      /work/SRC/openSUSE:Factory/.muffin.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "muffin"

Tue Jun 19 12:04:05 2018 rev:16 rq:617246 version:3.8.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/muffin/muffin.changes    2018-05-11 
09:15:52.771722797 +0200
+++ /work/SRC/openSUSE:Factory/.muffin.new/muffin.changes       2018-06-19 
12:04:07.537002535 +0200
@@ -1,0 +2,32 @@
+Sat Jun 16 15:48:41 UTC 2018 - sor.ale...@meowr.ru
+
+- Update to version 3.8.2:
+  * utils: Fix zenity dialogue - don't use monospace for the
+    heading, don't italicise the info text, force a wider dialogue
+    window.
+  * window.c: Change behaviour of meta_window_get_all_monitors()
+    to return only those monitors of a fullscreen window that are
+    completely covered by the window.
+  * screen.c: Ignore dock-type windows when determining fullscreen
+    window coverage on a monitor.
+  * window.c: Queue a fullscreen check when a window leaves a
+    monitor.
+  * window: Move legacy fullscreen workaround out of constraints
+    and into meta_window_move_resize_request.
+  * window.c: Set the "saved_maximize" internal state based on the
+    resulting state of the window after a maximize call, not the
+    directions that were requested for the call.
+  * window.c: Always use the full window extents (including
+    invisible) when running meta_window_get_all_monitors() on CSD
+    windows.
+  * meta-window-actor.c: Default to using shadows on windows.
+  * Software rendering: Don't remove shadows.
+  * screen.c: Ignore transient windows when working through the
+    stack figuring out if a monitor is fullscreened or not.
+  * window-props.c: When reloading the transient_for property, if
+    the given window id is not found, search existing windows'
+    client leader ids for a match, and assign the match's window as
+    the transient parent instead (this seems to be typical for Qt
+    applications).
+
+-------------------------------------------------------------------

Old:
----
  muffin-3.8.1.tar.gz

New:
----
  muffin-3.8.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ muffin.spec ++++++
--- /var/tmp/diff_new_pack.wNBGpa/_old  2018-06-19 12:04:08.904951747 +0200
+++ /var/tmp/diff_new_pack.wNBGpa/_new  2018-06-19 12:04:08.908951597 +0200
@@ -20,7 +20,7 @@
 %define sover   0
 %define typelib typelib-1_0-MetaMuffin-0_0
 Name:           muffin
-Version:        3.8.1
+Version:        3.8.2
 Release:        0
 Summary:        Cinnamon Desktop default window manager
 License:        GPL-2.0-or-later AND MIT

++++++ muffin-3.8.1.tar.gz -> muffin-3.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/configure.ac 
new/muffin-3.8.2/configure.ac
--- old/muffin-3.8.1/configure.ac       2018-05-06 16:14:22.000000000 +0200
+++ new/muffin-3.8.2/configure.ac       2018-06-08 12:50:55.000000000 +0200
@@ -2,7 +2,7 @@
 
 m4_define([muffin_major_version], [3])
 m4_define([muffin_minor_version], [8])
-m4_define([muffin_micro_version], [1])
+m4_define([muffin_micro_version], [2])
 
 m4_define([muffin_version],
           [muffin_major_version.muffin_minor_version.muffin_micro_version])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/debian/changelog 
new/muffin-3.8.2/debian/changelog
--- old/muffin-3.8.1/debian/changelog   2018-05-06 16:14:22.000000000 +0200
+++ new/muffin-3.8.2/debian/changelog   2018-06-08 12:50:55.000000000 +0200
@@ -1,3 +1,28 @@
+muffin (3.8.2) tara; urgency=medium
+
+  [ Michael Webster ]
+  * utils: Fix zenity dialog - don't use monospace for the heading, don't 
italicize the info text, force a wider dialog window.
+  * window.c: Change behavior of meta_window_get_all_monitors() to return only 
those monitors of a fullscreen window that are completely covered by the window.
+  * screen.c: Ignore dock-type windows when determining fullscreen window 
coverage on a monitor.
+
+  [ itzexor ]
+  * window.c: queue a fullscreen check when a window leaves a monitor
+
+  [ Michael Webster ]
+  * window: Move legacy fullscreen workaround out of constraints and into 
meta_window_move_resize_request.
+  * window.c: set the "saved_maximize" internal state based on the resulting 
state of the window after a maximize call, not the directions that were 
requested for the call.
+  * window.c: Always use the full window extents (including invisible) when 
running meta_window_get_all_monitors() on CSD windows.
+  * meta-window-actor.c: Default to using shadows on windows.
+
+  [ Clement Lefebvre ]
+  * Software rendering: Don't remove shadows
+
+  [ Michael Webster ]
+  * screen.c: Ignore transient windows when working thru the stack figuring 
out if a monitor is fullscreened or not.
+  * window-props.c: when reloading the transient_for property, if the given 
window id is not found, search existing windows' client leader ids for a match, 
and assign the match's window as the transient parent instead. (this seems to 
be typical for QT apps)
+
+ -- Clement Lefebvre <r...@linuxmint.com>  Fri, 08 Jun 2018 11:50:32 +0100
+
 muffin (3.8.1) tara; urgency=medium
 
   [ Michael Webster ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/src/compositor/meta-window-actor.c 
new/muffin-3.8.2/src/compositor/meta-window-actor.c
--- old/muffin-3.8.1/src/compositor/meta-window-actor.c 2018-05-06 
16:14:22.000000000 +0200
+++ new/muffin-3.8.2/src/compositor/meta-window-actor.c 2018-06-08 
12:50:55.000000000 +0200
@@ -830,12 +830,17 @@
       )
     return TRUE;
 
+  if (meta_window_is_client_decorated (priv->window))
+    {
+      return FALSE;
+    }
+
 #if 0
   if (window_type == META_WINDOW_TOOLTIP)
     return TRUE;
 #endif
 
-  return FALSE;
+  return TRUE;
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/src/core/constraints.c 
new/muffin-3.8.2/src/core/constraints.c
--- old/muffin-3.8.1/src/core/constraints.c     2018-05-06 16:14:22.000000000 
+0200
+++ new/muffin-3.8.2/src/core/constraints.c     2018-06-08 12:50:55.000000000 
+0200
@@ -442,25 +442,6 @@
     meta_workspace_get_onmonitor_region (cur_workspace, 
                                          monitor_info->number);
 
-  /* Workaround braindead legacy apps that don't know how to
-   * fullscreen themselves properly.
-   */
-  if (meta_prefs_get_force_fullscreen() &&
-      (window->decorated && !meta_window_is_client_decorated (window)) &&
-      meta_rectangle_equal (new, &monitor_info->rect) &&
-      window->has_fullscreen_func &&
-      !window->fullscreen)
-    {
-      /*
-      meta_topic (META_DEBUG_GEOMETRY,
-      */
-      meta_warning (
-                  "Treating resize request of legacy application %s as a "
-                  "fullscreen request\n",
-                  window->desc);
-      meta_window_make_fullscreen_internal (window);
-    }
-
   /* Log all this information for debugging */
   meta_topic (META_DEBUG_GEOMETRY,
               "Setting up constraint info:\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/src/core/delete.c 
new/muffin-3.8.2/src/core/delete.c
--- old/muffin-3.8.1/src/core/delete.c  2018-05-06 16:14:22.000000000 +0200
+++ new/muffin-3.8.2/src/core/delete.c  2018-06-08 12:50:55.000000000 +0200
@@ -108,13 +108,21 @@
 
   /* Translators: %s is a window title */
   if (window_title)
-    tmp = g_markup_printf_escaped (_("<tt>%s</tt> is not responding."),
-                                   window_title);
+    {
+      // FIXME: Didn't want to lose translations for this.. needed to remove 
the
+      // monospace tt but it's part of the translation.  Cancel them out for 
now.
+      gchar *unmarkup_title = g_markup_printf_escaped("</tt>%s<tt>", 
window_title);
+
+      tmp = g_strdup_printf (_("<tt>%s</tt> is not responding."),
+                             unmarkup_title);
+
+      g_free (unmarkup_title);
+    }
   else
     tmp = g_strdup (_("Application is not responding."));
 
   window_content = g_strdup_printf (
-      "<big><b>%s</b></big>\n\n<i>%s</i>",
+      "<big><b>%s</b></big>\n\n%s",
       tmp,
       _("You may choose to wait a short while for it to "
         "continue or force the application to quit entirely."));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/src/core/main.c 
new/muffin-3.8.2/src/core/main.c
--- old/muffin-3.8.1/src/core/main.c    2018-05-06 16:14:22.000000000 +0200
+++ new/muffin-3.8.2/src/core/main.c    2018-06-08 12:50:55.000000000 +0200
@@ -465,7 +465,6 @@
        /* Clutter envs not set, since they won't work after Clutter init */
     g_setenv ("CINNAMON_SOFTWARE_RENDERING", "1", FALSE);
     g_setenv ("CINNAMON_SLOWDOWN_FACTOR", "0.0001", FALSE);
-    g_setenv ("MUFFIN_NO_SHADOWS", "1", FALSE);
     meta_warning ("Software rendering detected: %s\n", renderer);
   }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/src/core/screen.c 
new/muffin-3.8.2/src/core/screen.c
--- old/muffin-3.8.1/src/core/screen.c  2018-05-06 16:14:22.000000000 +0200
+++ new/muffin-3.8.2/src/core/screen.c  2018-06-08 12:50:55.000000000 +0200
@@ -3797,9 +3797,10 @@
 
   screen->check_fullscreen_later = 0;
 
-  /* We consider a monitor in fullscreen if it contains a fullscreen window;
-   * however we make an exception for maximized windows above the fullscreen
-   * one, as in that case window+chrome fully obscure the fullscreen window.
+  /* We consider a monitor in fullscreen if it contains a fullscreen window 
that
+   * is the current top-most window in that monitor.  If any window (other 
than a
+   * dock/toolbar type) is above the fullscreen window, the monitor is no 
longer
+   * considered to be in fullscreen
    */
   for (window = meta_stack_get_top (screen->stack);
        window;
@@ -3807,7 +3808,7 @@
     {
       gboolean covers_monitors = FALSE;
 
-      if (window->screen != screen || window->hidden)
+      if (window->screen != screen || window->hidden || window->xtransient_for)
         continue;
 
       if (window->fullscreen)
@@ -3824,7 +3825,10 @@
           if (meta_window_is_monitor_sized (window))
             covers_monitors = TRUE;
         }
-      else
+      /* Any window type except dock/toolbar that comes before a fullscreen one
+       * will preempt fullscreen for that monitor. */
+      else if (window->type != META_WINDOW_DOCK &&
+               window->type != META_WINDOW_TOOLBAR)
         {
           int monitor_index = meta_window_get_monitor (window);
           /* + 1 to avoid NULL */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/src/core/util.c 
new/muffin-3.8.2/src/core/util.c
--- old/muffin-3.8.1/src/core/util.c    2018-05-06 16:14:22.000000000 +0200
+++ new/muffin-3.8.2/src/core/util.c    2018-06-08 12:50:55.000000000 +0200
@@ -647,6 +647,8 @@
   append_argument (args, "");
   append_argument (args, "--text");
   append_argument (args, message);
+  append_argument (args, "--width");
+  append_argument (args, "400");
 
   if (timeout)
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/src/core/window-props.c 
new/muffin-3.8.2/src/core/window-props.c
--- old/muffin-3.8.1/src/core/window-props.c    2018-05-06 16:14:22.000000000 
+0200
+++ new/muffin-3.8.2/src/core/window-props.c    2018-06-08 12:50:55.000000000 
+0200
@@ -1636,6 +1636,60 @@
   meta_window_queue (window, META_QUEUE_UPDATE_ICON | META_QUEUE_MOVE_RESIZE);
 }
 
+typedef struct
+{
+  MetaWindow *window;
+  Window transient_for_xid;
+} FindByLeaderData;
+
+static void
+find_window_by_client_leader (MetaScreen *screen,
+                              MetaWindow *window,
+                              gpointer user_data)
+{
+    FindByLeaderData *data = (FindByLeaderData *) user_data;
+
+    if (data->window != NULL)
+      {
+        return;
+      }
+
+    if (window->xclient_leader == None)
+      {
+        return;
+      }
+
+    if (window->xclient_leader == data->transient_for_xid)
+      {
+        data->window = window;
+      }
+}
+
+static MetaWindow *
+lookup_parent_by_client_leader (MetaWindow *transient,
+                                Window      xtransient_for)
+{
+    MetaWindow *parent;
+    FindByLeaderData *data;
+
+    data = g_new0 (FindByLeaderData, 1);
+
+    data->transient_for_xid = xtransient_for;
+
+    meta_screen_foreach_window (transient->screen,
+                                (MetaScreenWindowFunc) 
find_window_by_client_leader,
+                                data);
+
+    if (data != NULL)
+    {
+      parent = data->window;
+    }
+
+    g_free (data);
+
+    return parent;
+}
+
 static void
 reload_transient_for (MetaWindow    *window,
                       MetaPropValue *value,
@@ -1649,12 +1703,31 @@
       transient_for = value->v.xwindow;
 
       parent = meta_display_lookup_x_window (window->display, transient_for);
+
       if (!parent)
         {
-          meta_warning (_("Invalid WM_TRANSIENT_FOR window 0x%lx specified "
-                          "for %s.\n"),
-                        transient_for, window->desc);
-          transient_for = None;
+          /* QT programs appear to set the transient-for hint to the program's 
WM_CLIENT_LEADER
+           * instead of the toplevel window's xid.  This causes muffin to 
throw out their transient
+           * state.  Since we know the client leader id of existing windows, 
we can do a quick search
+           * and match up to the correct parent so our stacking and fullscreen 
detection code works
+           * properly */
+
+          parent = lookup_parent_by_client_leader (window, transient_for);
+
+          if (parent)
+            {
+              transient_for = parent->xwindow;
+
+              meta_verbose ("WM_TRANSIENT_FOR was parent window 0x%lx's 
WM_CLIENT_LEADER. "
+                            "using the xid instead for %s.\n", transient_for, 
window->desc);
+            }
+          else
+            {
+              meta_warning (_("Invalid WM_TRANSIENT_FOR window 0x%lx specified 
"
+                              "for %s.\n"),
+                            transient_for, window->desc);
+              transient_for = None;
+            }
         }
 
       /* Make sure there is not a loop */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/muffin-3.8.1/src/core/window.c 
new/muffin-3.8.2/src/core/window.c
--- old/muffin-3.8.1/src/core/window.c  2018-05-06 16:14:22.000000000 +0200
+++ new/muffin-3.8.2/src/core/window.c  2018-06-08 12:50:55.000000000 +0200
@@ -3491,9 +3491,6 @@
   window->tile_mode = META_TILE_NONE;
   normalize_tile_state (window);
 
-  if (maximize_horizontally && maximize_vertically)
-    window->saved_maximize = TRUE;
-
   window->maximized_horizontally =
     window->maximized_horizontally || maximize_horizontally;
   window->maximized_vertically =
@@ -3501,6 +3498,11 @@
   if (maximize_horizontally || maximize_vertically)
     window->force_save_user_rect = FALSE;
 
+  if (window->maximized_horizontally && window->maximized_vertically)
+  {
+    window->saved_maximize = TRUE;
+  }
+
   /* Update the edge constraints */
   update_edge_constraints (window);;
 
@@ -3633,14 +3635,34 @@
   int i;
 
   monitors = g_array_new (FALSE, FALSE, sizeof (int));
-  meta_window_get_outer_rect (window, &window_rect);
+
+  if (meta_window_is_client_decorated (window))
+    {
+      window_rect = window->rect;
+    }
+  else
+    {
+      meta_window_get_outer_rect (window, &window_rect);
+    }
 
   for (i = 0; i < window->screen->n_monitor_infos; i++)
     {
       MetaRectangle *monitor_rect = &window->screen->monitor_infos[i].rect;
 
-      if (meta_rectangle_overlap (&window_rect, monitor_rect))
-        g_array_append_val (monitors, i);
+      if (window->fullscreen)
+        {
+          if (meta_rectangle_contains_rect (&window_rect, monitor_rect))
+            {
+              g_array_append_val (monitors, i);
+            }
+        }
+      else
+        {
+          if (meta_rectangle_overlap (&window_rect, monitor_rect))
+            {
+              g_array_append_val (monitors, i);
+            }
+        }
     }
 
   if (length)
@@ -4878,8 +4900,10 @@
           window->screen->active_workspace != window->workspace)
         meta_window_change_workspace (window, 
window->screen->active_workspace);
 
-      if (old)
+      if (old) {
+        meta_screen_queue_check_fullscreen (window->screen);
         g_signal_emit_by_name (window->screen, "window-left-monitor", 
old->number, window);
+      }
       g_signal_emit_by_name (window->screen, "window-entered-monitor", 
window->monitor->number, window);
 
       g_signal_emit_by_name (window->screen, "window-monitor-changed", window, 
window->monitor->number);
@@ -6594,6 +6618,39 @@
     flags |= META_IS_RESIZE_ACTION;
 
   if (flags & (META_IS_MOVE_ACTION | META_IS_RESIZE_ACTION))
+  {
+    MetaRectangle rect, monitor_rect;
+
+    rect.x = x;
+    rect.y = y;
+    rect.width = width;
+    rect.height = height;
+
+    meta_screen_get_monitor_geometry (window->screen, window->monitor->number, 
&monitor_rect);
+
+    /* Workaround braindead legacy apps that don't know how to
+    * fullscreen themselves properly - don't get fooled by
+    * windows which hide their titlebar when maximized or which are
+    * client decorated; that's not the same as fullscreen, even
+    * if there are no struts making the workarea smaller than
+    * the monitor.
+    */
+    if (meta_prefs_get_force_fullscreen() &&
+        (window->decorated && !meta_window_is_client_decorated (window)) &&
+        meta_rectangle_equal (&rect, &monitor_rect) &&
+        window->has_fullscreen_func &&
+        !window->fullscreen)
+      {
+        /*
+       meta_topic (META_DEBUG_GEOMETRY,
+        */
+        meta_warning (
+                    "Treating resize request of legacy application %s as a "
+                    "fullscreen request\n",
+                    window->desc);
+        meta_window_make_fullscreen_internal (window);
+      }
+
     meta_window_move_resize_internal (window,
                                       flags,
                                       gravity,
@@ -6601,7 +6658,7 @@
                                       y,
                                       width,
                                       height);
-
+  }
   /* window->user_rect exists to allow "snapping-back" the window if a
    * new strut is set (causing the window to move) and then the strut
    * is later removed without the user moving the window in the


Reply via email to