From 4ca3e53a3e4fc0e0484de37f0c19a137384faf9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Thu, 10 Feb 2011 22:51:23 -0500 Subject: [PATCH] wayland: Drop GdkToplevelWayland and gdkwindow-wayland.h --- gdk/wayland/Makefile.am | 1 - gdk/wayland/gdkprivate-wayland.h | 7 ++- gdk/wayland/gdkwindow-wayland.c | 97 +++++++++++++--------------- gdk/wayland/gdkwindow-wayland.h | 104 ------------------------------- 4 files changed, 48 insertions(+), 161 deletions(-) delete mode 100644 gdk/wayland/gdkwindow-wayland.h diff --git a/gdk/wayland/Makefile.am b/gdk/wayland/Makefile.am index 3466311853..036856ae88 100644 --- a/gdk/wayland/Makefile.am +++ b/gdk/wayland/Makefile.am @@ -31,7 +31,6 @@ libgdk_wayland_la_SOURCES = \ gdkscreen-wayland.h \ gdkselection-wayland.c \ gdkwindow-wayland.c \ - gdkwindow-wayland.h \ gdkwayland.h \ gdkprivate-wayland.h diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h index a9256831b0..e876494017 100644 --- a/gdk/wayland/gdkprivate-wayland.h +++ b/gdk/wayland/gdkprivate-wayland.h @@ -33,7 +33,6 @@ #include #include -#include #include #include "gdkinternals.h" @@ -45,7 +44,11 @@ #define GDK_WINDOW_DISPLAY(win) (GDK_SCREEN_WAYLAND (GDK_WINDOW_SCREEN (win))->display) #define GDK_WINDOW_IS_WAYLAND(win) (GDK_IS_WINDOW_IMPL_WAYLAND (((GdkWindow *)win)->impl)) -GType _gdk_wayland_window_get_type (void); +GType _gdk_wayland_window_get_type (void); +void _gdk_wayland_window_update_size (GdkWindow *window, + int32_t width, + int32_t height, + uint32_t edges); GdkKeymap *_gdk_wayland_keymap_new (GdkDisplay *display); struct xkb_desc *_gdk_wayland_keymap_get_xkb_desc (GdkKeymap *keymap); diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c index 2f53d81ae2..1e55e4477e 100644 --- a/gdk/wayland/gdkwindow-wayland.c +++ b/gdk/wayland/gdkwindow-wayland.c @@ -31,7 +31,6 @@ #include "gdkscreen-wayland.h" #include "gdkprivate-wayland.h" #include "gdkinternals.h" -#include "gdkwindow-wayland.h" #include "gdkdeviceprivate.h" #include @@ -96,7 +95,6 @@ struct _GdkWindowImplWayland GdkWindow *wrapper; - GdkToplevelWayland *toplevel; /* Toplevel-specific information */ GdkCursor *cursor; GHashTable *device_cursor; @@ -109,6 +107,45 @@ struct _GdkWindowImplWayland cairo_surface_t *server_surface; GLuint texture; uint32_t resize_edges; + + /* Set if the window, or any descendent of it, is the server's focus window + */ + guint has_focus_window : 1; + + /* Set if window->has_focus_window and the focus isn't grabbed elsewhere. + */ + guint has_focus : 1; + + /* Set if the pointer is inside this window. (This is needed for + * for focus tracking) + */ + guint has_pointer : 1; + + /* Set if the window is a descendent of the focus window and the pointer is + * inside it. (This is the case where the window will receive keystroke + * events even window->has_focus_window is FALSE) + */ + guint has_pointer_focus : 1; + + /* Set if we are requesting these hints */ + guint skip_taskbar_hint : 1; + guint skip_pager_hint : 1; + guint urgency_hint : 1; + + 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 */ + + gulong map_serial; /* Serial of last transition from unmapped */ + + cairo_surface_t *icon_pixmap; + cairo_surface_t *icon_mask; + + /* Time of most recent user interaction. */ + gulong user_time; }; struct _GdkWindowImplWaylandClass @@ -126,24 +163,6 @@ _gdk_window_impl_wayland_init (GdkWindowImplWayland *impl) (GDestroyNotify) gdk_cursor_unref); } -GdkToplevelWayland * -_gdk_wayland_window_get_toplevel (GdkWindow *window) -{ - GdkWindowImplWayland *impl; - - g_return_val_if_fail (GDK_IS_WINDOW (window), NULL); - - if (!WINDOW_IS_TOPLEVEL (window)) - return NULL; - - impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); - - if (!impl->toplevel) - impl->toplevel = g_new0 (GdkToplevelWayland, 1); - - return impl->toplevel; -} - /** * _gdk_wayland_window_update_size: * @drawable: a #GdkDrawableImplWayland. @@ -276,22 +295,6 @@ _gdk_wayland_display_create_window_impl (GdkDisplay *display, gdk_window_set_type_hint (window, attributes->type_hint); } -static void -gdk_toplevel_wayland_free_contents (GdkDisplay *display, - GdkToplevelWayland *toplevel) -{ - if (toplevel->icon_pixmap) - { - cairo_surface_destroy (toplevel->icon_pixmap); - toplevel->icon_pixmap = NULL; - } - if (toplevel->icon_mask) - { - cairo_surface_destroy (toplevel->icon_mask); - toplevel->icon_mask = NULL; - } -} - static const cairo_user_data_key_t gdk_wayland_cairo_key; typedef struct _GdkWaylandCairoSurfaceData { @@ -362,8 +365,6 @@ gdk_window_impl_wayland_finalize (GObject *object) impl = GDK_WINDOW_IMPL_WAYLAND (object); - g_free (impl->toplevel); - if (impl->cursor) gdk_cursor_unref (impl->cursor); if (impl->server_surface) @@ -458,22 +459,16 @@ gdk_wayland_window_show (GdkWindow *window, gboolean already_mapped) { GdkDisplay *display; GdkDisplayWayland *display_wayland; - GdkToplevelWayland *toplevel; GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); GdkEvent *event; display = gdk_window_get_display (window); display_wayland = GDK_DISPLAY_WAYLAND (display); - if (WINDOW_IS_TOPLEVEL (window)) - { - toplevel = _gdk_wayland_window_get_toplevel (window); - - if (toplevel->user_time != 0 && - display_wayland->user_time != 0 && - XSERVER_TIME_IS_LATER (display_wayland->user_time, toplevel->user_time)) - gdk_wayland_window_set_user_time (window, display_wayland->user_time); - } + if (impl->user_time != 0 && + display_wayland->user_time != 0 && + XSERVER_TIME_IS_LATER (display_wayland->user_time, impl->user_time)) + gdk_wayland_window_set_user_time (window, impl->user_time); impl->surface = wl_compositor_create_surface(display_wayland->compositor); wl_surface_set_user_data(impl->surface, window); @@ -742,16 +737,10 @@ gdk_wayland_window_destroy (GdkWindow *window, gboolean recursing, gboolean foreign_destroy) { - GdkToplevelWayland *toplevel; GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl); g_return_if_fail (GDK_IS_WINDOW (window)); - toplevel = _gdk_wayland_window_get_toplevel (window); - if (toplevel) - gdk_toplevel_wayland_free_contents (gdk_window_get_display (window), - toplevel); - if (impl->cairo_surface) { cairo_surface_finish (impl->cairo_surface); diff --git a/gdk/wayland/gdkwindow-wayland.h b/gdk/wayland/gdkwindow-wayland.h deleted file mode 100644 index 016ce6ab3b..0000000000 --- a/gdk/wayland/gdkwindow-wayland.h +++ /dev/null @@ -1,104 +0,0 @@ -/* GDK - The GIMP Drawing Kit - * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. - */ - -/* - * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS - * file for a list of people on the GTK+ Team. See the ChangeLog - * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. - */ - -#ifndef __GDK_WINDOW_WAYLAND_H__ -#define __GDK_WINDOW_WAYLAND_H__ - -#include -#include - -#include -#include -#include -#include -#include -#include - -G_BEGIN_DECLS - -typedef struct _GdkToplevelWayland GdkToplevelWayland; -typedef struct _GdkXPositionInfo GdkXPositionInfo; - -struct _GdkToplevelWayland -{ - - /* Set if the window, or any descendent of it, is the server's focus window - */ - guint has_focus_window : 1; - - /* Set if window->has_focus_window and the focus isn't grabbed elsewhere. - */ - guint has_focus : 1; - - /* Set if the pointer is inside this window. (This is needed for - * for focus tracking) - */ - guint has_pointer : 1; - - /* Set if the window is a descendent of the focus window and the pointer is - * inside it. (This is the case where the window will receive keystroke - * events even window->has_focus_window is FALSE) - */ - guint has_pointer_focus : 1; - - /* Set if we are requesting these hints */ - guint skip_taskbar_hint : 1; - guint skip_pager_hint : 1; - guint urgency_hint : 1; - - 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 */ - - gulong map_serial; /* Serial of last transition from unmapped */ - - cairo_surface_t *icon_pixmap; - cairo_surface_t *icon_mask; - - /* Time of most recent user interaction. */ - gulong user_time; -}; - -GType _gdk_window_impl_wayland_get_type (void); - -GdkToplevelWayland *_gdk_wayland_window_get_toplevel (GdkWindow *window); - -GdkCursor *_gdk_wayland_window_get_cursor (GdkWindow *window); -void _gdk_wayland_window_get_offsets (GdkWindow *window, - gint *x_offset, - gint *y_offset); - -void _gdk_wayland_window_update_size (GdkWindow *window, - int32_t width, - int32_t height, - uint32_t edges); - -G_END_DECLS - -#endif /* __GDK_WINDOW_WAYLAND_H__ */