Compare commits
	
		
			15 Commits
		
	
	
		
			3.12.1-way
			...
			gnome-3-0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | bc34f0911b | ||
|   | f39a00e1e7 | ||
|   | 1e93ff79d8 | ||
|   | 4fc474f264 | ||
|   | f1b742d8b7 | ||
|   | 75af6fc40c | ||
|   | bbfcde1caa | ||
|   | 31e6cdf345 | ||
|   | c8aaa5e33e | ||
|   | 65aa3e3927 | ||
|   | b192771b93 | ||
|   | c1977b6532 | ||
|   | 50d1b53267 | ||
|   | cbec96a62f | ||
|   | a28a5749db | 
							
								
								
									
										32
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,35 @@ | ||||
| 3.0.2.1 | ||||
| ======= | ||||
| * When saving the session, use the "program name" rather than | ||||
|   harcoding mutter, fixing session saving for gnome-shell [Matthias] | ||||
|   https://bugzilla.gnome.org/show_bug.cgi?id=648828  | ||||
|  | ||||
| Contributors: | ||||
|  Matthias Clasen | ||||
|  | ||||
| 3.0.2 | ||||
| ===== | ||||
|  | ||||
| * Fix a crash when running without XKB support [Adam] | ||||
|   https://bugzilla.gnome.org/show_bug.cgi?id=647777 | ||||
| * Fix smallish memory leaks [Colin] | ||||
|   https://bugzilla.gnome.org/show_bug.cgi?id=649500 | ||||
|   https://bugzilla.gnome.org/show_bug.cgi?id=649504 | ||||
| * Ignore mirrored monitors when listing monitors, fixing | ||||
|   drag-and-drop problems in GNOME Shell [Owen] | ||||
|   https://bugzilla.gnome.org/show_bug.cgi?id=649299 | ||||
| * Don't allow side-by-side tiling of non-maximizable windows | ||||
|   like dialogs and utility windows [Dan] | ||||
| * Fix interaction of _NET_WM_WINDOW_OPACITY with window effects, | ||||
|   making it work again with GNOME Shell | ||||
|   https://bugzilla.gnome.org/show_bug.cgi?id=648613 | ||||
|  | ||||
| Contributors: | ||||
|  Adam Jackson, Colin Walters, Dan Winship | ||||
|  | ||||
| Translations: | ||||
|  Abduxukur Abdurixit [ug] | ||||
|  | ||||
| 3.0.1 | ||||
| ===== | ||||
|  | ||||
|   | ||||
| @@ -2,7 +2,7 @@ AC_PREREQ(2.50) | ||||
|  | ||||
| m4_define([mutter_major_version], [3]) | ||||
| m4_define([mutter_minor_version], [0]) | ||||
| m4_define([mutter_micro_version], [1]) | ||||
| m4_define([mutter_micro_version], [2.1]) | ||||
|  | ||||
| m4_define([mutter_version], | ||||
|           [mutter_major_version.mutter_minor_version.mutter_micro_version]) | ||||
|   | ||||
							
								
								
									
										5581
									
								
								po/ca@valencia.po
									
									
									
									
									
								
							
							
						
						
									
										5581
									
								
								po/ca@valencia.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1316
									
								
								po/sr@latin.po
									
									
									
									
									
								
							
							
						
						
									
										1316
									
								
								po/sr@latin.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -411,8 +411,6 @@ meta_window_actor_constructed (GObject *object) | ||||
|   if (format && format->type == PictTypeDirect && format->direct.alphaMask) | ||||
|     priv->argb32 = TRUE; | ||||
|  | ||||
|   meta_window_actor_update_opacity (self); | ||||
|  | ||||
|   if (!priv->actor) | ||||
|     { | ||||
|       priv->actor = meta_shaped_texture_new (); | ||||
| @@ -442,7 +440,7 @@ meta_window_actor_constructed (GObject *object) | ||||
|       clutter_actor_raise_top (priv->actor); | ||||
|     } | ||||
|  | ||||
|  | ||||
|   meta_window_actor_update_opacity (self); | ||||
|   meta_window_actor_update_shape (self, priv->shaped); | ||||
| } | ||||
|  | ||||
| @@ -725,7 +723,7 @@ meta_window_actor_paint (ClutterActor *actor) | ||||
|                          params.y_offset + shape_bounds.y, | ||||
|                          shape_bounds.width, | ||||
|                          shape_bounds.height, | ||||
|                          (clutter_actor_get_paint_opacity (actor) * params.opacity) / 255, | ||||
|                          (clutter_actor_get_paint_opacity (actor) * params.opacity * priv->opacity) / (255 * 255), | ||||
|                          priv->shadow_clip); | ||||
|     } | ||||
|  | ||||
| @@ -1690,7 +1688,7 @@ meta_window_actor_get_obscured_region (MetaWindowActor *self) | ||||
| { | ||||
|   MetaWindowActorPrivate *priv = self->priv; | ||||
|  | ||||
|   if (!priv->argb32 && priv->back_pixmap) | ||||
|   if (!priv->argb32 && priv->opacity == 0xff && priv->back_pixmap) | ||||
|     { | ||||
|       if (priv->shaped) | ||||
|         return priv->shape_region; | ||||
| @@ -2147,5 +2145,5 @@ meta_window_actor_update_opacity (MetaWindowActor *self) | ||||
|     opacity = 255; | ||||
|  | ||||
|   self->priv->opacity = opacity; | ||||
|   clutter_actor_set_opacity (CLUTTER_ACTOR (self), opacity); | ||||
|   clutter_actor_set_opacity (self->priv->actor, opacity); | ||||
| } | ||||
|   | ||||
| @@ -248,7 +248,6 @@ expand_region_inverse (cairo_region_t *region, | ||||
|   MetaRegionBuilder builder; | ||||
|   MetaRegionIterator iter; | ||||
|   cairo_rectangle_int_t extents; | ||||
|   cairo_region_t *chunk; | ||||
|  | ||||
|   int last_x; | ||||
|  | ||||
| @@ -268,16 +267,11 @@ expand_region_inverse (cairo_region_t *region, | ||||
|                      extents.x, extents.y + extents.height, extents.width, 1, | ||||
|                      x_amount, y_amount, flip); | ||||
|  | ||||
|   chunk = NULL; | ||||
|  | ||||
|   last_x = extents.x; | ||||
|   for (meta_region_iterator_init (&iter, region); | ||||
|        !meta_region_iterator_at_end (&iter); | ||||
|        meta_region_iterator_next (&iter)) | ||||
|     { | ||||
|       if (chunk == NULL) | ||||
|         chunk = cairo_region_create (); | ||||
|  | ||||
|       if (iter.rectangle.x > last_x) | ||||
|         add_expanded_rect (&builder, | ||||
|                            last_x, iter.rectangle.y, | ||||
|   | ||||
| @@ -76,6 +76,8 @@ compute_above_tab_keycode (Display *xdisplay) | ||||
|   keyboard = XkbGetKeyboard (xdisplay, | ||||
|                              XkbGBN_ClientSymbolsMask | XkbGBN_KeyNamesMask | XkbGBN_GeometryMask, | ||||
|                              XkbUseCoreKbd); | ||||
|   if (!keyboard) | ||||
|     return best_keycode; | ||||
|  | ||||
|   geometry = keyboard->geom; | ||||
|  | ||||
|   | ||||
| @@ -349,6 +349,43 @@ set_wm_icon_size_hint (MetaScreen *screen) | ||||
| #undef N_VALS | ||||
| } | ||||
|  | ||||
| /* The list of monitors reported by the windowing system might include | ||||
|  * mirrored monitors with identical bounds. Since mirrored monitors | ||||
|  * shouldn't be treated as separate monitors for most purposes, we | ||||
|  * filter them out here. (We ignore the possibility of partially | ||||
|  * overlapping monitors because they are rare and it's hard to come | ||||
|  * up with any sensible interpretation.) | ||||
|  */ | ||||
| static void | ||||
| filter_mirrored_monitors (MetaScreen *screen) | ||||
| { | ||||
|   int i, j; | ||||
|  | ||||
|   /* Currently always true and simplifies things */ | ||||
|   g_assert (screen->primary_monitor_index == 0); | ||||
|  | ||||
|   for (i = 1; i < screen->n_monitor_infos; i++) | ||||
|     { | ||||
|       /* In case we've filtered previous monitors */ | ||||
|       screen->monitor_infos[i].number = i; | ||||
|  | ||||
|       for (j = 0; j < i; j++) | ||||
|         { | ||||
|           if (meta_rectangle_equal (&screen->monitor_infos[i].rect, | ||||
|                                     &screen->monitor_infos[j].rect)) | ||||
|             { | ||||
|               memmove (&screen->monitor_infos[i], | ||||
|                        &screen->monitor_infos[i + 1], | ||||
|                        (screen->n_monitor_infos - i - 1) * sizeof (MetaMonitorInfo)); | ||||
|               screen->n_monitor_infos--; | ||||
|               i--; | ||||
|  | ||||
|               continue; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| static void | ||||
| reload_monitor_infos (MetaScreen *screen) | ||||
| { | ||||
| @@ -538,6 +575,8 @@ reload_monitor_infos (MetaScreen *screen) | ||||
|       screen->monitor_infos[0].rect = screen->rect; | ||||
|     } | ||||
|  | ||||
|   filter_mirrored_monitors (screen); | ||||
|  | ||||
|   g_assert (screen->n_monitor_infos > 0); | ||||
|   g_assert (screen->monitor_infos != NULL); | ||||
| } | ||||
|   | ||||
| @@ -308,13 +308,16 @@ meta_session_init (const char *previous_client_id, | ||||
|      */ | ||||
|     char hint = SmRestartIfRunning; | ||||
|     char priority = 20; /* low to run before other apps */ | ||||
|      | ||||
|     const char *prgname; | ||||
|  | ||||
|     prgname = g_get_prgname (); | ||||
|  | ||||
|     prop1.name = SmProgram; | ||||
|     prop1.type = SmARRAY8; | ||||
|     prop1.num_vals = 1; | ||||
|     prop1.vals = &prop1val; | ||||
|     prop1val.value = "mutter"; | ||||
|     prop1val.length = strlen ("mutter"); | ||||
|     prop1val.value = (char *)prgname; | ||||
|     prop1val.length = strlen (prgname); | ||||
|  | ||||
|     /* twm sets getuid() for this, but the SM spec plainly | ||||
|      * says pw_name, twm is on crack | ||||
| @@ -573,6 +576,9 @@ set_clone_restart_commands (void) | ||||
|   char *discardv[10]; | ||||
|   int i; | ||||
|   SmProp prop1, prop2, prop3, *props[3]; | ||||
|   const char *prgname; | ||||
|  | ||||
|   prgname = g_get_prgname (); | ||||
|    | ||||
|   /* Restart (use same client ID) */ | ||||
|    | ||||
| @@ -582,7 +588,7 @@ set_clone_restart_commands (void) | ||||
|   g_return_if_fail (client_id); | ||||
|    | ||||
|   i = 0; | ||||
|   restartv[i] = "mutter"; | ||||
|   restartv[i] = (char *)prgname; | ||||
|   ++i; | ||||
|   restartv[i] = "--sm-client-id"; | ||||
|   ++i; | ||||
| @@ -603,7 +609,7 @@ set_clone_restart_commands (void) | ||||
|   /* Clone (no client ID) */ | ||||
|    | ||||
|   i = 0; | ||||
|   clonev[i] = "mutter"; | ||||
|   clonev[i] = (char *)prgname; | ||||
|   ++i; | ||||
|   clonev[i] = NULL; | ||||
|  | ||||
|   | ||||
| @@ -3450,13 +3450,25 @@ meta_window_tile (MetaWindow *window) | ||||
|     } | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| meta_window_can_tile_maximized (MetaWindow *window) | ||||
| { | ||||
|   if (!META_WINDOW_ALLOWS_RESIZE (window)) | ||||
|     return FALSE; | ||||
|  | ||||
|   if (!window->has_maximize_func) | ||||
|     return FALSE; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| meta_window_can_tile_side_by_side (MetaWindow *window) | ||||
| { | ||||
|   const MetaMonitorInfo *monitor; | ||||
|   MetaRectangle tile_area; | ||||
|  | ||||
|   if (!META_WINDOW_ALLOWS_RESIZE (window)) | ||||
|   if (!meta_window_can_tile_maximized (window)) | ||||
|     return FALSE; | ||||
|  | ||||
|   monitor = meta_screen_get_current_monitor (window->screen); | ||||
| @@ -3482,18 +3494,6 @@ meta_window_can_tile_side_by_side (MetaWindow *window) | ||||
|          tile_area.height >= window->size_hints.min_height; | ||||
| } | ||||
|  | ||||
| static gboolean | ||||
| meta_window_can_tile_maximized (MetaWindow *window) | ||||
| { | ||||
|   if (!META_WINDOW_ALLOWS_RESIZE (window)) | ||||
|     return FALSE; | ||||
|  | ||||
|   if (!window->has_maximize_func) | ||||
|     return FALSE; | ||||
|  | ||||
|   return TRUE; | ||||
| } | ||||
|  | ||||
| static void | ||||
| unmaximize_window_before_freeing (MetaWindow        *window) | ||||
| { | ||||
|   | ||||
| @@ -2639,11 +2639,13 @@ meta_theme_replace_constants (MetaTheme   *theme, | ||||
|         { | ||||
|           if (meta_theme_lookup_int_constant (theme, t->d.v.name, &ival)) | ||||
|             { | ||||
|               g_free (t->d.v.name); | ||||
|               t->type = POS_TOKEN_INT; | ||||
|               t->d.i.val = ival; | ||||
|             } | ||||
|           else if (meta_theme_lookup_float_constant (theme, t->d.v.name, &dval)) | ||||
|             { | ||||
|               g_free (t->d.v.name); | ||||
|               t->type = POS_TOKEN_DOUBLE; | ||||
|               t->d.d.val = dval; | ||||
|             } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user