Compare commits
	
		
			9 Commits
		
	
	
		
			3.15.92
			...
			3.10.4-way
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 7abc2762e1 | ||
|   | d59472bb6b | ||
|   | 28d2f36b72 | ||
|   | 766181eeae | ||
|   | 5dd2e4bc72 | ||
|   | 93ee413df2 | ||
|   | 06186639fc | ||
|   | 5d4138b933 | ||
|   | bafbbc62e2 | 
							
								
								
									
										12
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,15 @@ | ||||
| 3.10.4 | ||||
| ====== | ||||
| * Expose MetaWindow:skip-taskbar property [Florian; #723307] | ||||
| * Fix legacy tray icons showing up blank [Adel; #721596] | ||||
| * Fix configuration of cloned monitors [Adel; #710610] | ||||
| * Misc. bug fixes [Jasper, Adel, Giovanni; #720630, #723468, #724257, #724258, | ||||
|   #724364] | ||||
|  | ||||
| Contributors: | ||||
|   Giovanni Campagna, Adel Gadllah, Ryan Lortie, Florian Müllner, | ||||
|   Jasper St. Pierre | ||||
|  | ||||
| 3.10.1 | ||||
| ====== | ||||
| * Don't apply fullscreen workarounds to CSD windows [Giovanni; #708718] | ||||
|   | ||||
| @@ -2,7 +2,7 @@ AC_PREREQ(2.50) | ||||
|  | ||||
| m4_define([mutter_major_version], [3]) | ||||
| m4_define([mutter_minor_version], [10]) | ||||
| m4_define([mutter_micro_version], [1]) | ||||
| m4_define([mutter_micro_version], [4]) | ||||
|  | ||||
| m4_define([mutter_version], | ||||
|           [mutter_major_version.mutter_minor_version.mutter_micro_version]) | ||||
|   | ||||
| @@ -767,8 +767,12 @@ meta_window_actor_get_paint_volume (ClutterActor       *actor, | ||||
|       gdk_rectangle_union (&bounds, &shadow_bounds, &bounds); | ||||
|     } | ||||
|  | ||||
|   if (priv->unobscured_region) | ||||
|     cairo_region_intersect_rectangle (priv->unobscured_region, &bounds); | ||||
|   if (priv->unobscured_region && !clutter_actor_has_mapped_clones (actor)) | ||||
|     { | ||||
|       cairo_rectangle_int_t unobscured_bounds; | ||||
|       cairo_region_get_extents (priv->unobscured_region, &unobscured_bounds); | ||||
|       gdk_rectangle_intersect (&bounds, &unobscured_bounds, &bounds); | ||||
|     } | ||||
|  | ||||
|   origin.x = bounds.x; | ||||
|   origin.y = bounds.y; | ||||
| @@ -1438,6 +1442,12 @@ meta_window_actor_destroy (MetaWindowActor *self) | ||||
|   window_type = meta_window_get_window_type (window); | ||||
|   meta_window_set_compositor_private (window, NULL); | ||||
|  | ||||
|   if (priv->send_frame_messages_timer != 0) | ||||
|     { | ||||
|       g_source_remove (priv->send_frame_messages_timer); | ||||
|       priv->send_frame_messages_timer = 0; | ||||
|     } | ||||
|  | ||||
|   /* | ||||
|    * We remove the window from internal lookup hashes and thus any other | ||||
|    * unmap events etc fail | ||||
|   | ||||
| @@ -537,7 +537,7 @@ make_watch (MetaIdleMonitor           *monitor, | ||||
|           watch->timeout_source = source; | ||||
|         } | ||||
|     } | ||||
|   else | ||||
|   else if (monitor->user_active_alarm != None) | ||||
|     { | ||||
|       if (timeout_msec != 0) | ||||
|         { | ||||
|   | ||||
| @@ -290,7 +290,7 @@ make_logical_config (MetaMonitorManager *manager) | ||||
|  | ||||
|       for (j = 0; j < monitor_infos->len; j++) | ||||
|         { | ||||
|           MetaMonitorInfo *info = &g_array_index (monitor_infos, MetaMonitorInfo, i); | ||||
|           MetaMonitorInfo *info = &g_array_index (monitor_infos, MetaMonitorInfo, j); | ||||
|           if (meta_rectangle_equal (&crtc->rect, | ||||
|                                     &info->rect)) | ||||
|             { | ||||
|   | ||||
| @@ -391,6 +391,8 @@ int | ||||
| meta_screen_monitor_index_to_xinerama_index (MetaScreen *screen, | ||||
|                                              int         index) | ||||
| { | ||||
|   g_return_val_if_fail (index >= 0 && index < screen->n_monitor_infos, -1); | ||||
|  | ||||
|   meta_screen_ensure_xinerama_indices (screen); | ||||
|  | ||||
|   return screen->monitor_infos[index].xinerama_index; | ||||
|   | ||||
| @@ -177,6 +177,7 @@ enum { | ||||
|   PROP_USER_TIME, | ||||
|   PROP_DEMANDS_ATTENTION, | ||||
|   PROP_URGENT, | ||||
|   PROP_SKIP_TASKBAR, | ||||
|   PROP_MUTTER_HINTS, | ||||
|   PROP_APPEARS_FOCUSED, | ||||
|   PROP_RESIZEABLE, | ||||
| @@ -313,6 +314,9 @@ meta_window_get_property(GObject         *object, | ||||
|     case PROP_URGENT: | ||||
|       g_value_set_boolean (value, win->wm_hints_urgent); | ||||
|       break; | ||||
|     case PROP_SKIP_TASKBAR: | ||||
|       g_value_set_boolean (value, win->skip_taskbar); | ||||
|       break; | ||||
|     case PROP_MUTTER_HINTS: | ||||
|       g_value_set_string (value, win->mutter_hints); | ||||
|       break; | ||||
| @@ -473,6 +477,14 @@ meta_window_class_init (MetaWindowClass *klass) | ||||
|                                                          FALSE, | ||||
|                                                          G_PARAM_READABLE)); | ||||
|  | ||||
|   g_object_class_install_property (object_class, | ||||
|                                    PROP_SKIP_TASKBAR, | ||||
|                                    g_param_spec_boolean ("skip-taskbar", | ||||
|                                                          "Skip taskbar", | ||||
|                                                          "Whether the skip-taskbar flag of WM_HINTS is set", | ||||
|                                                          FALSE, | ||||
|                                                          G_PARAM_READABLE)); | ||||
|  | ||||
|   g_object_class_install_property (object_class, | ||||
|                                    PROP_MUTTER_HINTS, | ||||
|                                    g_param_spec_string ("mutter-hints", | ||||
| @@ -2229,23 +2241,35 @@ set_net_wm_state (MetaWindow *window) | ||||
|  | ||||
|   if (window->fullscreen) | ||||
|     { | ||||
|       data[0] = meta_screen_monitor_index_to_xinerama_index (window->screen, | ||||
|                                                              window->fullscreen_monitors[0]); | ||||
|       data[1] = meta_screen_monitor_index_to_xinerama_index (window->screen, | ||||
|                                                              window->fullscreen_monitors[1]); | ||||
|       data[2] = meta_screen_monitor_index_to_xinerama_index (window->screen, | ||||
|                                                              window->fullscreen_monitors[2]); | ||||
|       data[3] = meta_screen_monitor_index_to_xinerama_index (window->screen, | ||||
|                                                              window->fullscreen_monitors[3]); | ||||
|       if (window->fullscreen_monitors[0] >= 0) | ||||
|         { | ||||
|           data[0] = meta_screen_monitor_index_to_xinerama_index (window->screen, | ||||
|                                                                  window->fullscreen_monitors[0]); | ||||
|           data[1] = meta_screen_monitor_index_to_xinerama_index (window->screen, | ||||
|                                                                  window->fullscreen_monitors[1]); | ||||
|           data[2] = meta_screen_monitor_index_to_xinerama_index (window->screen, | ||||
|                                                                  window->fullscreen_monitors[2]); | ||||
|           data[3] = meta_screen_monitor_index_to_xinerama_index (window->screen, | ||||
|                                                                  window->fullscreen_monitors[3]); | ||||
|  | ||||
|       meta_verbose ("Setting _NET_WM_FULLSCREEN_MONITORS\n"); | ||||
|       meta_error_trap_push (window->display); | ||||
|       XChangeProperty (window->display->xdisplay, | ||||
|                        window->xwindow, | ||||
|                        window->display->atom__NET_WM_FULLSCREEN_MONITORS, | ||||
|                        XA_CARDINAL, 32, PropModeReplace, | ||||
|                        (guchar*) data, 4); | ||||
|       meta_error_trap_pop (window->display); | ||||
|           meta_verbose ("Setting _NET_WM_FULLSCREEN_MONITORS\n"); | ||||
|           meta_error_trap_push (window->display); | ||||
|           XChangeProperty (window->display->xdisplay, | ||||
|                            window->xwindow, | ||||
|                            window->display->atom__NET_WM_FULLSCREEN_MONITORS, | ||||
|                            XA_CARDINAL, 32, PropModeReplace, | ||||
|                            (guchar*) data, 4); | ||||
|           meta_error_trap_pop (window->display); | ||||
|         } | ||||
|       else | ||||
|         { | ||||
|           meta_verbose ("Clearing _NET_WM_FULLSCREEN_MONITORS\n"); | ||||
|           meta_error_trap_push (window->display); | ||||
|           XDeleteProperty (window->display->xdisplay, | ||||
|                            window->xwindow, | ||||
|                            window->display->atom__NET_WM_FULLSCREEN_MONITORS); | ||||
|           meta_error_trap_pop (window->display); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -8029,9 +8053,9 @@ meta_window_update_input_region_x11 (MetaWindow *window) | ||||
|           if (n_rects > 1 || | ||||
|               (n_rects == 1 && | ||||
|                (rects[0].x != x_bounding || | ||||
|                 rects[1].y != y_bounding || | ||||
|                 rects[2].width != w_bounding || | ||||
|                 rects[3].height != h_bounding))) | ||||
|                 rects[0].y != y_bounding || | ||||
|                 rects[0].width != w_bounding || | ||||
|                 rects[0].height != h_bounding))) | ||||
|             region = region_create_from_x_rectangles (rects, n_rects); | ||||
|  | ||||
|           XFree (rects); | ||||
| @@ -8672,6 +8696,7 @@ recalc_window_features (MetaWindow *window) | ||||
|   gboolean old_has_resize_func; | ||||
|   gboolean old_has_shade_func; | ||||
|   gboolean old_always_sticky; | ||||
|   gboolean old_skip_taskbar; | ||||
|  | ||||
|   old_has_close_func = window->has_close_func; | ||||
|   old_has_minimize_func = window->has_minimize_func; | ||||
| @@ -8679,6 +8704,7 @@ recalc_window_features (MetaWindow *window) | ||||
|   old_has_resize_func = window->has_resize_func; | ||||
|   old_has_shade_func = window->has_shade_func; | ||||
|   old_always_sticky = window->always_sticky; | ||||
|   old_skip_taskbar = window->skip_taskbar; | ||||
|  | ||||
|   /* Use MWM hints initially */ | ||||
|   if (window->client_type == META_WINDOW_CLIENT_TYPE_X11) | ||||
| @@ -8873,6 +8899,9 @@ recalc_window_features (MetaWindow *window) | ||||
|               window->skip_taskbar, | ||||
|               window->skip_pager); | ||||
|  | ||||
|   if (old_skip_taskbar != window->skip_taskbar) | ||||
|     g_object_notify (G_OBJECT (window), "skip-taskbar"); | ||||
|  | ||||
|   /* FIXME: | ||||
|    * Lame workaround for recalc_window_features | ||||
|    * being used overzealously. The fix is to | ||||
|   | ||||
		Reference in New Issue
	
	Block a user