Remove-support-for-window-shading.patch 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700
  1. From 4177c466375462ca8ed8fdb60913df4422f19144 Mon Sep 17 00:00:00 2001
  2. From: Robert Mader <robert.mader@collabora.com>
  3. Date: Fri, 3 Mar 2023 13:24:42 +0100
  4. Subject: [PATCH] Remove support for window shading
  5. It's been broken for an unknown time and was never supported on Wayland.
  6. Thus let's remove the leftovers.
  7. Helpful command: `rg 'shade(?!r)' --pcre2`
  8. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2884>
  9. ---
  10. src/core/frame.c | 5 --
  11. src/core/keybindings.c | 21 -----
  12. src/core/place.c | 3 +-
  13. src/core/window-private.h | 6 +-
  14. src/core/window.c | 128 ++-------------------------
  15. src/meta/prefs.h | 2 -
  16. src/meta/window.h | 14 ---
  17. src/ui/frames.c | 12 ---
  18. src/wayland/meta-wayland-gtk-shell.c | 5 +-
  19. src/x11/atomnames.h | 1 -
  20. src/x11/events.c | 2 +-
  21. src/x11/window-props.c | 5 +-
  22. src/x11/window-x11.c | 46 +---------
  23. 13 files changed, 18 insertions(+), 232 deletions(-)
  24. diff --git a/src/core/frame.c b/src/core/frame.c
  25. index 9c8cbb9464..5b3195181c 100644
  26. --- a/src/core/frame.c
  27. +++ b/src/core/frame.c
  28. @@ -266,8 +266,6 @@ meta_frame_get_flags (MetaFrame *frame)
  29. if (frame->window->has_minimize_func)
  30. flags |= META_FRAME_ALLOWS_MINIMIZE;
  31. - if (frame->window->has_shade_func)
  32. - flags |= META_FRAME_ALLOWS_SHADE;
  33. }
  34. if (META_WINDOW_ALLOWS_MOVE (frame->window))
  35. @@ -282,9 +280,6 @@ meta_frame_get_flags (MetaFrame *frame)
  36. if (meta_window_appears_focused (frame->window))
  37. flags |= META_FRAME_HAS_FOCUS;
  38. - if (frame->window->shaded)
  39. - flags |= META_FRAME_SHADED;
  40. -
  41. if (frame->window->on_all_workspaces_requested)
  42. flags |= META_FRAME_STUCK;
  43. diff --git a/src/core/keybindings.c b/src/core/keybindings.c
  44. index 975e68897a..d7fd1a2a23 100644
  45. --- a/src/core/keybindings.c
  46. +++ b/src/core/keybindings.c
  47. @@ -3311,19 +3311,6 @@ handle_unmaximize (MetaDisplay *display,
  48. meta_window_unmaximize (window, META_MAXIMIZE_BOTH);
  49. }
  50. -static void
  51. -handle_toggle_shaded (MetaDisplay *display,
  52. - MetaWindow *window,
  53. - ClutterKeyEvent *event,
  54. - MetaKeyBinding *binding,
  55. - gpointer dummy)
  56. -{
  57. - if (window->shaded)
  58. - meta_window_unshade (window, event->time);
  59. - else if (window->has_shade_func)
  60. - meta_window_shade (window, event->time);
  61. -}
  62. -
  63. static void
  64. handle_close (MetaDisplay *display,
  65. MetaWindow *window,
  66. @@ -4112,14 +4099,6 @@ init_builtin_key_bindings (MetaDisplay *display)
  67. META_KEYBINDING_ACTION_UNMAXIMIZE,
  68. handle_unmaximize, 0);
  69. - add_builtin_keybinding (display,
  70. - "toggle-shaded",
  71. - common_keybindings,
  72. - META_KEY_BINDING_PER_WINDOW |
  73. - META_KEY_BINDING_IGNORE_AUTOREPEAT,
  74. - META_KEYBINDING_ACTION_TOGGLE_SHADED,
  75. - handle_toggle_shaded, 0);
  76. -
  77. add_builtin_keybinding (display,
  78. "minimize",
  79. common_keybindings,
  80. diff --git a/src/core/place.c b/src/core/place.c
  81. index 1075fe20d5..388c7a54ab 100644
  82. --- a/src/core/place.c
  83. +++ b/src/core/place.c
  84. @@ -825,8 +825,7 @@ meta_window_place (MetaWindow *window,
  85. }
  86. /* Find windows that matter (not minimized, on same workspace
  87. - * as placed window, may be shaded - if shaded we pretend it isn't
  88. - * for placement purposes)
  89. + * as placed window)
  90. */
  91. {
  92. GSList *all_windows;
  93. diff --git a/src/core/window-private.h b/src/core/window-private.h
  94. index 188b21468a..456b93bc4c 100644
  95. --- a/src/core/window-private.h
  96. +++ b/src/core/window-private.h
  97. @@ -387,9 +387,6 @@ struct _MetaWindow
  98. * that to toggle between normal/tiled or maximized/tiled states. */
  99. guint saved_maximize : 1;
  100. - /* Whether we're shaded */
  101. - guint shaded : 1;
  102. -
  103. /* Whether we're fullscreen */
  104. guint fullscreen : 1;
  105. @@ -487,7 +484,6 @@ struct _MetaWindow
  106. guint has_close_func : 1;
  107. guint has_minimize_func : 1;
  108. guint has_maximize_func : 1;
  109. - guint has_shade_func : 1;
  110. guint has_move_func : 1;
  111. guint has_resize_func : 1;
  112. guint has_fullscreen_func : 1;
  113. @@ -644,7 +640,7 @@ struct _MetaWindowClass
  114. #define META_WINDOW_TILED_MAXIMIZED(w)(META_WINDOW_MAXIMIZED(w) && \
  115. (w)->tile_mode == META_TILE_MAXIMIZED)
  116. #define META_WINDOW_ALLOWS_MOVE(w) ((w)->has_move_func && !(w)->fullscreen)
  117. -#define META_WINDOW_ALLOWS_RESIZE_EXCEPT_HINTS(w) ((w)->has_resize_func && !META_WINDOW_MAXIMIZED (w) && !(w)->fullscreen && !(w)->shaded)
  118. +#define META_WINDOW_ALLOWS_RESIZE_EXCEPT_HINTS(w) ((w)->has_resize_func && !META_WINDOW_MAXIMIZED (w) && !(w)->fullscreen)
  119. #define META_WINDOW_ALLOWS_RESIZE(w) (META_WINDOW_ALLOWS_RESIZE_EXCEPT_HINTS (w) && \
  120. (((w)->size_hints.min_width < (w)->size_hints.max_width) || \
  121. ((w)->size_hints.min_height < (w)->size_hints.max_height)))
  122. diff --git a/src/core/window.c b/src/core/window.c
  123. index 9ae2f78a67..0349b5a615 100644
  124. --- a/src/core/window.c
  125. +++ b/src/core/window.c
  126. @@ -784,7 +784,7 @@ client_window_should_be_mapped (MetaWindow *window)
  127. return FALSE;
  128. #endif
  129. - return !window->shaded;
  130. + return TRUE;
  131. }
  132. static void
  133. @@ -1051,7 +1051,6 @@ _meta_window_shared_new (MetaDisplay *display,
  134. window->tile_mode = META_TILE_NONE;
  135. window->tile_monitor_number = -1;
  136. window->tile_hfraction = -1.;
  137. - window->shaded = FALSE;
  138. window->initially_iconic = FALSE;
  139. window->minimized = FALSE;
  140. window->tab_unminimized = FALSE;
  141. @@ -1110,8 +1109,6 @@ _meta_window_shared_new (MetaDisplay *display,
  142. window->has_move_func = TRUE;
  143. window->has_resize_func = TRUE;
  144. - window->has_shade_func = TRUE;
  145. -
  146. window->has_fullscreen_func = TRUE;
  147. window->always_sticky = FALSE;
  148. @@ -1174,7 +1171,6 @@ _meta_window_shared_new (MetaDisplay *display,
  149. window->decorated = FALSE;
  150. window->always_sticky = TRUE;
  151. window->has_close_func = FALSE;
  152. - window->has_shade_func = FALSE;
  153. window->has_move_func = FALSE;
  154. window->has_resize_func = FALSE;
  155. }
  156. @@ -2156,8 +2152,8 @@ meta_window_show (MetaWindow *window)
  157. MetaDisplay *display = window->display;
  158. meta_topic (META_DEBUG_WINDOW_STATE,
  159. - "Showing window %s, shaded: %d iconic: %d placed: %d",
  160. - window->desc, window->shaded, window->iconic, window->placed);
  161. + "Showing window %s, iconic: %d placed: %d",
  162. + window->desc, window->iconic, window->placed);
  163. focus_window = window->display->focus_window; /* May be NULL! */
  164. did_show = FALSE;
  165. @@ -2638,16 +2634,6 @@ meta_window_maximize (MetaWindow *window,
  166. if ((maximize_horizontally && !window->maximized_horizontally) ||
  167. (maximize_vertically && !window->maximized_vertically))
  168. {
  169. - if (window->shaded && maximize_vertically)
  170. - {
  171. - /* Shading sucks anyway; I'm not adding a timestamp argument
  172. - * to this function just for this niche usage & corner case.
  173. - */
  174. - guint32 timestamp =
  175. - meta_display_get_current_time_roundtrip (window->display);
  176. - meta_window_unshade (window, timestamp);
  177. - }
  178. -
  179. /* if the window hasn't been placed yet, we'll maximize it then
  180. */
  181. if (!window->placed)
  182. @@ -3238,16 +3224,6 @@ meta_window_make_fullscreen_internal (MetaWindow *window)
  183. meta_topic (META_DEBUG_WINDOW_OPS,
  184. "Fullscreening %s", window->desc);
  185. - if (window->shaded)
  186. - {
  187. - /* Shading sucks anyway; I'm not adding a timestamp argument
  188. - * to this function just for this niche usage & corner case.
  189. - */
  190. - guint32 timestamp =
  191. - meta_display_get_current_time_roundtrip (window->display);
  192. - meta_window_unshade (window, timestamp);
  193. - }
  194. -
  195. window->saved_rect_fullscreen = window->rect;
  196. window->fullscreen = TRUE;
  197. @@ -3397,57 +3373,6 @@ meta_window_adjust_fullscreen_monitor_rect (MetaWindow *window,
  198. window_class->adjust_fullscreen_monitor_rect (window, monitor_rect);
  199. }
  200. -void
  201. -meta_window_shade (MetaWindow *window,
  202. - guint32 timestamp)
  203. -{
  204. - g_return_if_fail (!window->override_redirect);
  205. -
  206. - meta_topic (META_DEBUG_WINDOW_OPS,
  207. - "Shading %s", window->desc);
  208. - if (!window->shaded)
  209. - {
  210. - window->shaded = TRUE;
  211. -
  212. - meta_window_queue(window, META_QUEUE_MOVE_RESIZE | META_QUEUE_CALC_SHOWING);
  213. - meta_window_frame_size_changed (window);
  214. -
  215. - /* After queuing the calc showing, since _focus flushes it,
  216. - * and we need to focus the frame
  217. - */
  218. - meta_topic (META_DEBUG_FOCUS,
  219. - "Re-focusing window %s after shading it",
  220. - window->desc);
  221. - meta_window_focus (window, timestamp);
  222. -
  223. - set_net_wm_state (window);
  224. - }
  225. -}
  226. -
  227. -void
  228. -meta_window_unshade (MetaWindow *window,
  229. - guint32 timestamp)
  230. -{
  231. - g_return_if_fail (!window->override_redirect);
  232. -
  233. - meta_topic (META_DEBUG_WINDOW_OPS,
  234. - "Unshading %s", window->desc);
  235. - if (window->shaded)
  236. - {
  237. - window->shaded = FALSE;
  238. - meta_window_queue(window, META_QUEUE_MOVE_RESIZE | META_QUEUE_CALC_SHOWING);
  239. - meta_window_frame_size_changed (window);
  240. -
  241. - /* focus the window */
  242. - meta_topic (META_DEBUG_FOCUS,
  243. - "Focusing window %s after unshading it",
  244. - window->desc);
  245. - meta_window_focus (window, timestamp);
  246. -
  247. - set_net_wm_state (window);
  248. - }
  249. -}
  250. -
  251. static gboolean
  252. unminimize_func (MetaWindow *window,
  253. void *data)
  254. @@ -3525,9 +3450,6 @@ meta_window_activate_full (MetaWindow *window,
  255. meta_window_change_workspace (window, workspace);
  256. }
  257. - if (window->shaded)
  258. - meta_window_unshade (window, timestamp);
  259. -
  260. unminimize_window_and_all_transient_parents (window);
  261. if (meta_prefs_get_raise_on_click () ||
  262. @@ -4426,8 +4348,7 @@ meta_window_get_frame_rect (const MetaWindow *window,
  263. * @rect: (out): pointer to a cairo rectangle
  264. *
  265. * Gets the rectangle for the boundaries of the client area, relative
  266. - * to the buffer rect. If the window is shaded, the height of the
  267. - * rectangle is 0.
  268. + * to the buffer rect.
  269. */
  270. void
  271. meta_window_get_client_area_rect (const MetaWindow *window,
  272. @@ -4441,10 +4362,7 @@ meta_window_get_client_area_rect (const MetaWindow *window,
  273. rect->y = borders.total.top;
  274. rect->width = window->buffer_rect.width - borders.total.left - borders.total.right;
  275. - if (window->shaded)
  276. - rect->height = 0;
  277. - else
  278. - rect->height = window->buffer_rect.height - borders.total.top - borders.total.bottom;
  279. + rect->height = window->buffer_rect.height - borders.total.top - borders.total.bottom;
  280. }
  281. void
  282. @@ -4595,7 +4513,7 @@ meta_window_focus (MetaWindow *window,
  283. meta_window_flush_calc_showing (window);
  284. - if ((!window->mapped || window->hidden) && !window->shaded)
  285. + if (!window->mapped || window->hidden)
  286. {
  287. meta_topic (META_DEBUG_FOCUS,
  288. "Window %s is not showing, not focusing after all",
  289. @@ -5474,7 +5392,6 @@ meta_window_recalc_features (MetaWindow *window)
  290. gboolean old_has_minimize_func;
  291. gboolean old_has_move_func;
  292. gboolean old_has_resize_func;
  293. - gboolean old_has_shade_func;
  294. gboolean old_always_sticky;
  295. gboolean old_skip_taskbar;
  296. @@ -5482,7 +5399,6 @@ meta_window_recalc_features (MetaWindow *window)
  297. old_has_minimize_func = window->has_minimize_func;
  298. old_has_move_func = window->has_move_func;
  299. old_has_resize_func = window->has_resize_func;
  300. - old_has_shade_func = window->has_shade_func;
  301. old_always_sticky = window->always_sticky;
  302. old_skip_taskbar = window->skip_taskbar;
  303. @@ -5521,7 +5437,6 @@ meta_window_recalc_features (MetaWindow *window)
  304. window->size_hints.max_height);
  305. }
  306. - window->has_shade_func = TRUE;
  307. window->has_fullscreen_func = TRUE;
  308. window->always_sticky = FALSE;
  309. @@ -5540,7 +5455,6 @@ meta_window_recalc_features (MetaWindow *window)
  310. {
  311. window->decorated = FALSE;
  312. window->has_close_func = FALSE;
  313. - window->has_shade_func = FALSE;
  314. /* FIXME this keeps panels and things from using
  315. * NET_WM_MOVERESIZE; the problem is that some
  316. @@ -5590,7 +5504,6 @@ meta_window_recalc_features (MetaWindow *window)
  317. */
  318. if (window->fullscreen)
  319. {
  320. - window->has_shade_func = FALSE;
  321. window->has_move_func = FALSE;
  322. window->has_resize_func = FALSE;
  323. window->has_maximize_func = FALSE;
  324. @@ -5618,10 +5531,6 @@ meta_window_recalc_features (MetaWindow *window)
  325. window->size_hints.max_width,
  326. window->size_hints.max_height);
  327. - /* no shading if not decorated */
  328. - if (!window->decorated || window->border_only)
  329. - window->has_shade_func = FALSE;
  330. -
  331. meta_window_recalc_skip_features (window);
  332. /* To prevent users from losing windows, let's prevent users from
  333. @@ -5630,7 +5539,7 @@ meta_window_recalc_features (MetaWindow *window)
  334. window->has_minimize_func = FALSE;
  335. meta_topic (META_DEBUG_WINDOW_OPS,
  336. - "Window %s decorated = %d border_only = %d has_close = %d has_minimize = %d has_maximize = %d has_move = %d has_shade = %d skip_taskbar = %d skip_pager = %d",
  337. + "Window %s decorated = %d border_only = %d has_close = %d has_minimize = %d has_maximize = %d has_move = %d skip_taskbar = %d skip_pager = %d",
  338. window->desc,
  339. window->decorated,
  340. window->border_only,
  341. @@ -5638,7 +5547,6 @@ meta_window_recalc_features (MetaWindow *window)
  342. window->has_minimize_func,
  343. window->has_maximize_func,
  344. window->has_move_func,
  345. - window->has_shade_func,
  346. window->skip_taskbar,
  347. window->skip_pager);
  348. @@ -5655,7 +5563,6 @@ meta_window_recalc_features (MetaWindow *window)
  349. old_has_minimize_func != window->has_minimize_func ||
  350. old_has_move_func != window->has_move_func ||
  351. old_has_resize_func != window->has_resize_func ||
  352. - old_has_shade_func != window->has_shade_func ||
  353. old_always_sticky != window->always_sticky)
  354. set_allowed_actions_hint (window);
  355. @@ -5663,10 +5570,6 @@ meta_window_recalc_features (MetaWindow *window)
  356. g_object_notify_by_pspec (G_OBJECT (window), obj_props[PROP_RESIZEABLE]);
  357. meta_window_frame_size_changed (window);
  358. -
  359. - /* FIXME perhaps should ensure if we don't have a shade func,
  360. - * we aren't shaded, etc.
  361. - */
  362. }
  363. void
  364. @@ -7108,12 +7011,6 @@ meta_window_has_focus (MetaWindow *window)
  365. return window->has_focus;
  366. }
  367. -gboolean
  368. -meta_window_is_shaded (MetaWindow *window)
  369. -{
  370. - return window->shaded;
  371. -}
  372. -
  373. /**
  374. * meta_window_is_override_redirect:
  375. * @window: A #MetaWindow
  376. @@ -7792,7 +7689,7 @@ meta_window_find_tile_match (MetaWindow *window,
  377. MetaStack *stack;
  378. MetaTileMode match_tile_mode = META_TILE_NONE;
  379. - if (window->shaded || window->minimized)
  380. + if (window->minimized)
  381. return NULL;
  382. if (current_mode == META_TILE_LEFT)
  383. @@ -7808,8 +7705,7 @@ meta_window_find_tile_match (MetaWindow *window,
  384. match;
  385. match = meta_stack_get_below (stack, match, FALSE))
  386. {
  387. - if (!match->shaded &&
  388. - !match->minimized &&
  389. + if (!match->minimized &&
  390. match->tile_mode == match_tile_mode &&
  391. match->tile_monitor_number == window->tile_monitor_number &&
  392. meta_window_get_workspace (match) == meta_window_get_workspace (window))
  393. @@ -8447,12 +8343,6 @@ meta_window_can_minimize (MetaWindow *window)
  394. return window->has_minimize_func;
  395. }
  396. -gboolean
  397. -meta_window_can_shade (MetaWindow *window)
  398. -{
  399. - return window->has_shade_func;
  400. -}
  401. -
  402. gboolean
  403. meta_window_can_close (MetaWindow *window)
  404. {
  405. diff --git a/src/meta/prefs.h b/src/meta/prefs.h
  406. index 227de68bf2..d859289411 100644
  407. --- a/src/meta/prefs.h
  408. +++ b/src/meta/prefs.h
  409. @@ -279,7 +279,6 @@ int meta_prefs_get_drag_threshold (void);
  410. * @META_KEYBINDING_ACTION_TOGGLE_ABOVE: FILLME
  411. * @META_KEYBINDING_ACTION_MAXIMIZE: FILLME
  412. * @META_KEYBINDING_ACTION_UNMAXIMIZE: FILLME
  413. - * @META_KEYBINDING_ACTION_TOGGLE_SHADED: FILLME
  414. * @META_KEYBINDING_ACTION_MINIMIZE: FILLME
  415. * @META_KEYBINDING_ACTION_CLOSE: FILLME
  416. * @META_KEYBINDING_ACTION_BEGIN_MOVE: FILLME
  417. @@ -376,7 +375,6 @@ typedef enum _MetaKeyBindingAction
  418. META_KEYBINDING_ACTION_TOGGLE_ABOVE,
  419. META_KEYBINDING_ACTION_MAXIMIZE,
  420. META_KEYBINDING_ACTION_UNMAXIMIZE,
  421. - META_KEYBINDING_ACTION_TOGGLE_SHADED,
  422. META_KEYBINDING_ACTION_MINIMIZE,
  423. META_KEYBINDING_ACTION_CLOSE,
  424. META_KEYBINDING_ACTION_BEGIN_MOVE,
  425. diff --git a/src/meta/window.h b/src/meta/window.h
  426. index d4ba4966b4..ba9cad0f59 100644
  427. --- a/src/meta/window.h
  428. +++ b/src/meta/window.h
  429. @@ -115,9 +115,6 @@ gboolean meta_window_has_focus (MetaWindow *window);
  430. META_EXPORT
  431. gboolean meta_window_appears_focused (MetaWindow *window);
  432. -META_EXPORT
  433. -gboolean meta_window_is_shaded (MetaWindow *window);
  434. -
  435. META_EXPORT
  436. gboolean meta_window_is_override_redirect (MetaWindow *window);
  437. @@ -370,14 +367,6 @@ void meta_window_make_above (MetaWindow *window);
  438. META_EXPORT
  439. void meta_window_unmake_above (MetaWindow *window);
  440. -META_EXPORT
  441. -void meta_window_shade (MetaWindow *window,
  442. - guint32 timestamp);
  443. -
  444. -META_EXPORT
  445. -void meta_window_unshade (MetaWindow *window,
  446. - guint32 timestamp);
  447. -
  448. META_EXPORT
  449. void meta_window_stick (MetaWindow *window);
  450. @@ -420,9 +409,6 @@ gboolean meta_window_can_maximize (MetaWindow *window);
  451. META_EXPORT
  452. gboolean meta_window_can_minimize (MetaWindow *window);
  453. -META_EXPORT
  454. -gboolean meta_window_can_shade (MetaWindow *window);
  455. -
  456. META_EXPORT
  457. gboolean meta_window_can_close (MetaWindow *window);
  458. diff --git a/src/ui/frames.c b/src/ui/frames.c
  459. index e1fb6e502d..b1b5799cc6 100644
  460. --- a/src/ui/frames.c
  461. +++ b/src/ui/frames.c
  462. @@ -815,18 +815,6 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
  463. switch (action)
  464. {
  465. - case G_DESKTOP_TITLEBAR_ACTION_TOGGLE_SHADE:
  466. - {
  467. - if (flags & META_FRAME_ALLOWS_SHADE)
  468. - {
  469. - if (flags & META_FRAME_SHADED)
  470. - meta_window_unshade (frame->meta_window, evtime);
  471. - else
  472. - meta_window_shade (frame->meta_window, evtime);
  473. - }
  474. - }
  475. - break;
  476. -
  477. case G_DESKTOP_TITLEBAR_ACTION_TOGGLE_MAXIMIZE:
  478. {
  479. if (flags & META_FRAME_ALLOWS_MAXIMIZE)
  480. diff --git a/src/wayland/meta-wayland-gtk-shell.c b/src/wayland/meta-wayland-gtk-shell.c
  481. index 5fd1d80cf5..067eac49ab 100644
  482. --- a/src/wayland/meta-wayland-gtk-shell.c
  483. +++ b/src/wayland/meta-wayland-gtk-shell.c
  484. @@ -302,11 +302,8 @@ gtk_surface_titlebar_gesture (struct wl_client *client,
  485. meta_window_show_menu (window, META_WINDOW_MENU_WM, x, y);
  486. break;
  487. - case G_DESKTOP_TITLEBAR_ACTION_TOGGLE_SHADE:
  488. - g_warning ("No shade! The library is closed.");
  489. - G_GNUC_FALLTHROUGH;
  490. default:
  491. - return;
  492. + break;
  493. }
  494. }
  495. diff --git a/src/x11/atomnames.h b/src/x11/atomnames.h
  496. index b806e6e9dc..8e68142fcb 100644
  497. --- a/src/x11/atomnames.h
  498. +++ b/src/x11/atomnames.h
  499. @@ -107,7 +107,6 @@ item(_NET_SUPPORTED)
  500. item(_NET_WM_NAME)
  501. item(_NET_CLOSE_WINDOW)
  502. item(_NET_WM_STATE)
  503. -item(_NET_WM_STATE_SHADED)
  504. item(_NET_WM_STATE_MAXIMIZED_HORZ)
  505. item(_NET_WM_STATE_MAXIMIZED_VERT)
  506. item(_NET_WM_DESKTOP)
  507. diff --git a/src/x11/events.c b/src/x11/events.c
  508. index b806d54148..cb7d6363e0 100644
  509. --- a/src/x11/events.c
  510. +++ b/src/x11/events.c
  511. @@ -801,7 +801,7 @@ handle_window_focus_event (MetaX11Display *x11_display,
  512. const char *window_type;
  513. /* Note the event can be on either the window or the frame,
  514. - * we focus the frame for shaded windows
  515. + * we focus the frame for output-only windows
  516. */
  517. if (window)
  518. {
  519. diff --git a/src/x11/window-props.c b/src/x11/window-props.c
  520. index aa4fab99cd..ebfc6cf383 100644
  521. --- a/src/x11/window-props.c
  522. +++ b/src/x11/window-props.c
  523. @@ -778,7 +778,6 @@ reload_net_wm_state (MetaWindow *window,
  524. return;
  525. }
  526. - window->shaded = FALSE;
  527. window->maximized_horizontally = FALSE;
  528. window->maximized_vertically = FALSE;
  529. window->fullscreen = FALSE;
  530. @@ -795,9 +794,7 @@ reload_net_wm_state (MetaWindow *window,
  531. i = 0;
  532. while (i < value->v.atom_list.n_atoms)
  533. {
  534. - if (value->v.atom_list.atoms[i] == x11_display->atom__NET_WM_STATE_SHADED)
  535. - window->shaded = TRUE;
  536. - else if (value->v.atom_list.atoms[i] == x11_display->atom__NET_WM_STATE_MAXIMIZED_HORZ)
  537. + if (value->v.atom_list.atoms[i] == x11_display->atom__NET_WM_STATE_MAXIMIZED_HORZ)
  538. window->maximize_horizontally_after_placement = TRUE;
  539. else if (value->v.atom_list.atoms[i] == x11_display->atom__NET_WM_STATE_MAXIMIZED_VERT)
  540. window->maximize_vertically_after_placement = TRUE;
  541. diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
  542. index 167b1b50d2..603a35dd6a 100644
  543. --- a/src/x11/window-x11.c
  544. +++ b/src/x11/window-x11.c
  545. @@ -941,9 +941,6 @@ maybe_focus_default_window (MetaDisplay *display,
  546. if (focus_window->input)
  547. break;
  548. -
  549. - if (focus_window->shaded && focus_window->frame)
  550. - break;
  551. }
  552. focus_candidates_maybe_take_and_focus_next (&focus_candidates, timestamp);
  553. @@ -956,14 +953,13 @@ meta_window_x11_focus (MetaWindow *window,
  554. MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
  555. MetaWindowX11Private *priv =
  556. meta_window_x11_get_instance_private (window_x11);
  557. - /* For output-only or shaded windows, focus the frame.
  558. + /* For output-only windows, focus the frame.
  559. * This seems to result in the client window getting key events
  560. * though, so I don't know if it's icccm-compliant.
  561. *
  562. * Still, we have to do this or keynav breaks for these windows.
  563. */
  564. - if (window->frame &&
  565. - (window->shaded || !meta_window_is_focusable (window)))
  566. + if (window->frame && !meta_window_is_focusable (window))
  567. {
  568. meta_topic (META_DEBUG_FOCUS,
  569. "Focusing frame of %s", window->desc);
  570. @@ -1383,11 +1379,7 @@ meta_window_x11_move_resize_internal (MetaWindow *window,
  571. /* Compute new frame size */
  572. new_w = window->rect.width + borders.invisible.left + borders.invisible.right;
  573. -
  574. - if (window->shaded)
  575. - new_h = borders.total.top + borders.total.bottom;
  576. - else
  577. - new_h = window->rect.height + borders.invisible.top + borders.invisible.bottom;
  578. + new_h = window->rect.height + borders.invisible.top + borders.invisible.bottom;
  579. if (new_w != window->frame->rect.width ||
  580. new_h != window->frame->rect.height)
  581. @@ -2209,11 +2201,6 @@ meta_window_x11_set_net_wm_state (MetaWindow *window)
  582. unsigned long data[13];
  583. i = 0;
  584. - if (window->shaded)
  585. - {
  586. - data[i] = x11_display->atom__NET_WM_STATE_SHADED;
  587. - ++i;
  588. - }
  589. if (priv->wm_state_modal)
  590. {
  591. data[i] = x11_display->atom__NET_WM_STATE_MODAL;
  592. @@ -2244,7 +2231,7 @@ meta_window_x11_set_net_wm_state (MetaWindow *window)
  593. data[i] = x11_display->atom__NET_WM_STATE_FULLSCREEN;
  594. ++i;
  595. }
  596. - if (!meta_window_showing_on_its_workspace (window) || window->shaded)
  597. + if (!meta_window_showing_on_its_workspace (window))
  598. {
  599. data[i] = x11_display->atom__NET_WM_STATE_HIDDEN;
  600. ++i;
  601. @@ -3063,26 +3050,6 @@ meta_window_x11_client_message (MetaWindow *window,
  602. meta_XFree (str2);
  603. }
  604. - if (first == x11_display->atom__NET_WM_STATE_SHADED ||
  605. - second == x11_display->atom__NET_WM_STATE_SHADED)
  606. - {
  607. - gboolean shade;
  608. - guint32 timestamp;
  609. -
  610. - /* Stupid protocol has no timestamp; of course, shading
  611. - * sucks anyway so who really cares that we're forced to do
  612. - * a roundtrip here?
  613. - */
  614. - timestamp = meta_display_get_current_time_roundtrip (window->display);
  615. -
  616. - shade = (action == _NET_WM_STATE_ADD ||
  617. - (action == _NET_WM_STATE_TOGGLE && !window->shaded));
  618. - if (shade && window->has_shade_func)
  619. - meta_window_shade (window, timestamp);
  620. - else
  621. - meta_window_unshade (window, timestamp);
  622. - }
  623. -
  624. if (first == x11_display->atom__NET_WM_STATE_FULLSCREEN ||
  625. second == x11_display->atom__NET_WM_STATE_FULLSCREEN)
  626. {
  627. @@ -3990,11 +3957,6 @@ meta_window_x11_set_allowed_actions_hint (MetaWindow *window)
  628. data[i] = x11_display->atom__NET_WM_ACTION_MINIMIZE;
  629. ++i;
  630. }
  631. - if (window->has_shade_func)
  632. - {
  633. - data[i] = x11_display->atom__NET_WM_ACTION_SHADE;
  634. - ++i;
  635. - }
  636. /* sticky according to EWMH is different from mutter's sticky;
  637. * mutter doesn't support EWMH sticky
  638. */