From c00ec402c1f8ec0754a3ee45790b43ebda39b6cc Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 8 Mar 2020 09:21:18 -0700 Subject: [PATCH] surface: Don't implement subtypes in the frontend These are now provided by the backend. --- gdk/gdksurface.c | 351 +---------------------------------------------- 1 file changed, 1 insertion(+), 350 deletions(-) diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 02b0b7a7dd..89ae522c93 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -112,17 +112,7 @@ static void gdk_surface_set_frame_clock (GdkSurface *surface, static guint signals[LAST_SIGNAL] = { 0 }; static GParamSpec *properties[LAST_PROP] = { NULL, }; -static void gdk_surface_popup_init (GdkPopupInterface *iface); -static void gdk_surface_toplevel_init (GdkToplevelInterface *iface); -static void gdk_surface_drag_surface_init (GdkDragSurfaceInterface *iface); - -G_DEFINE_ABSTRACT_TYPE_WITH_CODE (GdkSurface, gdk_surface, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (GDK_TYPE_POPUP, - gdk_surface_popup_init) - G_IMPLEMENT_INTERFACE (GDK_TYPE_TOPLEVEL, - gdk_surface_toplevel_init) - G_IMPLEMENT_INTERFACE (GDK_TYPE_DRAG_SURFACE, - gdk_surface_drag_surface_init)) +G_DEFINE_ABSTRACT_TYPE (GdkSurface, gdk_surface, G_TYPE_OBJECT) static gboolean gdk_surface_real_beep (GdkSurface *surface) @@ -465,8 +455,6 @@ gdk_surface_class_init (GdkSurfaceClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); g_object_class_install_properties (object_class, LAST_PROP, properties); - gdk_popup_install_properties (object_class, LAST_PROP); - gdk_toplevel_install_properties (object_class, LAST_PROP + GDK_POPUP_NUM_PROPERTIES); /** * GdkSurface::popup-layout-changed @@ -635,85 +623,6 @@ gdk_surface_set_property (GObject *object, surface->surface_type = g_value_get_enum (value); break; - case LAST_PROP + GDK_POPUP_PROP_PARENT: - surface->parent = g_value_dup_object (value); - if (surface->parent != NULL) - surface->parent->children = g_list_prepend (surface->parent->children, surface); - break; - - case LAST_PROP + GDK_POPUP_PROP_AUTOHIDE: - surface->autohide = g_value_get_boolean (value); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_TITLE: - GDK_SURFACE_GET_CLASS (surface)->set_title (surface, g_value_get_string (value)); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_STARTUP_ID: - GDK_SURFACE_GET_CLASS (surface)->set_startup_id (surface, g_value_get_string (value)); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_TRANSIENT_FOR: - GDK_SURFACE_GET_CLASS (surface)->set_transient_for (surface, g_value_get_object (value)); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_MODAL: - GDK_SURFACE_GET_CLASS (surface)->set_modal_hint (surface, g_value_get_boolean (value)); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_ICON_LIST: - GDK_SURFACE_GET_CLASS (surface)->set_icon_list (surface, g_value_get_pointer (value)); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_STICKY: - if (g_value_get_boolean (value)) - GDK_SURFACE_GET_CLASS (surface)->stick (surface); - else - GDK_SURFACE_GET_CLASS (surface)->unstick (surface); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_KEEP_ABOVE: - GDK_SURFACE_GET_CLASS (surface)->set_keep_above (surface, g_value_get_boolean (value)); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_KEEP_BELOW: - GDK_SURFACE_GET_CLASS (surface)->set_keep_below (surface, g_value_get_boolean (value)); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_ACCEPT_FOCUS: - if (surface->accept_focus != g_value_get_boolean (value)) - { - surface->accept_focus = g_value_get_boolean (value); - GDK_SURFACE_GET_CLASS (surface)->set_accept_focus (surface, surface->accept_focus); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - } - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_FOCUS_ON_MAP: - if (surface->focus_on_map != g_value_get_boolean (value)) - { - surface->focus_on_map = g_value_get_boolean (value); - GDK_SURFACE_GET_CLASS (surface)->set_focus_on_map (surface, surface->focus_on_map); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - } - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_DECORATED: - GDK_SURFACE_GET_CLASS (surface)->set_decorations (surface, g_value_get_boolean (value) ? GDK_DECOR_ALL : 0); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_DELETABLE: - GDK_SURFACE_GET_CLASS (surface)->set_functions (surface, g_value_get_boolean (value) ? GDK_FUNC_ALL : GDK_FUNC_ALL | GDK_FUNC_CLOSE); - g_object_notify_by_pspec (G_OBJECT (surface), pspec); - break; - default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -721,8 +630,6 @@ gdk_surface_set_property (GObject *object, } #define GDK_SURFACE_IS_STICKY(surface) (((surface)->state & GDK_SURFACE_STATE_STICKY)) -#define GDK_SURFACE_IS_ABOVE(surface) (((surface)->state & GDK_SURFACE_STATE_ABOVE)) -#define GDK_SURFACE_IS_BELOW(surface) (((surface)->state & GDK_SURFACE_STATE_BELOW)) static void gdk_surface_get_property (GObject *object, @@ -754,66 +661,6 @@ gdk_surface_get_property (GObject *object, g_value_set_enum (value, surface->surface_type); break; - case LAST_PROP + GDK_POPUP_PROP_PARENT: - g_value_set_object (value, surface->parent); - break; - - case LAST_PROP + GDK_POPUP_PROP_AUTOHIDE: - g_value_set_boolean (value, surface->autohide); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_STATE: - g_value_set_flags (value, surface->state); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_TITLE: - g_value_set_string (value, ""); // FIXME - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_STARTUP_ID: - g_value_set_string (value, ""); // FIXME - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_TRANSIENT_FOR: - g_value_set_object (value, NULL); // FIXME - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_MODAL: - g_value_set_boolean (value, surface->modal_hint); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_ICON_LIST: - g_value_set_pointer (value, NULL); // FIXME - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_STICKY: - g_value_set_boolean (value, GDK_SURFACE_IS_STICKY (surface)); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_KEEP_ABOVE: - g_value_set_boolean (value, GDK_SURFACE_IS_ABOVE (surface)); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_KEEP_BELOW: - g_value_set_boolean (value, GDK_SURFACE_IS_BELOW (surface)); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_ACCEPT_FOCUS: - g_value_set_boolean (value, surface->accept_focus); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_FOCUS_ON_MAP: - g_value_set_boolean (value, surface->focus_on_map); - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_DECORATED: - g_value_set_boolean (value, FALSE); // FIXME - break; - - case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_DELETABLE: - g_value_set_boolean (value, FALSE); // FIXME - break; - default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -1983,202 +1830,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS surface->y = 0; } -static gboolean -gdk_popup_surface_present (GdkPopup *popup, - int width, - int height, - GdkPopupLayout *layout) -{ - GdkSurface *surface = GDK_SURFACE (popup); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_POPUP, FALSE); - g_return_val_if_fail (surface->parent, FALSE); - g_return_val_if_fail (!GDK_SURFACE_DESTROYED (surface), FALSE); - - return GDK_SURFACE_GET_CLASS (surface)->present_popup (surface, width, height, layout); -} - -static GdkGravity -gdk_popup_surface_get_surface_anchor (GdkPopup *popup) -{ - GdkSurface *surface = GDK_SURFACE (popup); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_POPUP, GDK_GRAVITY_STATIC); - - return surface->popup.surface_anchor; -} - -static GdkGravity -gdk_popup_surface_get_rect_anchor (GdkPopup *popup) -{ - GdkSurface *surface = GDK_SURFACE (popup); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_POPUP, GDK_GRAVITY_STATIC); - - return surface->popup.rect_anchor; -} - -static int -gdk_popup_surface_get_position_x (GdkPopup *popup) -{ - GdkSurface *surface = GDK_SURFACE (popup); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_POPUP, 0); - - return surface->x; -} - -static int -gdk_popup_surface_get_position_y (GdkPopup *popup) -{ - GdkSurface *surface = GDK_SURFACE (popup); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_POPUP, 0); - - return surface->y; -} - -static void -gdk_surface_popup_init (GdkPopupInterface *iface) -{ - iface->present = gdk_popup_surface_present; - iface->get_surface_anchor = gdk_popup_surface_get_surface_anchor; - iface->get_rect_anchor = gdk_popup_surface_get_rect_anchor; - iface->get_position_x = gdk_popup_surface_get_position_x; - iface->get_position_y = gdk_popup_surface_get_position_y; -} - -static gboolean -gdk_toplevel_surface_present (GdkToplevel *toplevel, - int width, - int height, - GdkToplevelLayout *layout) -{ - GdkSurface *surface = GDK_SURFACE (toplevel); - GdkGeometry geometry; - GdkSurfaceHints mask; - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_TOPLEVEL, FALSE); - g_return_val_if_fail (!GDK_SURFACE_DESTROYED (surface), FALSE); - - GDK_SURFACE_GET_CLASS (surface)->unminimize (surface); - - if (gdk_toplevel_layout_get_resizable (layout)) - { - geometry.min_width = gdk_toplevel_layout_get_min_width (layout); - geometry.min_height = gdk_toplevel_layout_get_min_height (layout); - mask = GDK_HINT_MIN_SIZE; - } - else - { - geometry.max_width = geometry.min_width = width; - geometry.max_height = geometry.min_height = height; - mask = GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE; - } - - GDK_SURFACE_GET_CLASS (surface)->set_geometry_hints (surface, &geometry, mask); - gdk_surface_constrain_size (&geometry, mask, width, height, &width, &height); - GDK_SURFACE_GET_CLASS (surface)->toplevel_resize (surface, width, height); - - if (gdk_toplevel_layout_get_maximized (layout)) - GDK_SURFACE_GET_CLASS (surface)->maximize (surface); - else - GDK_SURFACE_GET_CLASS (surface)->unmaximize (surface); - - if (gdk_toplevel_layout_get_fullscreen (layout)) - { - GdkMonitor *monitor = gdk_toplevel_layout_get_fullscreen_monitor (layout); - if (monitor) - GDK_SURFACE_GET_CLASS (surface)->fullscreen_on_monitor (surface, monitor); - else - GDK_SURFACE_GET_CLASS (surface)->fullscreen (surface); - } - else - GDK_SURFACE_GET_CLASS (surface)->unfullscreen (surface); - - - gdk_surface_show_internal (surface, TRUE); - - return TRUE; -} - -static gboolean -gdk_toplevel_surface_minimize (GdkToplevel *toplevel) -{ - GdkSurface *surface = GDK_SURFACE (toplevel); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_TOPLEVEL, FALSE); - - GDK_SURFACE_GET_CLASS (surface)->minimize (surface); - - return TRUE; -} - -static gboolean -gdk_toplevel_surface_lower (GdkToplevel *toplevel) -{ - GdkSurface *surface = GDK_SURFACE (toplevel); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_TOPLEVEL, FALSE); - - GDK_SURFACE_GET_CLASS (surface)->lower (surface); - - return TRUE; -} - -static void -gdk_toplevel_surface_focus (GdkToplevel *toplevel, - guint32 timestamp) -{ - GdkSurface *surface = GDK_SURFACE (toplevel); - - g_return_if_fail (surface->surface_type == GDK_SURFACE_TOPLEVEL); - - GDK_SURFACE_GET_CLASS (surface)->focus (surface, timestamp); -} - -static gboolean -gdk_toplevel_surface_show_window_menu (GdkToplevel *toplevel, - GdkEvent *event) -{ - GdkSurface *surface = GDK_SURFACE (toplevel); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_TOPLEVEL, FALSE); - - return GDK_SURFACE_GET_CLASS (surface)->show_window_menu (surface, event); -} - -static void -gdk_surface_toplevel_init (GdkToplevelInterface *iface) -{ - iface->present = gdk_toplevel_surface_present; - iface->minimize = gdk_toplevel_surface_minimize; - iface->lower = gdk_toplevel_surface_lower; - iface->focus = gdk_toplevel_surface_focus; - iface->show_window_menu = gdk_toplevel_surface_show_window_menu; -} - -static gboolean -gdk_drag_surface_real_present (GdkDragSurface *drag_surface, - int width, - int height) -{ - GdkSurface *surface = GDK_SURFACE (drag_surface); - - g_return_val_if_fail (surface->surface_type == GDK_SURFACE_TEMP, FALSE); - - GDK_SURFACE_GET_CLASS (surface)->toplevel_resize (surface, width, height); - gdk_surface_show_internal (surface, TRUE); - - return TRUE; -} - -static void -gdk_surface_drag_surface_init (GdkDragSurfaceInterface *iface) -{ - iface->present = gdk_drag_surface_real_present; -} - static void gdk_surface_set_cursor_internal (GdkSurface *surface, GdkDevice *device,