| @@ -149,6 +149,7 @@ static void set_screensaver(struct vo_x11_state *x11, bool enabled); · 148 unmodified lines |
| 149 | static void vo_x11_selectinput_witherr(struct vo *vo, Display *display, | 149 | static void vo_x11_selectinput_witherr(struct vo *vo, Display *display, |
| 150 | Window w, long event_mask); | 150 | Window w, long event_mask); |
| 151 | static void vo_x11_setlayer(struct vo *vo, bool ontop); | 151 | static void vo_x11_setlayer(struct vo *vo, bool ontop); |
| | 152 | static void vo_x11_set_in_taskbar(struct vo *vo, bool in); |
| 152 | static void vo_x11_xembed_handle_message(struct vo *vo, XClientMessageEvent *ce); | 153 | static void vo_x11_xembed_handle_message(struct vo *vo, XClientMessageEvent *ce); |
| 153 | static void vo_x11_xembed_send_message(struct vo_x11_state *x11, long m[4]); | 154 | static void vo_x11_xembed_send_message(struct vo_x11_state *x11, long m[4]); |
| 154 | static void vo_x11_move_resize(struct vo *vo, bool move, bool resize, | 155 | static void vo_x11_move_resize(struct vo *vo, bool move, bool resize, |
| @@ -1832,6 +1833,8 @@ void vo_x11_config_vo_window(struct vo *vo) · 1677 unmodified lines |
| 1832 | | 1833 | |
| 1833 | if (opts->ontop) | 1834 | if (opts->ontop) |
| 1834 | vo_x11_setlayer(vo, opts->ontop); | 1835 | vo_x11_setlayer(vo, opts->ontop); |
| | 1836 | if (!opts->show_in_taskbar) |
| | 1837 | vo_x11_set_in_taskbar(vo, opts->show_in_taskbar); |
| 1835 | | 1838 | |
| 1836 | vo_x11_fullscreen(vo); | 1839 | vo_x11_fullscreen(vo); |
| 1837 | | 1840 | |
| @@ -1892,6 +1895,19 @@ static void vo_x11_setlayer(struct vo *vo, bool ontop) · 54 unmodified lines |
| 1892 | } | 1895 | } |
| 1893 | } | 1896 | } |
| 1894 | | 1897 | |
| | 1898 | static void vo_x11_set_in_taskbar(struct vo *vo, bool in) |
| | 1899 | { |
| | 1900 | struct vo_x11_state *x11 = vo->x11; |
| | 1901 | if (x11->parent || !x11->window) |
| | 1902 | return; |
| | 1903 | |
| | 1904 | if (x11->wm_type & (vo_wm_SKIP_TASKBAR)) { |
| | 1905 | char *state = "_NET_WM_STATE_SKIP_TASKBAR"; |
| | 1906 | x11_set_ewmh_state(x11, state, !in); |
| | 1907 | MP_VERBOSE(x11, "NET style set skip taskbar (%d).\n", !in); |
| | 1908 | } |
| | 1909 | } |
| | 1910 | |
| 1895 | static bool rc_overlaps(struct mp_rect rc1, struct mp_rect rc2) | 1911 | static bool rc_overlaps(struct mp_rect rc1, struct mp_rect rc2) |
| 1896 | { | 1912 | { |
| 1897 | return mp_rect_intersection(&rc1, &rc2); // changes the first argument | 1913 | return mp_rect_intersection(&rc1, &rc2); // changes the first argument |
| @@ -2076,6 +2092,8 @@ int vo_x11_control(struct vo *vo, int *events, int request, void *arg) · 178 unmodified lines |
| 2076 | vo_x11_fullscreen(vo); | 2092 | vo_x11_fullscreen(vo); |
| 2077 | if (opt == &opts->ontop) | 2093 | if (opt == &opts->ontop) |
| 2078 | vo_x11_setlayer(vo, opts->ontop); | 2094 | vo_x11_setlayer(vo, opts->ontop); |
| | 2095 | if (opt == &opts->show_in_taskbar) |
| | 2096 | vo_x11_set_in_taskbar(vo, opts->show_in_taskbar); |
| 2079 | if (opt == &opts->border || opt == &opts->title_bar) | 2097 | if (opt == &opts->border || opt == &opts->title_bar) |
| 2080 | vo_x11_decoration(vo, opts->border, opts->title_bar); | 2098 | vo_x11_decoration(vo, opts->border, opts->title_bar); |
| 2081 | if (opt == &opts->all_workspaces) | 2099 | if (opt == &opts->all_workspaces) |