forked from AuroraMiddleware/gtk
Drop GdkToplevel:sticky
This was only ever implemented on X11. If you want to use it there, just use the X properties yourself.
This commit is contained in:
parent
fb7ef8f62c
commit
60ea97187a
@ -681,7 +681,6 @@ gdk_toplevel_set_transient_for
|
||||
gdk_toplevel_set_modal
|
||||
gdk_toplevel_set_icon_list
|
||||
gdk_toplevel_show_window_menu
|
||||
gdk_toplevel_set_sticky
|
||||
gdk_toplevel_set_keep_above
|
||||
gdk_toplevel_set_keep_below
|
||||
gdk_toplevel_set_accept_focus
|
||||
|
@ -1494,9 +1494,6 @@ gdk_broadway_toplevel_set_property (GObject *object,
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_ICON_LIST:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_STICKY:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_KEEP_ABOVE:
|
||||
break;
|
||||
|
||||
@ -1551,9 +1548,6 @@ gdk_broadway_toplevel_get_property (GObject *object,
|
||||
g_value_set_pointer (value, NULL);
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_STICKY:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_KEEP_ABOVE:
|
||||
break;
|
||||
|
||||
|
@ -118,12 +118,6 @@ gdk_toplevel_default_init (GdkToplevelInterface *iface)
|
||||
"Icon List",
|
||||
"The list of icon textures",
|
||||
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY));
|
||||
g_object_interface_install_property (iface,
|
||||
g_param_spec_boolean ("sticky",
|
||||
"Sticky",
|
||||
"Whether the surface is on all workspaces",
|
||||
FALSE,
|
||||
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY));
|
||||
g_object_interface_install_property (iface,
|
||||
g_param_spec_boolean ("keep-above",
|
||||
"Keep above",
|
||||
@ -179,7 +173,6 @@ gdk_toplevel_install_properties (GObjectClass *object_class,
|
||||
g_object_class_override_property (object_class, first_prop + GDK_TOPLEVEL_PROP_TRANSIENT_FOR, "transient-for");
|
||||
g_object_class_override_property (object_class, first_prop + GDK_TOPLEVEL_PROP_MODAL, "modal");
|
||||
g_object_class_override_property (object_class, first_prop + GDK_TOPLEVEL_PROP_ICON_LIST, "icon-list");
|
||||
g_object_class_override_property (object_class, first_prop + GDK_TOPLEVEL_PROP_STICKY, "sticky");
|
||||
g_object_class_override_property (object_class, first_prop + GDK_TOPLEVEL_PROP_KEEP_ABOVE, "keep-above");
|
||||
g_object_class_override_property (object_class, first_prop + GDK_TOPLEVEL_PROP_KEEP_BELOW, "keep-below");
|
||||
g_object_class_override_property (object_class, first_prop + GDK_TOPLEVEL_PROP_ACCEPT_FOCUS, "accept-focus");
|
||||
@ -422,22 +415,6 @@ gdk_toplevel_show_window_menu (GdkToplevel *toplevel,
|
||||
return GDK_TOPLEVEL_GET_IFACE (toplevel)->show_window_menu (toplevel, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_toplevel_set_sticky:
|
||||
* @toplevel: a #GdkToplevel
|
||||
* @sticky: whether to make @toplevel show on all workspaces
|
||||
*
|
||||
* Set if @surface is sticky.
|
||||
**/
|
||||
void
|
||||
gdk_toplevel_set_sticky (GdkToplevel *toplevel,
|
||||
gboolean sticky)
|
||||
{
|
||||
g_return_if_fail (GDK_IS_TOPLEVEL (toplevel));
|
||||
|
||||
g_object_set (toplevel, "sticky", sticky, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* gdk_toplevel_set_keep_above:
|
||||
* @toplevel: a #GdkToplevel
|
||||
|
@ -77,10 +77,6 @@ GDK_AVAILABLE_IN_ALL
|
||||
gboolean gdk_toplevel_show_window_menu (GdkToplevel *toplevel,
|
||||
GdkEvent *event);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gdk_toplevel_set_sticky (GdkToplevel *toplevel,
|
||||
gboolean sticky);
|
||||
|
||||
GDK_AVAILABLE_IN_ALL
|
||||
void gdk_toplevel_set_keep_above (GdkToplevel *toplevel,
|
||||
gboolean above);
|
||||
|
@ -31,7 +31,6 @@ typedef enum
|
||||
GDK_TOPLEVEL_PROP_TRANSIENT_FOR,
|
||||
GDK_TOPLEVEL_PROP_MODAL,
|
||||
GDK_TOPLEVEL_PROP_ICON_LIST,
|
||||
GDK_TOPLEVEL_PROP_STICKY,
|
||||
GDK_TOPLEVEL_PROP_KEEP_ABOVE,
|
||||
GDK_TOPLEVEL_PROP_KEEP_BELOW,
|
||||
GDK_TOPLEVEL_PROP_ACCEPT_FOCUS,
|
||||
|
@ -4349,9 +4349,6 @@ gdk_wayland_toplevel_set_property (GObject *object,
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_ICON_LIST:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_STICKY:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_KEEP_ABOVE:
|
||||
break;
|
||||
|
||||
@ -4416,9 +4413,6 @@ gdk_wayland_toplevel_get_property (GObject *object,
|
||||
g_value_set_pointer (value, NULL);
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_STICKY:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_KEEP_ABOVE:
|
||||
break;
|
||||
|
||||
|
@ -4907,9 +4907,6 @@ gdk_win32_toplevel_set_property (GObject *object,
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_ICON_LIST:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_STICKY:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_KEEP_ABOVE:
|
||||
break;
|
||||
|
||||
@ -4969,9 +4966,6 @@ gdk_win32_toplevel_get_property (GObject *object,
|
||||
g_value_set_pointer (value, NULL);
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_STICKY:
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_KEEP_ABOVE:
|
||||
break;
|
||||
|
||||
|
@ -382,20 +382,6 @@ do_net_wm_state_changes (GdkSurface *surface)
|
||||
|
||||
set = unset = 0;
|
||||
|
||||
/* For found_sticky to remain TRUE, we have to also be on desktop
|
||||
* 0xFFFFFFFF
|
||||
*/
|
||||
if (old_state & GDK_SURFACE_STATE_STICKY)
|
||||
{
|
||||
if (!(toplevel->have_sticky && toplevel->on_all_desktops))
|
||||
unset |= GDK_SURFACE_STATE_STICKY;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (toplevel->have_sticky && toplevel->on_all_desktops)
|
||||
set |= GDK_SURFACE_STATE_STICKY;
|
||||
}
|
||||
|
||||
if (old_state & GDK_SURFACE_STATE_FULLSCREEN)
|
||||
{
|
||||
if (!toplevel->have_fullscreen)
|
||||
@ -499,9 +485,6 @@ gdk_check_wm_state_changed (GdkSurface *surface)
|
||||
Atom *atoms = NULL;
|
||||
gulong i;
|
||||
|
||||
gboolean had_sticky = toplevel->have_sticky;
|
||||
|
||||
toplevel->have_sticky = FALSE;
|
||||
toplevel->have_maxvert = FALSE;
|
||||
toplevel->have_maxhorz = FALSE;
|
||||
toplevel->have_fullscreen = FALSE;
|
||||
@ -518,7 +501,6 @@ gdk_check_wm_state_changed (GdkSurface *surface)
|
||||
|
||||
if (type != None)
|
||||
{
|
||||
Atom sticky_atom = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_STICKY");
|
||||
Atom maxvert_atom = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_MAXIMIZED_VERT");
|
||||
Atom maxhorz_atom = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_MAXIMIZED_HORZ");
|
||||
Atom fullscreen_atom = gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_STATE_FULLSCREEN");
|
||||
@ -530,9 +512,7 @@ gdk_check_wm_state_changed (GdkSurface *surface)
|
||||
i = 0;
|
||||
while (i < nitems)
|
||||
{
|
||||
if (atoms[i] == sticky_atom)
|
||||
toplevel->have_sticky = TRUE;
|
||||
else if (atoms[i] == maxvert_atom)
|
||||
if (atoms[i] == maxvert_atom)
|
||||
toplevel->have_maxvert = TRUE;
|
||||
else if (atoms[i] == maxhorz_atom)
|
||||
toplevel->have_maxhorz = TRUE;
|
||||
@ -553,13 +533,7 @@ gdk_check_wm_state_changed (GdkSurface *surface)
|
||||
g_intern_static_string ("_NET_WM_STATE_FOCUSED")))
|
||||
toplevel->have_focused = TRUE;
|
||||
|
||||
/* When have_sticky is turned on, we have to check the DESKTOP property
|
||||
* as well.
|
||||
*/
|
||||
if (toplevel->have_sticky && !had_sticky)
|
||||
gdk_check_wm_desktop_changed (surface);
|
||||
else
|
||||
do_net_wm_state_changes (surface);
|
||||
do_net_wm_state_changes (surface);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1158,14 +1158,6 @@ set_initial_hints (GdkSurface *surface)
|
||||
++i;
|
||||
}
|
||||
|
||||
if (surface->state & GDK_SURFACE_STATE_STICKY)
|
||||
{
|
||||
atoms[i] = gdk_x11_get_xatom_by_name_for_display (display,
|
||||
"_NET_WM_STATE_STICKY");
|
||||
++i;
|
||||
toplevel->have_sticky = TRUE;
|
||||
}
|
||||
|
||||
if (surface->state & GDK_SURFACE_STATE_FULLSCREEN)
|
||||
{
|
||||
atoms[i] = gdk_x11_get_xatom_by_name_for_display (display,
|
||||
@ -3057,78 +3049,6 @@ gdk_x11_surface_unminimize (GdkSurface *surface)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_x11_surface_stick (GdkSurface *surface)
|
||||
{
|
||||
if (GDK_SURFACE_DESTROYED (surface))
|
||||
return;
|
||||
|
||||
if (GDK_SURFACE_IS_MAPPED (surface))
|
||||
{
|
||||
/* "stick" means stick to all desktops _and_ do not scroll with the
|
||||
* viewport. i.e. glue to the monitor glass in all cases.
|
||||
*/
|
||||
|
||||
XClientMessageEvent xclient;
|
||||
|
||||
/* Request stick during viewport scroll */
|
||||
gdk_wmspec_change_state (TRUE, surface,
|
||||
"_NET_WM_STATE_STICKY",
|
||||
NULL);
|
||||
|
||||
/* Request desktop 0xFFFFFFFF */
|
||||
memset (&xclient, 0, sizeof (xclient));
|
||||
xclient.type = ClientMessage;
|
||||
xclient.window = GDK_SURFACE_XID (surface);
|
||||
xclient.display = GDK_SURFACE_XDISPLAY (surface);
|
||||
xclient.message_type = gdk_x11_get_xatom_by_name_for_display (GDK_SURFACE_DISPLAY (surface),
|
||||
"_NET_WM_DESKTOP");
|
||||
xclient.format = 32;
|
||||
|
||||
xclient.data.l[0] = 0xFFFFFFFF;
|
||||
xclient.data.l[1] = 0;
|
||||
xclient.data.l[2] = 0;
|
||||
xclient.data.l[3] = 0;
|
||||
xclient.data.l[4] = 0;
|
||||
|
||||
XSendEvent (GDK_SURFACE_XDISPLAY (surface), GDK_SURFACE_XROOTWIN (surface), False,
|
||||
SubstructureRedirectMask | SubstructureNotifyMask,
|
||||
(XEvent *)&xclient);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Flip our client side flag, the real work happens on map. */
|
||||
gdk_synthesize_surface_state (surface,
|
||||
0,
|
||||
GDK_SURFACE_STATE_STICKY);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_x11_surface_unstick (GdkSurface *surface)
|
||||
{
|
||||
if (GDK_SURFACE_DESTROYED (surface))
|
||||
return;
|
||||
|
||||
if (GDK_SURFACE_IS_MAPPED (surface))
|
||||
{
|
||||
/* Request unstick from viewport */
|
||||
gdk_wmspec_change_state (FALSE, surface,
|
||||
"_NET_WM_STATE_STICKY",
|
||||
NULL);
|
||||
|
||||
move_to_current_desktop (surface);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Flip our client side flag, the real work happens on map. */
|
||||
gdk_synthesize_surface_state (surface,
|
||||
GDK_SURFACE_STATE_STICKY,
|
||||
0);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gdk_x11_surface_maximize (GdkSurface *surface)
|
||||
{
|
||||
@ -4871,14 +4791,6 @@ gdk_wayland_toplevel_set_property (GObject *object,
|
||||
g_object_notify_by_pspec (G_OBJECT (surface), pspec);
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_STICKY:
|
||||
if (g_value_get_boolean (value))
|
||||
gdk_x11_surface_stick (surface);
|
||||
else
|
||||
gdk_x11_surface_unstick (surface);
|
||||
g_object_notify_by_pspec (G_OBJECT (surface), pspec);
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_KEEP_ABOVE:
|
||||
gdk_x11_surface_set_keep_above (surface, g_value_get_boolean (value));
|
||||
g_object_notify_by_pspec (G_OBJECT (surface), pspec);
|
||||
@ -4928,7 +4840,6 @@ gdk_wayland_toplevel_get_property (GObject *object,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GdkSurface *surface = GDK_SURFACE (object);
|
||||
GdkX11Surface *impl = GDK_X11_SURFACE (surface);
|
||||
|
||||
switch (prop_id)
|
||||
{
|
||||
@ -4956,10 +4867,6 @@ gdk_wayland_toplevel_get_property (GObject *object,
|
||||
g_value_set_pointer (value, NULL);
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_STICKY:
|
||||
g_value_set_boolean (value, impl->toplevel->have_sticky);
|
||||
break;
|
||||
|
||||
case LAST_PROP + GDK_TOPLEVEL_PROP_KEEP_ABOVE:
|
||||
g_value_set_boolean (value, (surface->state & GDK_SURFACE_STATE_ABOVE) != 0);
|
||||
break;
|
||||
|
@ -116,7 +116,6 @@ struct _GdkToplevelX11
|
||||
|
||||
guint on_all_desktops : 1; /* _NET_WM_STICKY == 0xFFFFFFFF */
|
||||
|
||||
guint have_sticky : 1; /* _NET_WM_STATE_STICKY */
|
||||
guint have_maxvert : 1; /* _NET_WM_STATE_MAXIMIZED_VERT */
|
||||
guint have_maxhorz : 1; /* _NET_WM_STATE_MAXIMIZED_HORZ */
|
||||
guint have_fullscreen : 1; /* _NET_WM_STATE_FULLSCREEN */
|
||||
|
Loading…
Reference in New Issue
Block a user