Compare commits
	
		
			1 Commits
		
	
	
		
			3.29.3
			...
			wip/fullsc
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 88e466f8a8 | 
| @@ -3195,12 +3195,23 @@ meta_window_make_fullscreen (MetaWindow  *window) | ||||
|  | ||||
|   if (!window->fullscreen) | ||||
|     { | ||||
|       meta_window_make_fullscreen_internal (window); | ||||
|       MetaRectangle old_frame_rect, old_buffer_rect; | ||||
|  | ||||
|       meta_window_get_frame_rect (window, &old_frame_rect); | ||||
|       meta_window_get_buffer_rect (window, &old_buffer_rect); | ||||
|  | ||||
|       meta_window_make_fullscreen_internal (window); | ||||
|       meta_window_move_resize_internal (window, | ||||
|                                         META_MOVE_RESIZE_MOVE_ACTION | META_MOVE_RESIZE_RESIZE_ACTION | META_MOVE_RESIZE_STATE_CHANGED, | ||||
|                                         (META_MOVE_RESIZE_MOVE_ACTION | | ||||
|                                          META_MOVE_RESIZE_RESIZE_ACTION | | ||||
|                                          META_MOVE_RESIZE_STATE_CHANGED | | ||||
|                                          META_MOVE_RESIZE_DONT_SYNC_COMPOSITOR), | ||||
|                                         NorthWestGravity, | ||||
|                                         window->unconstrained_rect); | ||||
|  | ||||
|       meta_compositor_size_change_window (window->display->compositor, | ||||
|                                           window, META_SIZE_CHANGE_FULLSCREEN, | ||||
|                                           &old_frame_rect, &old_buffer_rect); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -3211,7 +3222,7 @@ meta_window_unmake_fullscreen (MetaWindow  *window) | ||||
|  | ||||
|   if (window->fullscreen) | ||||
|     { | ||||
|       MetaRectangle target_rect; | ||||
|       MetaRectangle old_frame_rect, old_buffer_rect, target_rect; | ||||
|  | ||||
|       meta_topic (META_DEBUG_WINDOW_OPS, | ||||
|                   "Unfullscreening %s\n", window->desc); | ||||
| @@ -3220,6 +3231,8 @@ meta_window_unmake_fullscreen (MetaWindow  *window) | ||||
|       target_rect = window->saved_rect; | ||||
|  | ||||
|       meta_window_frame_size_changed (window); | ||||
|       meta_window_get_frame_rect (window, &old_frame_rect); | ||||
|       meta_window_get_buffer_rect (window, &old_buffer_rect); | ||||
|  | ||||
|       /* Window's size hints may have changed while maximized, making | ||||
|        * saved_rect invalid.  #329152 | ||||
| @@ -3234,10 +3247,17 @@ meta_window_unmake_fullscreen (MetaWindow  *window) | ||||
|       set_net_wm_state (window); | ||||
|  | ||||
|       meta_window_move_resize_internal (window, | ||||
|                                         META_MOVE_RESIZE_MOVE_ACTION | META_MOVE_RESIZE_RESIZE_ACTION | META_MOVE_RESIZE_STATE_CHANGED, | ||||
|                                         (META_MOVE_RESIZE_MOVE_ACTION | | ||||
|                                          META_MOVE_RESIZE_RESIZE_ACTION | | ||||
|                                          META_MOVE_RESIZE_STATE_CHANGED | | ||||
|                                          META_MOVE_RESIZE_DONT_SYNC_COMPOSITOR), | ||||
|                                         NorthWestGravity, | ||||
|                                         target_rect); | ||||
|  | ||||
|       meta_compositor_size_change_window (window->display->compositor, | ||||
|                                           window, META_SIZE_CHANGE_UNFULLSCREEN, | ||||
|                                           &old_frame_rect, &old_buffer_rect); | ||||
|  | ||||
|       meta_window_update_layer (window); | ||||
|  | ||||
|       g_object_notify_by_pspec (G_OBJECT (window), obj_props[PROP_FULLSCREEN]); | ||||
|   | ||||
| @@ -57,6 +57,8 @@ typedef enum | ||||
| typedef enum { | ||||
|   META_SIZE_CHANGE_MAXIMIZE, | ||||
|   META_SIZE_CHANGE_UNMAXIMIZE, | ||||
|   META_SIZE_CHANGE_FULLSCREEN, | ||||
|   META_SIZE_CHANGE_UNFULLSCREEN | ||||
| } MetaSizeChange; | ||||
|  | ||||
| MetaCompositor *meta_compositor_new     (MetaDisplay    *display); | ||||
|   | ||||
| @@ -2000,12 +2000,16 @@ meta_window_move_resize_request (MetaWindow *window, | ||||
|   if (flags & (META_MOVE_RESIZE_MOVE_ACTION | META_MOVE_RESIZE_RESIZE_ACTION)) | ||||
|     { | ||||
|       MetaRectangle rect, monitor_rect; | ||||
|       MetaRectangle old_frame_rect, old_buffer_rect; | ||||
|       gboolean legacy_fullscreen; | ||||
|  | ||||
|       rect.x = x; | ||||
|       rect.y = y; | ||||
|       rect.width = width; | ||||
|       rect.height = height; | ||||
|  | ||||
|       meta_window_get_frame_rect (window, &old_frame_rect); | ||||
|       meta_window_get_buffer_rect (window, &old_buffer_rect); | ||||
|       meta_screen_get_monitor_geometry (window->screen, window->monitor->number, &monitor_rect); | ||||
|  | ||||
|       /* Workaround braindead legacy apps that don't know how to | ||||
| @@ -2015,12 +2019,14 @@ meta_window_move_resize_request (MetaWindow *window, | ||||
|        * if there are no struts making the workarea smaller than | ||||
|        * the monitor. | ||||
|        */ | ||||
|       if (meta_prefs_get_force_fullscreen() && | ||||
|           !window->hide_titlebar_when_maximized && | ||||
|           (window->decorated || !meta_window_is_client_decorated (window)) && | ||||
|           meta_rectangle_equal (&rect, &monitor_rect) && | ||||
|           window->has_fullscreen_func && | ||||
|           !window->fullscreen) | ||||
|       legacy_fullscreen = (meta_prefs_get_force_fullscreen() && | ||||
|                            !window->hide_titlebar_when_maximized && | ||||
|                            (window->decorated || !meta_window_is_client_decorated (window)) && | ||||
|                            meta_rectangle_equal (&rect, &monitor_rect) && | ||||
|                            window->has_fullscreen_func && | ||||
|                            !window->fullscreen); | ||||
|  | ||||
|       if (legacy_fullscreen) | ||||
|         { | ||||
|           /* | ||||
|           meta_topic (META_DEBUG_GEOMETRY, | ||||
| @@ -2030,11 +2036,17 @@ meta_window_move_resize_request (MetaWindow *window, | ||||
|                       "fullscreen request\n", | ||||
|                       window->desc); | ||||
|           meta_window_make_fullscreen_internal (window); | ||||
|           flags |= META_MOVE_RESIZE_DONT_SYNC_COMPOSITOR; | ||||
|         } | ||||
|  | ||||
|       adjust_for_gravity (window, TRUE, gravity, &rect); | ||||
|       meta_window_client_rect_to_frame_rect (window, &rect, &rect); | ||||
|       meta_window_move_resize_internal (window, flags, gravity, rect); | ||||
|  | ||||
|       if (legacy_fullscreen) | ||||
|         meta_compositor_size_change_window (window->display->compositor, | ||||
|                                             window, META_SIZE_CHANGE_FULLSCREEN, | ||||
|                                             &old_frame_rect, &old_buffer_rect); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user