Hello community, here is the log from the commit of package muffin for openSUSE:Factory checked in at 2016-03-16 10:35:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/muffin (Old) and /work/SRC/openSUSE:Factory/.muffin.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "muffin" Changes: -------- --- /work/SRC/openSUSE:Factory/muffin/muffin.changes 2016-01-22 01:03:38.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.muffin.new/muffin.changes 2016-03-16 10:35:07.000000000 +0100 @@ -1,0 +2,20 @@ +Wed Mar 9 18:09:32 UTC 2016 - [email protected] + +- Update to 2.8.5: + * tiling: Account for gtk frame extents when evaluating whether a + c-s-d window can be tiled or not. + * prefs.c: Update keybindings even when the new keybinding is + empty - this prevents old built-in (muffin) keybindings from + continuing to work even after they've been cleared. + * prefs: Don't attach modal dialogs by default. + * cogl wrappers: Perform a sanity check on the width/height + request and clamp the sizes to a maximum of (x) screen size. + * display.c: prevent assertion errors when clicking out of + window menus. + * Disable frame sync when used when OpenGL version used by the + driver is < 3.0. + * meta-sync-ring.c: Simplify openGL version check to only check + the major version number. Make the COGL_DRIVER_GL check a bit + safer. + +------------------------------------------------------------------- Old: ---- muffin-2.8.4.tar.gz New: ---- muffin-2.8.5.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ muffin.spec ++++++ --- /var/tmp/diff_new_pack.RQ6fJg/_old 2016-03-16 10:35:08.000000000 +0100 +++ /var/tmp/diff_new_pack.RQ6fJg/_new 2016-03-16 10:35:08.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package muffin # -# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,7 +20,7 @@ %define sover 0 %define typelib typelib-1_0-MetaMuffin-0_0 Name: muffin -Version: 2.8.4 +Version: 2.8.5 Release: 0 Summary: Cinnamon Desktop default window manager License: GPL-2.0+ and MIT ++++++ muffin-2.8.4.tar.gz -> muffin-2.8.5.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/configure.ac new/muffin-2.8.5/configure.ac --- old/muffin-2.8.4/configure.ac 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/configure.ac 2016-03-07 18:14:38.000000000 +0100 @@ -2,7 +2,7 @@ m4_define([muffin_major_version], [2]) m4_define([muffin_minor_version], [8]) -m4_define([muffin_micro_version], [4]) +m4_define([muffin_micro_version], [5]) 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-2.8.4/debian/changelog new/muffin-2.8.5/debian/changelog --- old/muffin-2.8.4/debian/changelog 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/debian/changelog 2016-03-07 18:14:38.000000000 +0100 @@ -1,3 +1,16 @@ +muffin (2.8.5) rosa; urgency=medium + + [ Michael Webster ] + * tiling: account for gtk frame extents when evaluating whether a c-s-d window can be tiled or not. + * prefs.c: Update keybindings even when the new keybinding is empty - this prevents old built-in (muffin) keybindings from continuing to work even after they've been cleared. + * prefs: don't attach modal dialogs by default + * cogl wrappers: Perform a sanity check on the width/height request and clamp the sizes to a maximum of (x) screen size. + * display.c: prevent assertion errors when clicking out of window menus. + * Disable frame sync when used when OpenGL version used by the driver is < 3.0. + * meta-sync-ring.c: simplify openGL version check to only check the major version number. Make the COGL_DRIVER_GL check a bit safer. + + -- Clement Lefebvre <[email protected]> Mon, 07 Mar 2016 17:13:48 +0000 + muffin (2.8.4) rosa; urgency=medium [ Michael Webster ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/src/compositor/cogl-utils.c new/muffin-2.8.5/src/compositor/cogl-utils.c --- old/muffin-2.8.4/src/compositor/cogl-utils.c 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/src/compositor/cogl-utils.c 2016-03-07 18:14:38.000000000 +0100 @@ -25,6 +25,7 @@ #include <config.h> #endif #include "cogl-utils.h" +#include <gdk/gdk.h> /** * meta_create_color_texture_4ub: @@ -118,6 +119,9 @@ static CoglContext *cogl_context = NULL; static gboolean supports_npot = FALSE; +static gint screen_width = 0; +static gint screen_height = 0; + inline static gboolean hardware_supports_npot_sizes (void) { @@ -131,6 +135,22 @@ return supports_npot; } +inline static void +clamp_sizes (gint *width, + gint *height) +{ + if (screen_width == 0) + { + GdkScreen *screen = gdk_screen_get_default (); + + screen_width = gdk_screen_get_width (screen); + screen_height = gdk_screen_get_height (screen); + } + + *width = MIN (*width, screen_width); + *height = MIN (*height, screen_height); +} + /** * meta_cogl_texture_new_from_data_wrapper: (skip) * @@ -150,6 +170,8 @@ { CoglTexture *texture = NULL; + clamp_sizes (&width, &height); + if (hardware_supports_npot_sizes ()) { texture = COGL_TEXTURE (cogl_texture_2d_new_from_data (cogl_context, width, height, @@ -226,6 +248,8 @@ { CoglTexture *texture = NULL; + clamp_sizes (&width, &height); + if (hardware_supports_npot_sizes ()) { texture = COGL_TEXTURE (cogl_texture_2d_new_with_size (cogl_context, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/src/compositor/meta-sync-ring.c new/muffin-2.8.5/src/compositor/meta-sync-ring.c --- old/muffin-2.8.4/src/compositor/meta-sync-ring.c 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/src/compositor/meta-sync-ring.c 2016-03-07 18:14:38.000000000 +0100 @@ -29,6 +29,7 @@ */ #include <string.h> +#include <stdlib.h> #include <GL/gl.h> #include <GL/glx.h> @@ -161,6 +162,17 @@ { case COGL_DRIVER_GL3: { + + int major, minor; + gboolean version_ok = FALSE; + + meta_gl_get_integerv (GL_MAJOR_VERSION, &major); + meta_gl_get_integerv (GL_MINOR_VERSION, &minor); + + version_ok = (major >= 3); + + g_printerr ("openGL version %d.%d detected (GL3 Cogl Driver)\n", major, minor); + int num_extensions, i; gboolean arb_sync = FALSE; gboolean x11_sync_object = FALSE; @@ -177,12 +189,39 @@ x11_sync_object = TRUE; } - return arb_sync && x11_sync_object; + return version_ok && arb_sync && x11_sync_object; } case COGL_DRIVER_GL: { + gboolean version_ok = FALSE; + + const char *version_string = meta_gl_get_string (GL_VERSION); + + /* From the spec: + + The string returned starts with "<major version>.<minor version>". + Following the minor version, there can be another '.', + then a vendor-specific build number. The string may have more content, + which is completely vendor-specific (thus not a part of the OpenGL standard). + + So, we can split this by . and care only about the first two substrings returned. + Anything else is dumped in the third substring. + */ + + gchar **split = g_strsplit (version_string, ".", 3); + + if (g_strv_length (split) >= 2) + { + g_printerr ("openGL version %s.%s detected (GL Cogl Driver)\n", split[0], split[1]); + + version_ok = (atoi (split[0]) >= 3); + } + + g_strfreev (split); + const char *extensions = meta_gl_get_string (GL_EXTENSIONS); - return (extensions != NULL && + return version_ok && + (extensions != NULL && strstr (extensions, "GL_ARB_sync") != NULL && strstr (extensions, "GL_EXT_x11_sync_object") != NULL); } @@ -215,7 +254,7 @@ if (!check_gl_extensions ()) { - meta_verbose ("MetaSyncRing: couldn't find required GL extensions\n"); + g_printerr ("MetaSyncRing disabled: couldn't find required GL extensions, or the minimum safe openGL version was not met\n"); goto out; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/src/core/constraints.c new/muffin-2.8.5/src/core/constraints.c --- old/muffin-2.8.4/src/core/constraints.c 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/src/core/constraints.c 2016-03-07 18:14:38.000000000 +0100 @@ -204,12 +204,6 @@ ConstraintInfo *info); static void update_onscreen_requirements (MetaWindow *window, ConstraintInfo *info); -static void extend_by_frame (MetaWindow *window, - MetaRectangle *rect, - const MetaFrameBorders *borders); -static void unextend_by_frame (MetaWindow *window, - MetaRectangle *rect, - const MetaFrameBorders *borders); static inline void get_size_limits (const MetaWindow *window, const MetaFrameBorders *borders, @@ -680,7 +674,7 @@ /* The require onscreen/on-single-monitor and titlebar_visible * stuff is relative to the outer window, not the inner */ - extend_by_frame (window, &info->current, info->borders); + meta_window_extend_by_frame (window, &info->current, info->borders); /* Update whether we want future constraint runs to require the * window to be on fully onscreen. @@ -732,51 +726,7 @@ /* Don't forget to restore the position of the window */ - unextend_by_frame (window, &info->current, info->borders); -} - -static void -extend_by_frame (MetaWindow *window, - MetaRectangle *rect, - const MetaFrameBorders *borders) -{ - if (window->frame) - { - rect->x -= borders->visible.left; - rect->y -= borders->visible.top; - rect->width += borders->visible.left + borders->visible.right; - rect->height += borders->visible.top + borders->visible.bottom; - } - else if (meta_window_is_client_decorated (window)) - { - const GtkBorder *extents = &window->custom_frame_extents; - rect->x += extents->left; - rect->y += extents->top; - rect->width -= extents->left + extents->right; - rect->height -= extents->top + extents->bottom; - } -} - -static void -unextend_by_frame (MetaWindow *window, - MetaRectangle *rect, - const MetaFrameBorders *borders) -{ - if (window->frame) - { - rect->x += borders->visible.left; - rect->y += borders->visible.top; - rect->width -= borders->visible.left + borders->visible.right; - rect->height -= borders->visible.top + borders->visible.bottom; - } - else if (meta_window_is_client_decorated (window)) - { - const GtkBorder *extents = &window->custom_frame_extents; - rect->x -= extents->left; - rect->y -= extents->top; - rect->width += extents->left + extents->right; - rect->height += extents->top + extents->bottom; - } + meta_window_unextend_by_frame (window, &info->current, info->borders); } static inline void @@ -915,7 +865,7 @@ } target_size = info->current; - extend_by_frame (window, &target_size, info->borders); + meta_window_extend_by_frame (window, &target_size, info->borders); meta_rectangle_expand_to_snapped_borders (&target_size, &info->entire_monitor, active_workspace_struts, @@ -924,7 +874,7 @@ g_slist_free (snapped_windows_as_struts); } else { target_size = info->current; - extend_by_frame (window, &target_size, info->borders); + meta_window_extend_by_frame (window, &target_size, info->borders); meta_rectangle_expand_to_avoiding_struts (&target_size, &info->entire_monitor, direction, @@ -932,7 +882,7 @@ } } /* Now make target_size = maximized size of client window */ - unextend_by_frame (window, &target_size, info->borders); + meta_window_unextend_by_frame (window, &target_size, info->borders); /* Check min size constraints; max size constraints are ignored for maximized * windows, as per bug 327543. @@ -1087,7 +1037,7 @@ } } - unextend_by_frame (window, &target_size, info->borders); + meta_window_unextend_by_frame (window, &target_size, info->borders); /* Check min size constraints; max size constraints are ignored as for * maximized windows. @@ -1438,7 +1388,7 @@ /* Determine whether constraint applies; exit if it doesn't */ how_far_it_can_be_smushed = info->current; get_size_limits (window, info->borders, TRUE, &min_size, &max_size); - extend_by_frame (window, &info->current, info->borders); + meta_window_extend_by_frame (window, &info->current, info->borders); if (info->action_type != ACTION_MOVE) { @@ -1458,7 +1408,7 @@ &info->current); if (exit_early || constraint_satisfied || check_only) { - unextend_by_frame (window, &info->current, info->borders); + meta_window_unextend_by_frame (window, &info->current, info->borders); return constraint_satisfied; } @@ -1484,7 +1434,7 @@ &info->current); } - unextend_by_frame (window, &info->current, info->borders); + meta_window_unextend_by_frame (window, &info->current, info->borders); return TRUE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/src/core/display.c new/muffin-2.8.5/src/core/display.c --- old/muffin-2.8.4/src/core/display.c 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/src/core/display.c 2016-03-07 18:14:38.000000000 +0100 @@ -1897,7 +1897,8 @@ */ if (!frame_was_receiver) { - if (meta_prefs_get_raise_on_click ()) + if (meta_prefs_get_raise_on_click () && + !meta_ui_window_is_widget (display->active_screen->ui, modified)) meta_window_raise (window); else meta_topic (META_DEBUG_FOCUS, @@ -1906,7 +1907,8 @@ /* Don't focus panels--they must explicitly request focus. * See bug 160470 */ - if (window->type != META_WINDOW_DOCK) + if (window->type != META_WINDOW_DOCK && + !meta_ui_window_is_widget (display->active_screen->ui, modified)) { meta_topic (META_DEBUG_FOCUS, "Focusing %s due to unmodified button %u press (display.c)\n", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/src/core/prefs.c new/muffin-2.8.5/src/core/prefs.c --- old/muffin-2.8.4/src/core/prefs.c 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/src/core/prefs.c 2016-03-07 18:14:38.000000000 +0100 @@ -1959,7 +1959,6 @@ unsigned int keysym; unsigned int keycode; MetaVirtualModifier mods; - gboolean changed = FALSE; MetaKeyCombo *combo; int i; @@ -2008,8 +2007,7 @@ * Changing the key in response to a modification could lead to cyclic calls. */ continue; } - - changed = TRUE; + combo = g_malloc0 (sizeof (MetaKeyCombo)); combo->keysym = keysym; combo->keycode = keycode; @@ -2020,7 +2018,7 @@ "New keybinding for \"%s\" is keysym = 0x%x keycode = 0x%x mods = 0x%x\n", binding->name, keysym, keycode, mods); } - return changed; + return TRUE; } static gboolean diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/src/core/window-private.h new/muffin-2.8.5/src/core/window-private.h --- old/muffin-2.8.4/src/core/window-private.h 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/src/core/window-private.h 2016-03-07 18:14:38.000000000 +0100 @@ -812,4 +812,10 @@ gboolean meta_window_updates_are_frozen (MetaWindow *window); +void meta_window_extend_by_frame (MetaWindow *window, + MetaRectangle *rect, + const MetaFrameBorders *borders); +void meta_window_unextend_by_frame (MetaWindow *window, + MetaRectangle *rect, + const MetaFrameBorders *borders); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/src/core/window.c new/muffin-2.8.5/src/core/window.c --- old/muffin-2.8.4/src/core/window.c 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/src/core/window.c 2016-03-07 18:14:38.000000000 +0100 @@ -3909,9 +3909,7 @@ tile_area.width /= 2; meta_frame_calc_borders (window->frame, &borders); - - tile_area.width -= (borders.visible.left + borders.visible.right); - tile_area.height -= (borders.visible.top + borders.visible.bottom); + meta_window_unextend_by_frame (window, &tile_area, &borders); return tile_area.width >= window->size_hints.min_width && tile_area.height >= window->size_hints.min_height; @@ -3933,9 +3931,7 @@ tile_area.height /= 2; meta_frame_calc_borders (window->frame, &borders); - - tile_area.width -= (borders.visible.left + borders.visible.right); - tile_area.height -= (borders.visible.top + borders.visible.bottom); + meta_window_unextend_by_frame (window, &tile_area, &borders); return tile_area.width >= window->size_hints.min_width && tile_area.height >= window->size_hints.min_height; @@ -3958,9 +3954,7 @@ tile_area.height /= 2; meta_frame_calc_borders (window->frame, &borders); - - tile_area.width -= (borders.visible.left + borders.visible.right); - tile_area.height -= (borders.visible.top + borders.visible.bottom); + meta_window_unextend_by_frame (window, &tile_area, &borders); return tile_area.width >= window->size_hints.min_width && tile_area.height >= window->size_hints.min_height; @@ -9495,6 +9489,9 @@ if (window->tile_mode != META_TILE_NONE) { get_size_limits (window, NULL, FALSE, &min_size, &max_size); meta_window_get_current_tile_area (window, &target_size); + MetaFrameBorders borders; + meta_frame_calc_borders (window->frame, &borders); + meta_window_unextend_by_frame (window, &target_size, &borders); hminbad = target_size.width < min_size.width; vminbad = target_size.height < min_size.height; } @@ -10550,6 +10547,50 @@ return window->has_custom_frame_extents; } +void +meta_window_extend_by_frame (MetaWindow *window, + MetaRectangle *rect, + const MetaFrameBorders *borders) +{ + if (window->frame) + { + rect->x -= borders->visible.left; + rect->y -= borders->visible.top; + rect->width += borders->visible.left + borders->visible.right; + rect->height += borders->visible.top + borders->visible.bottom; + } + else if (meta_window_is_client_decorated (window)) + { + const GtkBorder *extents = &window->custom_frame_extents; + rect->x += extents->left; + rect->y += extents->top; + rect->width -= extents->left + extents->right; + rect->height -= extents->top + extents->bottom; + } +} + +void +meta_window_unextend_by_frame (MetaWindow *window, + MetaRectangle *rect, + const MetaFrameBorders *borders) +{ + if (window->frame) + { + rect->x += borders->visible.left; + rect->y += borders->visible.top; + rect->width -= borders->visible.left + borders->visible.right; + rect->height -= borders->visible.top + borders->visible.bottom; + } + else if (meta_window_is_client_decorated (window)) + { + const GtkBorder *extents = &window->custom_frame_extents; + rect->x -= extents->left; + rect->y -= extents->top; + rect->width += extents->left + extents->right; + rect->height += extents->top + extents->bottom; + } +} + LOCAL_SYMBOL void meta_window_refresh_resize_popup (MetaWindow *window) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/muffin-2.8.4/src/org.cinnamon.muffin.gschema.xml.in new/muffin-2.8.5/src/org.cinnamon.muffin.gschema.xml.in --- old/muffin-2.8.4/src/org.cinnamon.muffin.gschema.xml.in 2015-11-20 18:26:31.000000000 +0100 +++ new/muffin-2.8.5/src/org.cinnamon.muffin.gschema.xml.in 2016-03-07 18:14:38.000000000 +0100 @@ -10,7 +10,7 @@ gettext-domain="@GETTEXT_DOMAIN"> <key name="attach-modal-dialogs" type="b"> - <default>true</default> + <default>false</default> <_summary>Attach modal dialogs</_summary> <_description> When true, instead of having independent titlebars, modal dialogs
