Make tracking the on_all_desktops state work better.
2005-08-01 Matthias Clasen <mclasen@redhat.com> * gdk/x11/gdkevents-x11.c (gdk_check_wm_desktop_changed): Make tracking the on_all_desktops state work better. * gdk/x11/gdkwindow-x11.c (gdk_x11_window_move_to_current_desktop): Don't do anything if the window is on all desktops. (#311803, Elijah Newren)
This commit is contained in:
committed by
Matthias Clasen
parent
fbf6c8175d
commit
5d7b721b27
@ -409,7 +409,7 @@ do_net_wm_state_changes (GdkWindow *window)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (toplevel->have_sticky && toplevel->on_all_desktops)
|
||||
if (toplevel->have_sticky || toplevel->on_all_desktops)
|
||||
gdk_synthesize_window_state (window,
|
||||
0,
|
||||
GDK_WINDOW_STATE_STICKY);
|
||||
@ -459,33 +459,29 @@ gdk_check_wm_desktop_changed (GdkWindow *window)
|
||||
gint format;
|
||||
gulong nitems;
|
||||
gulong bytes_after;
|
||||
guchar *data;
|
||||
gulong *desktop;
|
||||
|
||||
if (toplevel->have_sticky)
|
||||
type = None;
|
||||
gdk_error_trap_push ();
|
||||
XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display),
|
||||
GDK_WINDOW_XID (window),
|
||||
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_DESKTOP"),
|
||||
0, G_MAXLONG, False, XA_CARDINAL, &type,
|
||||
&format, &nitems,
|
||||
&bytes_after, &data);
|
||||
gdk_error_trap_pop ();
|
||||
|
||||
if (type != None)
|
||||
{
|
||||
guchar *data;
|
||||
gulong *desktop;
|
||||
|
||||
type = None;
|
||||
gdk_error_trap_push ();
|
||||
XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display),
|
||||
GDK_WINDOW_XID (window),
|
||||
gdk_x11_get_xatom_by_name_for_display (display, "_NET_WM_DESKTOP"),
|
||||
0, G_MAXLONG, False, XA_CARDINAL, &type,
|
||||
&format, &nitems,
|
||||
&bytes_after, &data);
|
||||
gdk_error_trap_pop ();
|
||||
|
||||
if (type != None)
|
||||
{
|
||||
desktop = (gulong *)data;
|
||||
toplevel->on_all_desktops = (*desktop == 0xFFFFFFFF);
|
||||
XFree (desktop);
|
||||
}
|
||||
else
|
||||
toplevel->on_all_desktops = FALSE;
|
||||
|
||||
do_net_wm_state_changes (window);
|
||||
desktop = (gulong *)data;
|
||||
toplevel->on_all_desktops = (*desktop == 0xFFFFFFFF);
|
||||
XFree (desktop);
|
||||
}
|
||||
else
|
||||
toplevel->on_all_desktops = FALSE;
|
||||
|
||||
do_net_wm_state_changes (window);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user