diff --git a/gdk/gdkinternals.h b/gdk/gdkinternals.h index cb63b6bbbf..4702f7ec9e 100644 --- a/gdk/gdkinternals.h +++ b/gdk/gdkinternals.h @@ -282,6 +282,12 @@ void gdk_seat_ungrab (GdkSeat *seat); GdkSurface * gdk_surface_new_temp (GdkDisplay *display, const GdkRectangle *position); + +void gdk_surface_set_fullscreen_mode (GdkSurface *surface, + GdkFullscreenMode mode); +GdkFullscreenMode gdk_surface_get_fullscreen_mode (GdkSurface *surface); + + G_END_DECLS #endif /* __GDK_INTERNALS_H__ */ diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index 6b822ffb2f..4e6cce46df 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -642,22 +642,26 @@ gdk_surface_set_property (GObject *object, break; case LAST_PROP + GDK_POPUP_NUM_PROPERTIES + GDK_TOPLEVEL_PROP_TITLE: - gdk_surface_set_title (surface, g_value_get_string (value)); + 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_set_startup_id (surface, g_value_get_string (value)); + 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_set_transient_for (surface, g_value_get_object (value)); + 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_set_icon_list (surface, g_value_get_pointer (value)); + 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: @@ -1120,23 +1124,6 @@ gdk_surface_is_viewable (GdkSurface *surface) return surface->viewable; } -/** - * gdk_surface_get_state: - * @surface: a #GdkSurface - * - * Gets the bitwise OR of the currently active surface state flags, - * from the #GdkSurfaceState enumeration. - * - * Returns: surface state bitfield - **/ -GdkSurfaceState -gdk_surface_get_state (GdkSurface *surface) -{ - g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE); - - return surface->state; -} - GdkGLContext * gdk_surface_get_shared_data_gl_context (GdkSurface *surface) { @@ -1904,120 +1891,6 @@ gdk_surface_show_internal (GdkSurface *surface, gboolean raise) } } -/** - * gdk_surface_show_unraised: - * @surface: a #GdkSurface - * - * Shows a #GdkSurface onscreen, but does not modify its stacking - * order. In contrast, gdk_surface_show() will raise the surface - * to the top of the surface stack. - * - * On the X11 platform, in Xlib terms, this function calls - * XMapWindow() (it also updates some internal GDK state, which means - * that you can’t really use XMapWindow() directly on a GDK surface). - */ -void -gdk_surface_show_unraised (GdkSurface *surface) -{ - gdk_surface_show_internal (surface, FALSE); -} - -/** - * gdk_surface_raise: - * @surface: a #GdkSurface - * - * Raises @surface to the top of the Z-order (stacking order), so that - * other surfaces with the same parent surface appear below @surface. - * This is true whether or not the surfaces are visible. - * - * If @surface is a toplevel, the window manager may choose to deny the - * request to move the surface in the Z-order, gdk_surface_raise() only - * requests the restack, does not guarantee it. - */ -void -gdk_surface_raise (GdkSurface *surface) -{ - g_return_if_fail (GDK_IS_SURFACE (surface)); - - if (surface->destroyed) - return; - - gdk_surface_raise_internal (surface); -} - -static void -gdk_surface_lower_internal (GdkSurface *surface) -{ - GDK_SURFACE_GET_CLASS (surface)->lower (surface); -} - -/** - * gdk_surface_lower: - * @surface: a #GdkSurface - * - * Lowers @surface to the bottom of the Z-order (stacking order), so that - * other surfaces with the same parent surface appear above @surface. - * This is true whether or not the other surfaces are visible. - * - * If @surface is a toplevel, the window manager may choose to deny the - * request to move the surface in the Z-order, gdk_surface_lower() only - * requests the restack, does not guarantee it. - * - * Note that gdk_surface_show() raises the surface again, so don’t call this - * function before gdk_surface_show(). (Try gdk_surface_show_unraised().) - */ -void -gdk_surface_lower (GdkSurface *surface) -{ - g_return_if_fail (GDK_IS_SURFACE (surface)); - - if (surface->destroyed) - return; - - /* Keep children in (reverse) stacking order */ - gdk_surface_lower_internal (surface); -} - -/** - * gdk_surface_restack: - * @surface: a #GdkSurface - * @sibling: (allow-none): a #GdkSurface that is a sibling of @surface, or %NULL - * @above: a boolean - * - * Changes the position of @surface in the Z-order (stacking order), so that - * it is above @sibling (if @above is %TRUE) or below @sibling (if @above is - * %FALSE). - * - * If @sibling is %NULL, then this either raises (if @above is %TRUE) or - * lowers the surface. - * - * If @surface is a toplevel, the window manager may choose to deny the - * request to move the surface in the Z-order, gdk_surface_restack() only - * requests the restack, does not guarantee it. - */ -void -gdk_surface_restack (GdkSurface *surface, - GdkSurface *sibling, - gboolean above) -{ - g_return_if_fail (GDK_IS_SURFACE (surface)); - g_return_if_fail (sibling == NULL || GDK_IS_SURFACE (sibling)); - - if (surface->destroyed) - return; - - if (sibling == NULL) - { - if (above) - gdk_surface_raise (surface); - else - gdk_surface_lower (surface); - return; - } - - GDK_SURFACE_GET_CLASS (surface)->restack_toplevel (surface, sibling, above); -} - /** * gdk_surface_show: * @surface: a #GdkSurface @@ -2226,9 +2099,9 @@ gdk_toplevel_surface_present (GdkToplevel *toplevel, GDK_SURFACE_GET_CLASS (surface)->toplevel_resize (surface, width, height); if (gdk_toplevel_layout_get_maximized (layout)) - gdk_surface_maximize (surface); + GDK_SURFACE_GET_CLASS (surface)->maximize (surface); else - gdk_surface_unmaximize (surface); + GDK_SURFACE_GET_CLASS (surface)->unmaximize (surface); if (gdk_toplevel_layout_get_fullscreen (layout)) { @@ -2638,58 +2511,6 @@ gdk_surface_set_input_region (GdkSurface *surface, GDK_SURFACE_GET_CLASS (surface)->set_input_region (surface, surface->input_region); } -/** - * gdk_surface_get_modal_hint: - * @surface: A toplevel #GdkSurface. - * - * Determines whether or not the window manager is hinted that @surface - * has modal behaviour. - * - * Returns: whether or not the surface has the modal hint set. - */ -gboolean -gdk_surface_get_modal_hint (GdkSurface *surface) -{ - g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE); - - return surface->modal_hint; -} - -/** - * gdk_surface_get_accept_focus: - * @surface: a toplevel #GdkSurface. - * - * Determines whether or not the desktop environment shuld be hinted that - * the surface does not want to receive input focus. - * - * Returns: whether or not the surface should receive input focus. - */ -gboolean -gdk_surface_get_accept_focus (GdkSurface *surface) -{ - g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE); - - return surface->accept_focus; -} - -/** - * gdk_surface_get_focus_on_map: - * @surface: a toplevel #GdkSurface. - * - * Determines whether or not the desktop environment should be hinted that the - * surface does not want to receive input focus when it is mapped. - * - * Returns: whether or not the surface wants to receive input focus when - * it is mapped. - */ -gboolean -gdk_surface_get_focus_on_map (GdkSurface *surface) -{ - g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE); - - return surface->focus_on_map; -} - static void update_cursor (GdkDisplay *display, GdkDevice *device) @@ -2955,455 +2776,6 @@ gdk_surface_create_similar_surface (GdkSurface * surface, return similar_surface; } -/** - * gdk_surface_focus: - * @surface: a #GdkSurface - * @timestamp: timestamp of the event triggering the surface focus - * - * Sets keyboard focus to @surface. In most cases, gtk_window_present_with_time() - * should be used on a #GtkWindow, rather than calling this function. - * - **/ -void -gdk_surface_focus (GdkSurface *surface, - guint32 timestamp) -{ - GDK_SURFACE_GET_CLASS (surface)->focus (surface, timestamp); -} - -/** - * gdk_surface_set_type_hint: - * @surface: A toplevel #GdkSurface - * @hint: A hint of the function this surface will have - * - * The application can use this call to provide a hint to the surface - * manager about the functionality of a surface. The window manager - * can use this information when determining the decoration and behaviour - * of the surface. - * - * The hint must be set before the surface is mapped. - **/ -void -gdk_surface_set_type_hint (GdkSurface *surface, - GdkSurfaceTypeHint hint) -{ - GDK_SURFACE_GET_CLASS (surface)->set_type_hint (surface, hint); -} - -/** - * gdk_surface_get_type_hint: - * @surface: A toplevel #GdkSurface - * - * This function returns the type hint set for a surface. - * - * Returns: The type hint set for @surface - **/ -GdkSurfaceTypeHint -gdk_surface_get_type_hint (GdkSurface *surface) -{ - return GDK_SURFACE_GET_CLASS (surface)->get_type_hint (surface); -} - -/** - * gdk_surface_set_modal_hint: - * @surface: A toplevel #GdkSurface - * @modal: %TRUE if the surface is modal, %FALSE otherwise. - * - * The application can use this hint to tell the window manager - * that a certain surface has modal behaviour. The window manager - * can use this information to handle modal surfaces in a special - * way. - * - * You should only use this on surfaces for which you have - * previously called gdk_surface_set_transient_for() - **/ -void -gdk_surface_set_modal_hint (GdkSurface *surface, - gboolean modal) -{ - GDK_SURFACE_GET_CLASS (surface)->set_modal_hint (surface, modal); -} - -/** - * gdk_surface_set_geometry_hints: - * @surface: a toplevel #GdkSurface - * @geometry: geometry hints - * @geom_mask: bitmask indicating fields of @geometry to pay attention to - * - * Sets the geometry hints for @surface. Hints flagged in @geom_mask - * are set, hints not flagged in @geom_mask are unset. - * To unset all hints, use a @geom_mask of 0 and a @geometry of %NULL. - * - * This function provides hints to the surfaceing system about - * acceptable sizes for a toplevel surface. The purpose of - * this is to constrain user resizing, but the windowing system - * will typically (but is not required to) also constrain the - * current size of the surface to the provided values and - * constrain programatic resizing via gdk_surface_resize(). - * - * Note that on X11, this effect has no effect on surfaces - * of type %GDK_SURFACE_TEMP since these surfaces are not resizable - * by the user. - * - * Since you can’t count on the windowing system doing the - * constraints for programmatic resizes, you should generally - * call gdk_surface_constrain_size() yourself to determine - * appropriate sizes. - * - **/ -void -gdk_surface_set_geometry_hints (GdkSurface *surface, - const GdkGeometry *geometry, - GdkSurfaceHints geom_mask) -{ - g_return_if_fail (geometry != NULL || geom_mask == 0); - - GDK_SURFACE_GET_CLASS (surface)->set_geometry_hints (surface, geometry, geom_mask); -} - -/** - * gdk_surface_set_title: - * @surface: a toplevel #GdkSurface - * @title: title of @surface - * - * Sets the title of a toplevel surface, to be displayed in the titlebar. - * If you haven’t explicitly set the icon name for the surface - * (using gdk_surface_set_icon_name()), the icon name will be set to - * @title as well. @title must be in UTF-8 encoding (as with all - * user-readable strings in GDK and GTK). @title may not be %NULL. - **/ -void -gdk_surface_set_title (GdkSurface *surface, - const gchar *title) -{ - GDK_SURFACE_GET_CLASS (surface)->set_title (surface, title); -} - -/** - * gdk_surface_set_startup_id: - * @surface: a toplevel #GdkSurface - * @startup_id: a string with startup-notification identifier - * - * When using GTK, typically you should use gtk_window_set_startup_id() - * instead of this low-level function. - **/ -void -gdk_surface_set_startup_id (GdkSurface *surface, - const gchar *startup_id) -{ - GDK_SURFACE_GET_CLASS (surface)->set_startup_id (surface, startup_id); - - g_object_notify (G_OBJECT (surface), "startup-id"); -} - -/** - * gdk_surface_set_transient_for: - * @surface: a toplevel #GdkSurface - * @parent: another toplevel #GdkSurface - * - * Indicates to the window manager that @surface is a transient dialog - * associated with the application surface @parent. This allows the - * window manager to do things like center @surface on @parent and - * keep @surface above @parent. - * - * See gtk_window_set_transient_for() if you’re using #GtkWindow or - * #GtkDialog. - **/ -void -gdk_surface_set_transient_for (GdkSurface *surface, - GdkSurface *parent) -{ - surface->transient_for = parent; - - GDK_SURFACE_GET_CLASS (surface)->set_transient_for (surface, parent); - - g_object_notify (G_OBJECT (surface), "transient-for"); -} - -/** - * gdk_surface_set_accept_focus: - * @surface: a toplevel #GdkSurface - * @accept_focus: %TRUE if the surface should receive input focus - * - * Setting @accept_focus to %FALSE hints the desktop environment that the - * surface doesn’t want to receive input focus. - * - * On X, it is the responsibility of the window manager to interpret this - * hint. ICCCM-compliant window manager usually respect it. - **/ -void -gdk_surface_set_accept_focus (GdkSurface *surface, - gboolean accept_focus) -{ - GDK_SURFACE_GET_CLASS (surface)->set_accept_focus (surface, accept_focus); -} - -/** - * gdk_surface_set_focus_on_map: - * @surface: a toplevel #GdkSurface - * @focus_on_map: %TRUE if the surface should receive input focus when mapped - * - * Setting @focus_on_map to %FALSE hints the desktop environment that the - * surface doesn’t want to receive input focus when it is mapped. - * focus_on_map should be turned off for surfaces that aren’t triggered - * interactively (such as popups from network activity). - * - * On X, it is the responsibility of the window manager to interpret - * this hint. Window managers following the freedesktop.org window - * manager extension specification should respect it. - **/ -void -gdk_surface_set_focus_on_map (GdkSurface *surface, - gboolean focus_on_map) -{ - GDK_SURFACE_GET_CLASS (surface)->set_focus_on_map (surface, focus_on_map); -} - -/** - * gdk_surface_set_icon_list: - * @surface: The #GdkSurface toplevel surface to set the icon of. - * @surfaces: (transfer none) (element-type GdkTexture): - * A list of image surfaces, of different sizes. - * - * Sets a list of icons for the surface. One of these will be used - * to represent the surface when it has been iconified. The icon is - * usually shown in an icon box or some sort of task bar. Which icon - * size is shown depends on the window manager. The window manager - * can scale the icon but setting several size icons can give better - * image quality since the window manager may only need to scale the - * icon by a small amount or not at all. - * - * Note that some platforms don't support surface icons. - */ -void -gdk_surface_set_icon_list (GdkSurface *surface, - GList *textures) -{ - GDK_SURFACE_GET_CLASS (surface)->set_icon_list (surface, textures); - - g_object_notify (G_OBJECT (surface), "icon-list"); -} - -/** - * gdk_surface_set_icon_name: - * @surface: a toplevel #GdkSurface - * @name: (allow-none): name of surface while iconified (minimized) - * - * Surfaces may have a name used while minimized, distinct from the - * name they display in their titlebar. Most of the time this is a bad - * idea from a user interface standpoint. But you can set such a name - * with this function, if you like. - * - * After calling this with a non-%NULL @name, calls to gdk_surface_set_title() - * will not update the icon title. - * - * Using %NULL for @name unsets the icon title; further calls to - * gdk_surface_set_title() will again update the icon title as well. - * - * Note that some platforms don't support surface icons. - **/ -void -gdk_surface_set_icon_name (GdkSurface *surface, - const gchar *name) -{ - GDK_SURFACE_GET_CLASS (surface)->set_icon_name (surface, name); -} - -/** - * gdk_surface_minimize: - * @surface: a toplevel #GdkSurface - * - * Asks to minimize the @surface. - * - * The windowing system may choose to ignore the request. - * - * You can track the result of this request by using the #GdkSurface:state - * property. - * - * This function only makes sense when @surface is a toplevel surface. - */ -void -gdk_surface_minimize (GdkSurface *surface) -{ - g_return_if_fail (GDK_IS_SURFACE (surface)); - - GDK_SURFACE_GET_CLASS (surface)->minimize (surface); -} - -/** - * gdk_surface_unminimize: - * @surface: a toplevel #GdkSurface - * - * Asks to unminimize the @surface. - * - * The windowing system may choose to ignore the request. - * - * You can track the result of this request by using the #GdkSurface:state - * property. - * - * This function only makes sense when @surface is a toplevel surface. - */ -void -gdk_surface_unminimize (GdkSurface *surface) -{ - g_return_if_fail (GDK_IS_SURFACE (surface)); - - GDK_SURFACE_GET_CLASS (surface)->unminimize (surface); -} - -/** - * gdk_surface_stick: - * @surface: a toplevel #GdkSurface - * - * “Pins” a surface such that it’s on all workspaces and does not scroll - * with viewports, for window managers that have scrollable viewports. - * (When using #GtkWindow, gtk_window_stick() may be more useful.) - * - * On the X11 platform, this function depends on window manager - * support, so may have no effect with many window managers. However, - * GDK will do the best it can to convince the window manager to stick - * the surface. For window managers that don’t support this operation, - * there’s nothing you can do to force it to happen. - * - **/ -void -gdk_surface_stick (GdkSurface *surface) -{ - GDK_SURFACE_GET_CLASS (surface)->stick (surface); -} - -/** - * gdk_surface_unstick: - * @surface: a toplevel #GdkSurface - * - * Reverse operation for gdk_surface_stick(); see gdk_surface_stick(), - * and gtk_window_unstick(). - * - **/ -void -gdk_surface_unstick (GdkSurface *surface) -{ - GDK_SURFACE_GET_CLASS (surface)->unstick (surface); -} - -/** - * gdk_surface_maximize: - * @surface: a toplevel #GdkSurface - * - * Maximizes the surface. If the surface was already maximized, then - * this function does nothing. - * - * On X11, asks the window manager to maximize @surface, if the window - * manager supports this operation. Not all window managers support - * this, and some deliberately ignore it or don’t have a concept of - * “maximized”; so you can’t rely on the maximization actually - * happening. But it will happen with most standard window managers, - * and GDK makes a best effort to get it to happen. - * - * On Windows, reliably maximizes the surface. - * - **/ -void -gdk_surface_maximize (GdkSurface *surface) -{ - GDK_SURFACE_GET_CLASS (surface)->maximize (surface); -} - -/** - * gdk_surface_unmaximize: - * @surface: a toplevel #GdkSurface - * - * Unmaximizes the surface. If the surface wasn’t maximized, then this - * function does nothing. - * - * On X11, asks the window manager to unmaximize @surface, if the - * window manager supports this operation. Not all window managers - * support this, and some deliberately ignore it or don’t have a - * concept of “maximized”; so you can’t rely on the unmaximization - * actually happening. But it will happen with most standard window - * managers, and GDK makes a best effort to get it to happen. - * - * On Windows, reliably unmaximizes the surface. - * - **/ -void -gdk_surface_unmaximize (GdkSurface *surface) -{ - GDK_SURFACE_GET_CLASS (surface)->unmaximize (surface); -} - -/** - * gdk_surface_fullscreen: - * @surface: a toplevel #GdkSurface - * - * Moves the surface into fullscreen mode. This means the - * surface covers the entire screen and is above any panels - * or task bars. - * - * If the surface was already fullscreen, then this function does nothing. - * - * On X11, asks the window manager to put @surface in a fullscreen - * state, if the window manager supports this operation. Not all - * window managers support this, and some deliberately ignore it or - * don’t have a concept of “fullscreen”; so you can’t rely on the - * fullscreenification actually happening. But it will happen with - * most standard window managers, and GDK makes a best effort to get - * it to happen. - **/ -void -gdk_surface_fullscreen (GdkSurface *surface) -{ - GDK_SURFACE_GET_CLASS (surface)->fullscreen (surface); -} - -/** - * gdk_surface_fullscreen_on_monitor: - * @surface: a toplevel #GdkSurface - * @monitor: Which monitor to display fullscreen on. - * - * Moves the surface into fullscreen mode on the given monitor. This means - * the surface covers the entire screen and is above any panels or task bars. - * - * If the surface was already fullscreen, then this function does nothing. - **/ -void -gdk_surface_fullscreen_on_monitor (GdkSurface *surface, - GdkMonitor *monitor) -{ - g_return_if_fail (GDK_IS_SURFACE (surface)); - g_return_if_fail (GDK_IS_MONITOR (monitor)); - g_return_if_fail (gdk_monitor_get_display (monitor) == surface->display); - g_return_if_fail (gdk_monitor_is_valid (monitor)); - - if (GDK_SURFACE_GET_CLASS (surface)->fullscreen_on_monitor != NULL) - GDK_SURFACE_GET_CLASS (surface)->fullscreen_on_monitor (surface, monitor); - else - GDK_SURFACE_GET_CLASS (surface)->fullscreen (surface); -} - -/** - * gdk_surface_set_fullscreen_mode: - * @surface: a toplevel #GdkSurface - * @mode: fullscreen mode - * - * Specifies whether the @surface should span over all monitors (in a multi-head - * setup) or only the current monitor when in fullscreen mode. - * - * The @mode argument is from the #GdkFullscreenMode enumeration. - * If #GDK_FULLSCREEN_ON_ALL_MONITORS is specified, the fullscreen @surface will - * span over all monitors of the display. - * - * On X11, searches through the list of monitors display the ones - * which delimit the 4 edges of the entire display and will ask the window - * manager to span the @surface over these monitors. - * - * If the XINERAMA extension is not available or not usable, this function - * has no effect. - * - * Not all window managers support this, so you can’t rely on the fullscreen - * surface to span over the multiple monitors when #GDK_FULLSCREEN_ON_ALL_MONITORS - * is specified. - **/ void gdk_surface_set_fullscreen_mode (GdkSurface *surface, GdkFullscreenMode mode) @@ -3419,14 +2791,6 @@ gdk_surface_set_fullscreen_mode (GdkSurface *surface, } } -/** - * gdk_surface_get_fullscreen_mode: - * @surface: a toplevel #GdkSurface - * - * Obtains the #GdkFullscreenMode of the @surface. - * - * Returns: The #GdkFullscreenMode applied to the surface when fullscreen. - **/ GdkFullscreenMode gdk_surface_get_fullscreen_mode (GdkSurface *surface) { @@ -3435,143 +2799,6 @@ gdk_surface_get_fullscreen_mode (GdkSurface *surface) return surface->fullscreen_mode; } -/** - * gdk_surface_unfullscreen: - * @surface: a toplevel #GdkSurface - * - * Moves the surface out of fullscreen mode. If the surface was not - * fullscreen, does nothing. - * - * On X11, asks the window manager to move @surface out of the fullscreen - * state, if the window manager supports this operation. Not all - * window managers support this, and some deliberately ignore it or - * don’t have a concept of “fullscreen”; so you can’t rely on the - * unfullscreenification actually happening. But it will happen with - * most standard window managers, and GDK makes a best effort to get - * it to happen. - **/ -void -gdk_surface_unfullscreen (GdkSurface *surface) -{ - GDK_SURFACE_GET_CLASS (surface)->unfullscreen (surface); -} - -/** - * gdk_surface_set_keep_above: - * @surface: a toplevel #GdkSurface - * @setting: whether to keep @surface above other surfaces - * - * Set if @surface must be kept above other surfaces. If the - * surface was already above, then this function does nothing. - * - * On X11, asks the window manager to keep @surface above, if the window - * manager supports this operation. Not all window managers support - * this, and some deliberately ignore it or don’t have a concept of - * “keep above”; so you can’t rely on the surface being kept above. - * But it will happen with most standard window managers, - * and GDK makes a best effort to get it to happen. - **/ -void -gdk_surface_set_keep_above (GdkSurface *surface, - gboolean setting) -{ - GDK_SURFACE_GET_CLASS (surface)->set_keep_above (surface, setting); -} - -/** - * gdk_surface_set_keep_below: - * @surface: a toplevel #GdkSurface - * @setting: whether to keep @surface below other surfaces - * - * Set if @surface must be kept below other surfaces. If the - * surface was already below, then this function does nothing. - * - * On X11, asks the window manager to keep @surface below, if the window - * manager supports this operation. Not all window managers support - * this, and some deliberately ignore it or don’t have a concept of - * “keep below”; so you can’t rely on the surface being kept below. - * But it will happen with most standard window managers, - * and GDK makes a best effort to get it to happen. - **/ -void -gdk_surface_set_keep_below (GdkSurface *surface, - gboolean setting) -{ - GDK_SURFACE_GET_CLASS (surface)->set_keep_below (surface, setting); -} - -/** - * gdk_surface_set_decorations: - * @surface: a toplevel #GdkSurface - * @decorations: decoration hint mask - * - * “Decorations” are the features the window manager adds to a toplevel #GdkSurface. - * This function sets the traditional Motif window manager hints that tell the - * window manager which decorations you would like your surface to have. - * Usually you should use gtk_window_set_decorated() on a #GtkWindow instead of - * using the GDK function directly. - * - * The @decorations argument is the logical OR of the fields in - * the #GdkWMDecoration enumeration. If #GDK_DECOR_ALL is included in the - * mask, the other bits indicate which decorations should be turned off. - * If #GDK_DECOR_ALL is not included, then the other bits indicate - * which decorations should be turned on. - * - * Most window managers honor a decorations hint of 0 to disable all decorations, - * but very few honor all possible combinations of bits. - * - **/ -void -gdk_surface_set_decorations (GdkSurface *surface, - GdkWMDecoration decorations) -{ - GDK_SURFACE_GET_CLASS (surface)->set_decorations (surface, decorations); -} - -/** - * gdk_surface_get_decorations: - * @surface: The toplevel #GdkSurface to get the decorations from - * @decorations: (out): The surface decorations will be written here - * - * Returns the decorations set on the GdkSurface with - * gdk_surface_set_decorations(). - * - * Returns: %TRUE if the surface has decorations set, %FALSE otherwise. - **/ -gboolean -gdk_surface_get_decorations (GdkSurface *surface, - GdkWMDecoration *decorations) -{ - return GDK_SURFACE_GET_CLASS (surface)->get_decorations (surface, decorations); -} - -/** - * gdk_surface_set_functions: - * @surface: a toplevel #GdkSurface - * @functions: bitmask of operations to allow on @surface - * - * Sets hints about the window management functions to make available - * via buttons on the window frame. - * - * On the X backend, this function sets the traditional Motif window - * manager hint for this purpose. However, few window managers do - * anything reliable or interesting with this hint. Many ignore it - * entirely. - * - * The @functions argument is the logical OR of values from the - * #GdkWMFunction enumeration. If the bitmask includes #GDK_FUNC_ALL, - * then the other bits indicate which functions to disable; if - * it doesn’t include #GDK_FUNC_ALL, it indicates which functions to - * enable. - * - **/ -void -gdk_surface_set_functions (GdkSurface *surface, - GdkWMFunction functions) -{ - GDK_SURFACE_GET_CLASS (surface)->set_functions (surface, functions); -} - /** * gdk_surface_begin_resize_drag: * @surface: a toplevel #GdkSurface @@ -3972,35 +3199,6 @@ gdk_surface_set_shadow_width (GdkSurface *surface, class->set_shadow_width (surface, left, right, top, bottom); } -/** - * gdk_surface_show_window_menu: - * @surface: a #GdkSurface - * @event: a #GdkEvent to show the menu for - * - * Asks the windowing system to show the window menu. The window menu - * is the menu shown when right-clicking the titlebar on traditional - * windows managed by the window manager. This is useful for windows - * using client-side decorations, activating it with a right-click - * on the window decorations. - * - * Returns: %TRUE if the window menu was shown and %FALSE otherwise. - */ -gboolean -gdk_surface_show_window_menu (GdkSurface *surface, - GdkEvent *event) -{ - GdkSurfaceClass *class; - - g_return_val_if_fail (GDK_IS_SURFACE (surface), FALSE); - g_return_val_if_fail (!GDK_SURFACE_DESTROYED (surface), FALSE); - - class = GDK_SURFACE_GET_CLASS (surface); - if (class->show_window_menu) - return class->show_window_menu (surface, event); - else - return FALSE; -} - gboolean gdk_surface_supports_edge_constraints (GdkSurface *surface) { diff --git a/gdk/gdksurface.h b/gdk/gdksurface.h index bec64d2df7..1f4e6e1e44 100644 --- a/gdk/gdksurface.h +++ b/gdk/gdksurface.h @@ -357,34 +357,10 @@ void gdk_surface_show (GdkSurface *surface); GDK_AVAILABLE_IN_ALL void gdk_surface_hide (GdkSurface *surface); GDK_AVAILABLE_IN_ALL -void gdk_surface_show_unraised (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL void gdk_surface_resize (GdkSurface *surface, gint width, gint height); -GDK_AVAILABLE_IN_ALL -void gdk_surface_raise (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_lower (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_restack (GdkSurface *surface, - GdkSurface *sibling, - gboolean above); -GDK_AVAILABLE_IN_ALL -void gdk_surface_focus (GdkSurface *surface, - guint32 timestamp); -GDK_AVAILABLE_IN_ALL -gboolean gdk_surface_get_accept_focus (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_accept_focus (GdkSurface *surface, - gboolean accept_focus); -GDK_AVAILABLE_IN_ALL -gboolean gdk_surface_get_focus_on_map (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_focus_on_map (GdkSurface *surface, - gboolean focus_on_map); - GDK_AVAILABLE_IN_ALL void gdk_surface_set_input_region (GdkSurface *surface, cairo_region_t *region); @@ -395,36 +371,6 @@ gboolean gdk_surface_is_viewable (GdkSurface *surface); GDK_AVAILABLE_IN_ALL gboolean gdk_surface_get_mapped (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -GdkSurfaceState gdk_surface_get_state (GdkSurface *surface); - -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_type_hint (GdkSurface *surface, - GdkSurfaceTypeHint hint); -GDK_AVAILABLE_IN_ALL -GdkSurfaceTypeHint gdk_surface_get_type_hint (GdkSurface *surface); - -GDK_AVAILABLE_IN_ALL -gboolean gdk_surface_get_modal_hint (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_modal_hint (GdkSurface *surface, - gboolean modal); - -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_geometry_hints (GdkSurface *surface, - const GdkGeometry *geometry, - GdkSurfaceHints geom_mask); - -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_title (GdkSurface *surface, - const gchar *title); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_startup_id (GdkSurface *surface, - const gchar *startup_id); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_transient_for (GdkSurface *surface, - GdkSurface *parent); - GDK_AVAILABLE_IN_ALL void gdk_surface_set_cursor (GdkSurface *surface, GdkCursor *cursor); @@ -456,21 +402,6 @@ void gdk_surface_get_device_position (GdkSurface *surface, double *x, double *y, GdkModifierType *mask); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_icon_list (GdkSurface *surface, - GList *surfaces); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_icon_name (GdkSurface *surface, - const gchar *name); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_decorations (GdkSurface *surface, - GdkWMDecoration decorations); -GDK_AVAILABLE_IN_ALL -gboolean gdk_surface_get_decorations (GdkSurface *surface, - GdkWMDecoration *decorations); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_functions (GdkSurface *surface, - GdkWMFunction functions); GDK_AVAILABLE_IN_ALL cairo_surface_t * @@ -482,37 +413,6 @@ cairo_surface_t * GDK_AVAILABLE_IN_ALL void gdk_surface_beep (GdkSurface *surface); GDK_AVAILABLE_IN_ALL -void gdk_surface_minimize (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_unminimize (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_stick (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_unstick (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_maximize (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_unmaximize (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_fullscreen (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_fullscreen_on_monitor (GdkSurface *surface, - GdkMonitor *monitor); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_fullscreen_mode (GdkSurface *surface, - GdkFullscreenMode mode); -GDK_AVAILABLE_IN_ALL -GdkFullscreenMode - gdk_surface_get_fullscreen_mode (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_unfullscreen (GdkSurface *surface); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_keep_above (GdkSurface *surface, - gboolean setting); -GDK_AVAILABLE_IN_ALL -void gdk_surface_set_keep_below (GdkSurface *surface, - gboolean setting); -GDK_AVAILABLE_IN_ALL void gdk_surface_set_opacity (GdkSurface *surface, gdouble opacity); @@ -568,9 +468,6 @@ void gdk_surface_set_shadow_width (GdkSurface *surface, gint right, gint top, gint bottom); -GDK_AVAILABLE_IN_ALL -gboolean gdk_surface_show_window_menu (GdkSurface *surface, - GdkEvent *event); GDK_AVAILABLE_IN_ALL GdkCairoContext *gdk_surface_create_cairo_context(GdkSurface *surface);