<?xml version="1.0"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
]>
<refentry id="GdkSurface">
<refmeta>
<refentrytitle role="top_of_page" id="GdkSurface.top_of_page">Surfaces</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo>GDK4 Library</refmiscinfo>
</refmeta>
<refnamediv>
<refname>Surfaces</refname>
<refpurpose>Onscreen display areas in the target window system</refpurpose>
</refnamediv>

<refsect1 id="GdkSurface.functions" role="functions_proto">
<title role="functions_proto.title">Functions</title>
<informaltable pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="functions_return" colwidth="150px"/>
<colspec colname="functions_name"/>
<tbody>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-new-toplevel">gdk_surface_new_toplevel</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-new-popup">gdk_surface_new_popup</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-new-temp">gdk_surface_new_temp</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-new-child">gdk_surface_new_child</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-destroy">gdk_surface_destroy</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurfaceType"><returnvalue>GdkSurfaceType</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-surface-type">gdk_surface_get_surface_type</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkDisplay"><returnvalue>GdkDisplay</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-display">gdk_surface_get_display</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-show">gdk_surface_show</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-show-unraised">gdk_surface_show_unraised</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-hide">gdk_surface_hide</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-is-destroyed">gdk_surface_is_destroyed</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-is-visible">gdk_surface_is_visible</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-is-viewable">gdk_surface_is_viewable</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-is-input-only">gdk_surface_is_input_only</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurfaceState"><returnvalue>GdkSurfaceState</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-state">gdk_surface_get_state</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-withdraw">gdk_surface_withdraw</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-iconify">gdk_surface_iconify</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-deiconify">gdk_surface_deiconify</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-stick">gdk_surface_stick</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-unstick">gdk_surface_unstick</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-maximize">gdk_surface_maximize</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-unmaximize">gdk_surface_unmaximize</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-fullscreen">gdk_surface_fullscreen</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-fullscreen-on-monitor">gdk_surface_fullscreen_on_monitor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-unfullscreen">gdk_surface_unfullscreen</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkFullscreenMode"><returnvalue>GdkFullscreenMode</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-fullscreen-mode">gdk_surface_get_fullscreen_mode</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-fullscreen-mode">gdk_surface_set_fullscreen_mode</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-keep-above">gdk_surface_set_keep_above</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-keep-below">gdk_surface_set_keep_below</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-opacity">gdk_surface_set_opacity</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-pass-through">gdk_surface_set_pass_through</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-pass-through">gdk_surface_get_pass_through</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-move">gdk_surface_move</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-resize">gdk_surface_resize</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-move-resize">gdk_surface_move_resize</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-has-native">gdk_surface_has_native</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-raise">gdk_surface_raise</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-lower">gdk_surface_lower</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-restack">gdk_surface_restack</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-focus">gdk_surface_focus</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-register-dnd">gdk_surface_register_dnd</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-begin-resize-drag">gdk_surface_begin_resize_drag</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-begin-resize-drag-for-device">gdk_surface_begin_resize_drag_for_device</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-begin-move-drag">gdk_surface_begin_move_drag</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-begin-move-drag-for-device">gdk_surface_begin_move_drag_for_device</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-show-window-menu">gdk_surface_show_window_menu</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-constrain-size">gdk_surface_constrain_size</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-beep">gdk_surface_beep</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-scale-factor">gdk_surface_get_scale_factor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-opaque-region">gdk_surface_set_opaque_region</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkGLContext"><returnvalue>GdkGLContext</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-create-gl-context">gdk_surface_create_gl_context</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkVulkanContext"><returnvalue>GdkVulkanContext</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-create-vulkan-context">gdk_surface_create_vulkan_context</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-invalidate-rect">gdk_surface_invalidate_rect</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-invalidate-region">gdk_surface_invalidate_region</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-queue-expose">gdk_surface_queue_expose</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-freeze-updates">gdk_surface_freeze_updates</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-thaw-updates">gdk_surface_thaw_updates</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkFrameClock"><returnvalue>GdkFrameClock</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-frame-clock">gdk_surface_get_frame_clock</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-user-data">gdk_surface_set_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-accept-focus">gdk_surface_set_accept_focus</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-accept-focus">gdk_surface_get_accept_focus</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-focus-on-map">gdk_surface_set_focus_on_map</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-focus-on-map">gdk_surface_get_focus_on_map</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-input-shape-combine-region">gdk_surface_input_shape_combine_region</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-child-input-shapes">gdk_surface_set_child_input_shapes</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-merge-child-input-shapes">gdk_surface_merge_child_input_shapes</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-title">gdk_surface_set_title</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-cursor">gdk_surface_set_cursor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkCursor"><returnvalue>GdkCursor</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-cursor">gdk_surface_get_cursor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-user-data">gdk_surface_get_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-geometry">gdk_surface_get_geometry</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-geometry-hints">gdk_surface_set_geometry_hints</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-width">gdk_surface_get_width</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="int"><returnvalue>int</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-height">gdk_surface_get_height</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-icon-list">gdk_surface_set_icon_list</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-modal-hint">gdk_surface_set_modal_hint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-modal-hint">gdk_surface_get_modal_hint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-type-hint">gdk_surface_set_type_hint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurfaceTypeHint"><returnvalue>GdkSurfaceTypeHint</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-type-hint">gdk_surface_get_type_hint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-shadow-width">gdk_surface_set_shadow_width</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-skip-taskbar-hint">gdk_surface_set_skip_taskbar_hint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-skip-pager-hint">gdk_surface_set_skip_pager_hint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-urgency-hint">gdk_surface_set_urgency_hint</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-position">gdk_surface_get_position</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-root-origin">gdk_surface_get_root_origin</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-frame-extents">gdk_surface_get_frame_extents</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gint"><returnvalue>gint</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-origin">gdk_surface_get_origin</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-root-coords">gdk_surface_get_root_coords</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-device-position">gdk_surface_get_device_position</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-device-position-double">gdk_surface_get_device_position_double</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-parent">gdk_surface_get_parent</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-toplevel">gdk_surface_get_toplevel</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GList"><returnvalue>GList</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-children">gdk_surface_get_children</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GList"><returnvalue>GList</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-children-with-user-data">gdk_surface_get_children_with_user_data</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GList"><returnvalue>GList</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-peek-children">gdk_surface_peek_children</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-icon-name">gdk_surface_set_icon_name</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-transient-for">gdk_surface_set_transient_for</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-role">gdk_surface_set_role</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-startup-id">gdk_surface_set_startup_id</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-group">gdk_surface_set_group</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-group">gdk_surface_get_group</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-decorations">gdk_surface_set_decorations</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-decorations">gdk_surface_get_decorations</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-functions">gdk_surface_set_functions</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-get-support-multidevice">gdk_surface_get_support_multidevice</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-support-multidevice">gdk_surface_set_support_multidevice</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="GdkCursor"><returnvalue>GdkCursor</returnvalue></link>&#160;*
</entry><entry role="function_name"><link linkend="gdk-surface-get-device-cursor">gdk_surface_get_device_cursor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-set-device-cursor">gdk_surface_set_device_cursor</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-coords-from-parent">gdk_surface_coords_from_parent</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>
<row><entry role="function_type"><link linkend="void"><returnvalue>void</returnvalue></link>
</entry><entry role="function_name"><link linkend="gdk-surface-coords-to-parent">gdk_surface_coords_to_parent</link>&#160;<phrase role="c_punctuation">()</phrase></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GdkSurface.properties" role="properties">
<title role="properties.title">Properties</title>
<informaltable frame="none">
<tgroup cols="3">
<colspec colname="properties_type" colwidth="150px"/>
<colspec colname="properties_name" colwidth="300px"/>
<colspec colname="properties_flags" colwidth="200px"/>
<tbody>
<row><entry role="property_type"><link linkend="GdkCursor"><type>GdkCursor</type></link>&#160;*</entry><entry role="property_name"><link linkend="GdkSurface--cursor">cursor</link></entry><entry role="property_flags">Read / Write</entry></row>
<row><entry role="property_type"><link linkend="GdkDisplay"><type>GdkDisplay</type></link>&#160;*</entry><entry role="property_name"><link linkend="GdkSurface--display">display</link></entry><entry role="property_flags">Read / Write / Construct Only</entry></row>
<row><entry role="property_type"><link linkend="GdkSurfaceState"><type>GdkSurfaceState</type></link></entry><entry role="property_name"><link linkend="GdkSurface--state">state</link></entry><entry role="property_flags">Read</entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GdkSurface.signals" role="signal_proto">
<title role="signal_proto.title">Signals</title>
<informaltable frame="none">
<tgroup cols="3">
<colspec colname="signals_return" colwidth="150px"/>
<colspec colname="signals_name" colwidth="300px"/>
<colspec colname="signals_flags" colwidth="200px"/>
<tbody>
<row><entry role="signal_type"><link linkend="void"><returnvalue>void</returnvalue></link></entry><entry role="signal_name"><link linkend="GdkSurface-moved-to-rect">moved-to-rect</link></entry><entry role="signal_flags"><link linkend="G-SIGNAL-RUN-FIRST:CAPS">Run First</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GdkSurface.other" role="other_proto">
<title role="other_proto.title">Types and Values</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="2">
<colspec colname="name" colwidth="150px"/>
<colspec colname="description"/>
<tbody>
<row><entry role="datatype_keyword"></entry><entry role="function_name"><link linkend="GdkSurface-struct">GdkSurface</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkSurfaceType">GdkSurfaceType</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkSurfaceHints">GdkSurfaceHints</link></entry></row>
<row><entry role="datatype_keyword">struct</entry><entry role="function_name"><link linkend="GdkGeometry">GdkGeometry</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkGravity">GdkGravity</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkAnchorHints">GdkAnchorHints</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkSurfaceEdge">GdkSurfaceEdge</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkSurfaceTypeHint">GdkSurfaceTypeHint</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkSurfaceState">GdkSurfaceState</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkFullscreenMode">GdkFullscreenMode</link></entry></row>


<row><entry role="define_keyword">#define</entry><entry role="function_name"><link linkend="GDK-PARENT-RELATIVE:CAPS">GDK_PARENT_RELATIVE</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkModifierType">GdkModifierType</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkModifierIntent">GdkModifierIntent</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkWMDecoration">GdkWMDecoration</link></entry></row>
<row><entry role="datatype_keyword">enum</entry><entry role="function_name"><link linkend="GdkWMFunction">GdkWMFunction</link></entry></row>

</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 id="GdkSurface.object-hierarchy" role="object_hierarchy">
<title role="object_hierarchy.title">Object Hierarchy</title>
<screen>    <link linkend="GObject">GObject</link>
    <phrase role="lineart">&#9584;&#9472;&#9472;</phrase> GdkSurface
</screen>
</refsect1>

<refsect1 id="GdkSurface.includes"><title>Includes</title><synopsis>#include &lt;gdk/gdk.h&gt;
</synopsis></refsect1>

<refsect1 id="GdkSurface.description" role="desc">
<title role="desc.title">Description</title>
<para>A <link linkend="GdkSurface"><type>GdkSurface</type></link> is a (usually) rectangular region on the screen.
It’s a low-level object, used to implement high-level objects such as
<link linkend="GtkWidget"><type>GtkWidget</type></link> and <link linkend="GtkWindow"><type>GtkWindow</type></link> on the GTK+ level. A <link linkend="GtkWindow"><type>GtkWindow</type></link> is a toplevel
surface, the thing a user might think of as a “window” with a titlebar
and so on; a <link linkend="GtkWindow"><type>GtkWindow</type></link> may contain many sub-GdkSurfaces.</para>

</refsect1>
<refsect1 id="GdkSurface.functions_details" role="details">
<title role="details.title">Functions</title>
<refsect2 id="gdk-surface-new-toplevel" role="function">
<title>gdk_surface_new_toplevel&#160;()</title>
<indexterm zone="gdk-surface-new-toplevel"><primary>gdk_surface_new_toplevel</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_new_toplevel (<parameter><link linkend="GdkDisplay"><type>GdkDisplay</type></link> *display</parameter>,
                          <parameter><link linkend="int"><type>int</type></link> width</parameter>,
                          <parameter><link linkend="int"><type>int</type></link> height</parameter>);</programlisting>
<para>Creates a new toplevel surface. The surface will be managed by the surface
manager.</para>

<para><emphasis role="annotation">[<acronym>constructor</acronym>]</emphasis></para><refsect3 id="gdk-surface-new-toplevel.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>display</para></entry>
<entry role="parameter_description"><para>the display to create the surface on</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>width of new surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>height of new surface</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-new-toplevel.returns" role="returns">
<title>Returns</title>
<para>the new <link linkend="GdkSurface"><type>GdkSurface</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-new-popup" role="function">
<title>gdk_surface_new_popup&#160;()</title>
<indexterm zone="gdk-surface-new-popup"><primary>gdk_surface_new_popup</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_new_popup (<parameter><link linkend="GdkDisplay"><type>GdkDisplay</type></link> *display</parameter>,
                       <parameter>const <link linkend="GdkRectangle"><type>GdkRectangle</type></link> *position</parameter>);</programlisting>
<para>Creates a new toplevel popup surface. The surface will bypass surface
management.</para>

<para><emphasis role="annotation">[<acronym>constructor</acronym>]</emphasis></para><refsect3 id="gdk-surface-new-popup.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>display</para></entry>
<entry role="parameter_description"><para>the display to create the surface on</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>position</para></entry>
<entry role="parameter_description"><para>position of the surface on screen</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-new-popup.returns" role="returns">
<title>Returns</title>
<para>the new <link linkend="GdkSurface"><type>GdkSurface</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-new-temp" role="function">
<title>gdk_surface_new_temp&#160;()</title>
<indexterm zone="gdk-surface-new-temp"><primary>gdk_surface_new_temp</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_new_temp (<parameter><link linkend="GdkDisplay"><type>GdkDisplay</type></link> *display</parameter>);</programlisting>
<para>Creates a new toplevel temporary surface. The surface will be
situated off-screen and not handle output.</para>
<para>You most likely do not want to use this function.</para>

<para><emphasis role="annotation">[<acronym>constructor</acronym>]</emphasis></para><refsect3 id="gdk-surface-new-temp.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>display</para></entry>
<entry role="parameter_description"><para>the display to create the surface on</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-new-temp.returns" role="returns">
<title>Returns</title>
<para>the new <link linkend="GdkSurface"><type>GdkSurface</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-new-child" role="function">
<title>gdk_surface_new_child&#160;()</title>
<indexterm zone="gdk-surface-new-child"><primary>gdk_surface_new_child</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_new_child (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *parent</parameter>,
                       <parameter>const <link linkend="GdkRectangle"><type>GdkRectangle</type></link> *position</parameter>);</programlisting>
<para>Creates a new client-side child surface.</para>

<para><emphasis role="annotation">[<acronym>constructor</acronym>]</emphasis></para><refsect3 id="gdk-surface-new-child.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>parent</para></entry>
<entry role="parameter_description"><para>the parent surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>position</para></entry>
<entry role="parameter_description"><para>placement of the surface inside <parameter>parent</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-new-child.returns" role="returns">
<title>Returns</title>
<para>the new <link linkend="GdkSurface"><type>GdkSurface</type></link>. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-destroy" role="function">
<title>gdk_surface_destroy&#160;()</title>
<indexterm zone="gdk-surface-destroy"><primary>gdk_surface_destroy</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_destroy (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Destroys the window system resources associated with <parameter>surface</parameter>
 and decrements <parameter>surface</parameter>
's
reference count. The window system resources for all children of <parameter>surface</parameter>
 are also
destroyed, but the children’s reference counts are not decremented.</para>
<para>Note that a surface will not be destroyed automatically when its reference count
reaches zero. You must call this function yourself before that happens.</para>
<refsect3 id="gdk-surface-destroy.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-surface-type" role="function">
<title>gdk_surface_get_surface_type&#160;()</title>
<indexterm zone="gdk-surface-get-surface-type"><primary>gdk_surface_get_surface_type</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurfaceType"><returnvalue>GdkSurfaceType</returnvalue></link>
gdk_surface_get_surface_type (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Gets the type of the surface. See <link linkend="GdkSurfaceType"><type>GdkSurfaceType</type></link>.</para>
<refsect3 id="gdk-surface-get-surface-type.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-surface-type.returns" role="returns">
<title>Returns</title>
<para> type of surface</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-display" role="function">
<title>gdk_surface_get_display&#160;()</title>
<indexterm zone="gdk-surface-get-display"><primary>gdk_surface_get_display</primary></indexterm>
<programlisting language="C"><link linkend="GdkDisplay"><returnvalue>GdkDisplay</returnvalue></link>&#160;*
gdk_surface_get_display (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Gets the <link linkend="GdkDisplay"><type>GdkDisplay</type></link> associated with a <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para>
<refsect3 id="gdk-surface-get-display.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-display.returns" role="returns">
<title>Returns</title>
<para>the <link linkend="GdkDisplay"><type>GdkDisplay</type></link> associated with <parameter>surface</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-show" role="function">
<title>gdk_surface_show&#160;()</title>
<indexterm zone="gdk-surface-show"><primary>gdk_surface_show</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_show (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Like <link linkend="gdk-surface-show-unraised"><function>gdk_surface_show_unraised()</function></link>, but also raises the surface to the
top of the surface stack (moves the surface to the front of the
Z-order).</para>
<para>This function maps a surface so it’s visible onscreen. Its opposite
is <link linkend="gdk-surface-hide"><function>gdk_surface_hide()</function></link>.</para>
<para>When implementing a <link linkend="GtkWidget"><type>GtkWidget</type></link>, you should call this function on the widget's
<link linkend="GdkSurface"><type>GdkSurface</type></link> as part of the “map” method.</para>
<refsect3 id="gdk-surface-show.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-show-unraised" role="function">
<title>gdk_surface_show_unraised&#160;()</title>
<indexterm zone="gdk-surface-show-unraised"><primary>gdk_surface_show_unraised</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_show_unraised (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Shows a <link linkend="GdkSurface"><type>GdkSurface</type></link> onscreen, but does not modify its stacking
order. In contrast, <link linkend="gdk-surface-show"><function>gdk_surface_show()</function></link> will raise the surface
to the top of the surface stack.</para>
<para>On the X11 platform, in Xlib terms, this function calls
<link linkend="XMapWindow"><function>XMapWindow()</function></link> (it also updates some internal GDK state, which means
that you can’t really use <link linkend="XMapWindow"><function>XMapWindow()</function></link> directly on a GDK surface).</para>
<refsect3 id="gdk-surface-show-unraised.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-hide" role="function">
<title>gdk_surface_hide&#160;()</title>
<indexterm zone="gdk-surface-hide"><primary>gdk_surface_hide</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_hide (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>For toplevel surfaces, withdraws them, so they will no longer be
known to the window manager; for all surfaces, unmaps them, so
they won’t be displayed. Normally done automatically as
part of <link linkend="gtk-widget-hide"><function>gtk_widget_hide()</function></link>.</para>
<refsect3 id="gdk-surface-hide.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-is-destroyed" role="function">
<title>gdk_surface_is_destroyed&#160;()</title>
<indexterm zone="gdk-surface-is-destroyed"><primary>gdk_surface_is_destroyed</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_is_destroyed (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Check to see if a surface is destroyed..</para>
<refsect3 id="gdk-surface-is-destroyed.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-is-destroyed.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface is destroyed</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-is-visible" role="function">
<title>gdk_surface_is_visible&#160;()</title>
<indexterm zone="gdk-surface-is-visible"><primary>gdk_surface_is_visible</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_is_visible (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Checks whether the surface has been mapped (with <link linkend="gdk-surface-show"><function>gdk_surface_show()</function></link> or
<link linkend="gdk-surface-show-unraised"><function>gdk_surface_show_unraised()</function></link>).</para>
<refsect3 id="gdk-surface-is-visible.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-is-visible.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface is mapped</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-is-viewable" role="function">
<title>gdk_surface_is_viewable&#160;()</title>
<indexterm zone="gdk-surface-is-viewable"><primary>gdk_surface_is_viewable</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_is_viewable (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Check if the surface and all ancestors of the surface are
mapped. (This is not necessarily "viewable" in the X sense, since
we only check as far as we have GDK surface parents, not to the root
surface.)</para>
<refsect3 id="gdk-surface-is-viewable.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-is-viewable.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface is viewable</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-is-input-only" role="function">
<title>gdk_surface_is_input_only&#160;()</title>
<indexterm zone="gdk-surface-is-input-only"><primary>gdk_surface_is_input_only</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_is_input_only (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Determines whether or not the surface is an input only surface.</para>
<refsect3 id="gdk-surface-is-input-only.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-is-input-only.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if <parameter>surface</parameter>
is input only</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-state" role="function">
<title>gdk_surface_get_state&#160;()</title>
<indexterm zone="gdk-surface-get-state"><primary>gdk_surface_get_state</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurfaceState"><returnvalue>GdkSurfaceState</returnvalue></link>
gdk_surface_get_state (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Gets the bitwise OR of the currently active surface state flags,
from the <link linkend="GdkSurfaceState"><type>GdkSurfaceState</type></link> enumeration.</para>
<refsect3 id="gdk-surface-get-state.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-state.returns" role="returns">
<title>Returns</title>
<para> surface state bitfield</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-withdraw" role="function">
<title>gdk_surface_withdraw&#160;()</title>
<indexterm zone="gdk-surface-withdraw"><primary>gdk_surface_withdraw</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_withdraw (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Withdraws a surface (unmaps it and asks the surface manager to forget about it).
This function is not really useful as <link linkend="gdk-surface-hide"><function>gdk_surface_hide()</function></link> automatically
withdraws toplevel surfaces before hiding them.</para>
<refsect3 id="gdk-surface-withdraw.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-iconify" role="function">
<title>gdk_surface_iconify&#160;()</title>
<indexterm zone="gdk-surface-iconify"><primary>gdk_surface_iconify</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_iconify (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Asks to iconify (minimize) <parameter>surface</parameter>
. The window manager may choose
to ignore the request, but normally will honor it. Using
<link linkend="gtk-window-iconify"><function>gtk_window_iconify()</function></link> is preferred, if you have a <link linkend="GtkWindow"><type>GtkWindow</type></link> widget.</para>
<para>This function only makes sense when <parameter>surface</parameter>
 is a toplevel surface.</para>
<refsect3 id="gdk-surface-iconify.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-deiconify" role="function">
<title>gdk_surface_deiconify&#160;()</title>
<indexterm zone="gdk-surface-deiconify"><primary>gdk_surface_deiconify</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_deiconify (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Attempt to deiconify (unminimize) <parameter>surface</parameter>
. On X11 the window manager may
choose to ignore the request to deiconify. When using GTK+,
use <link linkend="gtk-window-deiconify"><function>gtk_window_deiconify()</function></link> instead of the <link linkend="GdkSurface"><type>GdkSurface</type></link> variant. Or better yet,
you probably want to use <link linkend="gtk-window-present"><function>gtk_window_present()</function></link>, which raises the surface, focuses it,
unminimizes it, and puts it on the current desktop.</para>
<refsect3 id="gdk-surface-deiconify.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-stick" role="function">
<title>gdk_surface_stick&#160;()</title>
<indexterm zone="gdk-surface-stick"><primary>gdk_surface_stick</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_stick (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>“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 <link linkend="GtkWindow"><type>GtkWindow</type></link>, <link linkend="gtk-window-stick"><function>gtk_window_stick()</function></link> may be more useful.)</para>
<para>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.</para>
<refsect3 id="gdk-surface-stick.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-unstick" role="function">
<title>gdk_surface_unstick&#160;()</title>
<indexterm zone="gdk-surface-unstick"><primary>gdk_surface_unstick</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_unstick (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Reverse operation for <link linkend="gdk-surface-stick"><function>gdk_surface_stick()</function></link>; see <link linkend="gdk-surface-stick"><function>gdk_surface_stick()</function></link>,
and <link linkend="gtk-window-unstick"><function>gtk_window_unstick()</function></link>.</para>
<refsect3 id="gdk-surface-unstick.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-maximize" role="function">
<title>gdk_surface_maximize&#160;()</title>
<indexterm zone="gdk-surface-maximize"><primary>gdk_surface_maximize</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_maximize (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Maximizes the surface. If the surface was already maximized, then
this function does nothing.</para>
<para>On X11, asks the window manager to maximize <parameter>surface</parameter>
, 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.</para>
<para>On Windows, reliably maximizes the surface.</para>
<refsect3 id="gdk-surface-maximize.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-unmaximize" role="function">
<title>gdk_surface_unmaximize&#160;()</title>
<indexterm zone="gdk-surface-unmaximize"><primary>gdk_surface_unmaximize</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_unmaximize (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Unmaximizes the surface. If the surface wasn’t maximized, then this
function does nothing.</para>
<para>On X11, asks the window manager to unmaximize <parameter>surface</parameter>
, 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.</para>
<para>On Windows, reliably unmaximizes the surface.</para>
<refsect3 id="gdk-surface-unmaximize.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-fullscreen" role="function">
<title>gdk_surface_fullscreen&#160;()</title>
<indexterm zone="gdk-surface-fullscreen"><primary>gdk_surface_fullscreen</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_fullscreen (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Moves the surface into fullscreen mode. This means the
surface covers the entire screen and is above any panels
or task bars.</para>
<para>If the surface was already fullscreen, then this function does nothing.</para>
<para>On X11, asks the window manager to put <parameter>surface</parameter>
 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.</para>
<refsect3 id="gdk-surface-fullscreen.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-fullscreen-on-monitor" role="function">
<title>gdk_surface_fullscreen_on_monitor&#160;()</title>
<indexterm zone="gdk-surface-fullscreen-on-monitor"><primary>gdk_surface_fullscreen_on_monitor</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_fullscreen_on_monitor (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                   <parameter><link linkend="GdkMonitor"><type>GdkMonitor</type></link> *monitor</parameter>);</programlisting>
<para>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.</para>
<para>If the surface was already fullscreen, then this function does nothing.</para>
<refsect3 id="gdk-surface-fullscreen-on-monitor.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>monitor</para></entry>
<entry role="parameter_description"><para>Which monitor to display fullscreen on.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-unfullscreen" role="function">
<title>gdk_surface_unfullscreen&#160;()</title>
<indexterm zone="gdk-surface-unfullscreen"><primary>gdk_surface_unfullscreen</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_unfullscreen (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Moves the surface out of fullscreen mode. If the surface was not
fullscreen, does nothing.</para>
<para>On X11, asks the window manager to move <parameter>surface</parameter>
 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.</para>
<refsect3 id="gdk-surface-unfullscreen.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-fullscreen-mode" role="function">
<title>gdk_surface_get_fullscreen_mode&#160;()</title>
<indexterm zone="gdk-surface-get-fullscreen-mode"><primary>gdk_surface_get_fullscreen_mode</primary></indexterm>
<programlisting language="C"><link linkend="GdkFullscreenMode"><returnvalue>GdkFullscreenMode</returnvalue></link>
gdk_surface_get_fullscreen_mode (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Obtains the <link linkend="GdkFullscreenMode"><type>GdkFullscreenMode</type></link> of the <parameter>surface</parameter>
.</para>
<refsect3 id="gdk-surface-get-fullscreen-mode.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-fullscreen-mode.returns" role="returns">
<title>Returns</title>
<para> The <link linkend="GdkFullscreenMode"><type>GdkFullscreenMode</type></link> applied to the surface when fullscreen.</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-fullscreen-mode" role="function">
<title>gdk_surface_set_fullscreen_mode&#160;()</title>
<indexterm zone="gdk-surface-set-fullscreen-mode"><primary>gdk_surface_set_fullscreen_mode</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_fullscreen_mode (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                 <parameter><link linkend="GdkFullscreenMode"><type>GdkFullscreenMode</type></link> mode</parameter>);</programlisting>
<para>Specifies whether the <parameter>surface</parameter>
 should span over all monitors (in a multi-head
setup) or only the current monitor when in fullscreen mode.</para>
<para>The <parameter>mode</parameter>
 argument is from the <link linkend="GdkFullscreenMode"><type>GdkFullscreenMode</type></link> enumeration.
If <link linkend="GDK-FULLSCREEN-ON-ALL-MONITORS:CAPS"><type>GDK_FULLSCREEN_ON_ALL_MONITORS</type></link> is specified, the fullscreen <parameter>surface</parameter>
 will
span over all monitors of the display.</para>
<para>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 <parameter>surface</parameter>
 over these monitors.</para>
<para>If the XINERAMA extension is not available or not usable, this function
has no effect.</para>
<para>Not all window managers support this, so you can’t rely on the fullscreen
surface to span over the multiple monitors when <link linkend="GDK-FULLSCREEN-ON-ALL-MONITORS:CAPS"><type>GDK_FULLSCREEN_ON_ALL_MONITORS</type></link>
is specified.</para>
<refsect3 id="gdk-surface-set-fullscreen-mode.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>mode</para></entry>
<entry role="parameter_description"><para>fullscreen mode</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-keep-above" role="function">
<title>gdk_surface_set_keep_above&#160;()</title>
<indexterm zone="gdk-surface-set-keep-above"><primary>gdk_surface_set_keep_above</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_keep_above (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                            <parameter><link linkend="gboolean"><type>gboolean</type></link> setting</parameter>);</programlisting>
<para>Set if <parameter>surface</parameter>
 must be kept above other surfaces. If the
surface was already above, then this function does nothing.</para>
<para>On X11, asks the window manager to keep <parameter>surface</parameter>
 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.</para>
<refsect3 id="gdk-surface-set-keep-above.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>setting</para></entry>
<entry role="parameter_description"><para>whether to keep <parameter>surface</parameter>
above other surfaces</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-keep-below" role="function">
<title>gdk_surface_set_keep_below&#160;()</title>
<indexterm zone="gdk-surface-set-keep-below"><primary>gdk_surface_set_keep_below</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_keep_below (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                            <parameter><link linkend="gboolean"><type>gboolean</type></link> setting</parameter>);</programlisting>
<para>Set if <parameter>surface</parameter>
 must be kept below other surfaces. If the
surface was already below, then this function does nothing.</para>
<para>On X11, asks the window manager to keep <parameter>surface</parameter>
 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.</para>
<refsect3 id="gdk-surface-set-keep-below.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>setting</para></entry>
<entry role="parameter_description"><para>whether to keep <parameter>surface</parameter>
below other surfaces</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-opacity" role="function">
<title>gdk_surface_set_opacity&#160;()</title>
<indexterm zone="gdk-surface-set-opacity"><primary>gdk_surface_set_opacity</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_opacity (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                         <parameter><link linkend="gdouble"><type>gdouble</type></link> opacity</parameter>);</programlisting>
<para>Set <parameter>surface</parameter>
 to render as partially transparent,
with opacity 0 being fully transparent and 1 fully opaque. (Values
of the opacity parameter are clamped to the [0,1] range.) </para>
<para>For toplevel surfaces this depends on support from the windowing system
that may not always be there. For instance, On X11, this works only on
X screens with a compositing manager running. On Wayland, there is no
per-surface opacity value that the compositor would apply. Instead, use
<literal>gdk_surface_set_opaque_region (surface, NULL)</literal> to tell the compositor
that the entire surface is (potentially) non-opaque, and draw your content
with alpha, or use <link linkend="gtk-widget-set-opacity"><function>gtk_widget_set_opacity()</function></link> to set an overall opacity
for your widgets.</para>
<para>Support for non-toplevel surfaces was added in 3.8.</para>
<refsect3 id="gdk-surface-set-opacity.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a top-level or non-native <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>opacity</para></entry>
<entry role="parameter_description"><para>opacity</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-pass-through" role="function">
<title>gdk_surface_set_pass_through&#160;()</title>
<indexterm zone="gdk-surface-set-pass-through"><primary>gdk_surface_set_pass_through</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_pass_through (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                              <parameter><link linkend="gboolean"><type>gboolean</type></link> pass_through</parameter>);</programlisting>
<para>Sets whether input to the surface is passed through to the surface
below.</para>
<para>The default value of this is <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>, which means that pointer
events that happen inside the surface are send first to the surface,
but if the event is not selected by the event mask then the event
is sent to the parent surface, and so on up the hierarchy.</para>
<para>If <parameter>pass_through</parameter>
 is <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> then such pointer events happen as if the
surface wasn't there at all, and thus will be sent first to any
surfaces below <parameter>surface</parameter>
. This is useful if the surface is used in a
transparent fashion. In the terminology of the web this would be called
"pointer-events: none".</para>
<para>Note that a surface with <parameter>pass_through</parameter>
 <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> can still have a subsurface
without pass through, so you can get events on a subset of a surface. And in
that cases you would get the in-between related events such as the pointer
enter/leave events on its way to the destination surface.</para>
<refsect3 id="gdk-surface-set-pass-through.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>pass_through</para></entry>
<entry role="parameter_description"><para>a boolean</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-pass-through" role="function">
<title>gdk_surface_get_pass_through&#160;()</title>
<indexterm zone="gdk-surface-get-pass-through"><primary>gdk_surface_get_pass_through</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_get_pass_through (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Returns whether input to the surface is passed through to the surface
below.</para>
<para>See <link linkend="gdk-surface-set-pass-through"><function>gdk_surface_set_pass_through()</function></link> for details</para>
<refsect3 id="gdk-surface-get-pass-through.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-move" role="function">
<title>gdk_surface_move&#160;()</title>
<indexterm zone="gdk-surface-move"><primary>gdk_surface_move</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_move (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                  <parameter><link linkend="gint"><type>gint</type></link> x</parameter>,
                  <parameter><link linkend="gint"><type>gint</type></link> y</parameter>);</programlisting>
<para>Repositions a surface relative to its parent surface.
For toplevel surfaces, window managers may ignore or modify the move;
you should probably use <link linkend="gtk-window-move"><function>gtk_window_move()</function></link> on a <link linkend="GtkWindow"><type>GtkWindow</type></link> widget
anyway, instead of using GDK functions. For child surfaces,
the move will reliably succeed.</para>
<para>If you’re also planning to resize the surface, use <link linkend="gdk-surface-move-resize"><function>gdk_surface_move_resize()</function></link>
to both move and resize simultaneously, for a nicer visual effect.</para>
<refsect3 id="gdk-surface-move.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X coordinate relative to surface’s parent</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y coordinate relative to surface’s parent</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-resize" role="function">
<title>gdk_surface_resize&#160;()</title>
<indexterm zone="gdk-surface-resize"><primary>gdk_surface_resize</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_resize (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                    <parameter><link linkend="gint"><type>gint</type></link> width</parameter>,
                    <parameter><link linkend="gint"><type>gint</type></link> height</parameter>);</programlisting>
<para>Resizes <parameter>surface</parameter>
; for toplevel surfaces, asks the window manager to resize
the surface. The window manager may not allow the resize. When using GTK+,
use <link linkend="gtk-window-resize"><function>gtk_window_resize()</function></link> instead of this low-level GDK function.</para>
<para>Surfaces may not be resized below 1x1.</para>
<para>If you’re also planning to move the surface, use <link linkend="gdk-surface-move-resize"><function>gdk_surface_move_resize()</function></link>
to both move and resize simultaneously, for a nicer visual effect.</para>
<refsect3 id="gdk-surface-resize.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>new width of the surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>new height of the surface</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-move-resize" role="function">
<title>gdk_surface_move_resize&#160;()</title>
<indexterm zone="gdk-surface-move-resize"><primary>gdk_surface_move_resize</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_move_resize (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                         <parameter><link linkend="gint"><type>gint</type></link> x</parameter>,
                         <parameter><link linkend="gint"><type>gint</type></link> y</parameter>,
                         <parameter><link linkend="gint"><type>gint</type></link> width</parameter>,
                         <parameter><link linkend="gint"><type>gint</type></link> height</parameter>);</programlisting>
<para>Equivalent to calling <link linkend="gdk-surface-move"><function>gdk_surface_move()</function></link> and <link linkend="gdk-surface-resize"><function>gdk_surface_resize()</function></link>,
except that both operations are performed at once, avoiding strange
visual effects. (i.e. the user may be able to see the surface first
move, then resize, if you don’t use <link linkend="gdk-surface-move-resize"><function>gdk_surface_move_resize()</function></link>.)</para>
<refsect3 id="gdk-surface-move-resize.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>new X position relative to surface’s parent</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>new Y position relative to surface’s parent</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>new width</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>new height</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-has-native" role="function">
<title>gdk_surface_has_native&#160;()</title>
<indexterm zone="gdk-surface-has-native"><primary>gdk_surface_has_native</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_has_native (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Checks whether the surface has a native surface or not.</para>
<refsect3 id="gdk-surface-has-native.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-has-native.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the <parameter>surface</parameter>
has a native surface, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-raise" role="function">
<title>gdk_surface_raise&#160;()</title>
<indexterm zone="gdk-surface-raise"><primary>gdk_surface_raise</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_raise (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Raises <parameter>surface</parameter>
 to the top of the Z-order (stacking order), so that
other surfaces with the same parent surface appear below <parameter>surface</parameter>
.
This is true whether or not the surfaces are visible.</para>
<para>If <parameter>surface</parameter>
 is a toplevel, the surface manager may choose to deny the
request to move the surface in the Z-order, <link linkend="gdk-surface-raise"><function>gdk_surface_raise()</function></link> only
requests the restack, does not guarantee it.</para>
<refsect3 id="gdk-surface-raise.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-lower" role="function">
<title>gdk_surface_lower&#160;()</title>
<indexterm zone="gdk-surface-lower"><primary>gdk_surface_lower</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_lower (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Lowers <parameter>surface</parameter>
 to the bottom of the Z-order (stacking order), so that
other surfaces with the same parent surface appear above <parameter>surface</parameter>
.
This is true whether or not the other surfaces are visible.</para>
<para>If <parameter>surface</parameter>
 is a toplevel, the window manager may choose to deny the
request to move the surface in the Z-order, <link linkend="gdk-surface-lower"><function>gdk_surface_lower()</function></link> only
requests the restack, does not guarantee it.</para>
<para>Note that <link linkend="gdk-surface-show"><function>gdk_surface_show()</function></link> raises the surface again, so don’t call this
function before <link linkend="gdk-surface-show"><function>gdk_surface_show()</function></link>. (Try <link linkend="gdk-surface-show-unraised"><function>gdk_surface_show_unraised()</function></link>.)</para>
<refsect3 id="gdk-surface-lower.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-restack" role="function">
<title>gdk_surface_restack&#160;()</title>
<indexterm zone="gdk-surface-restack"><primary>gdk_surface_restack</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_restack (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                     <parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *sibling</parameter>,
                     <parameter><link linkend="gboolean"><type>gboolean</type></link> above</parameter>);</programlisting>
<para>Changes the position of  <parameter>surface</parameter>
 in the Z-order (stacking order), so that
it is above <parameter>sibling</parameter>
 (if <parameter>above</parameter>
 is <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>) or below <parameter>sibling</parameter>
 (if <parameter>above</parameter>
 is
<link linkend="FALSE:CAPS"><literal>FALSE</literal></link>).</para>
<para>If <parameter>sibling</parameter>
 is <link linkend="NULL:CAPS"><literal>NULL</literal></link>, then this either raises (if <parameter>above</parameter>
 is <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>) or
lowers the surface.</para>
<para>If <parameter>surface</parameter>
 is a toplevel, the window manager may choose to deny the
request to move the surface in the Z-order, <link linkend="gdk-surface-restack"><function>gdk_surface_restack()</function></link> only
requests the restack, does not guarantee it.</para>
<refsect3 id="gdk-surface-restack.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>sibling</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link> that is a sibling of <parameter>surface</parameter>
, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>above</para></entry>
<entry role="parameter_description"><para>a boolean</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-focus" role="function">
<title>gdk_surface_focus&#160;()</title>
<indexterm zone="gdk-surface-focus"><primary>gdk_surface_focus</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_focus (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                   <parameter><link linkend="guint32"><type>guint32</type></link> timestamp</parameter>);</programlisting>
<para>Sets keyboard focus to <parameter>surface</parameter>
. In most cases, <link linkend="gtk-window-present"><function>gtk_window_present()</function></link>
should be used on a <link linkend="GtkWindow"><type>GtkWindow</type></link>, rather than calling this function.</para>
<refsect3 id="gdk-surface-focus.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>timestamp</para></entry>
<entry role="parameter_description"><para>timestamp of the event triggering the surface focus</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-register-dnd" role="function">
<title>gdk_surface_register_dnd&#160;()</title>
<indexterm zone="gdk-surface-register-dnd"><primary>gdk_surface_register_dnd</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_register_dnd (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Registers a surface as a potential drop destination.</para>
<refsect3 id="gdk-surface-register-dnd.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-begin-resize-drag" role="function">
<title>gdk_surface_begin_resize_drag&#160;()</title>
<indexterm zone="gdk-surface-begin-resize-drag"><primary>gdk_surface_begin_resize_drag</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_begin_resize_drag (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                               <parameter><link linkend="GdkSurfaceEdge"><type>GdkSurfaceEdge</type></link> edge</parameter>,
                               <parameter><link linkend="gint"><type>gint</type></link> button</parameter>,
                               <parameter><link linkend="gint"><type>gint</type></link> root_x</parameter>,
                               <parameter><link linkend="gint"><type>gint</type></link> root_y</parameter>,
                               <parameter><link linkend="guint32"><type>guint32</type></link> timestamp</parameter>);</programlisting>
<para>Begins a surface resize operation (for a toplevel surface).</para>
<para>This function assumes that the drag is controlled by the
client pointer device, use <link linkend="gdk-surface-begin-resize-drag-for-device"><function>gdk_surface_begin_resize_drag_for_device()</function></link>
to begin a drag with a different device.</para>
<refsect3 id="gdk-surface-begin-resize-drag.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>edge</para></entry>
<entry role="parameter_description"><para>the edge or corner from which the drag is started</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>button</para></entry>
<entry role="parameter_description"><para>the button being used to drag, or 0 for a keyboard-initiated drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_x</para></entry>
<entry role="parameter_description"><para>root window X coordinate of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_y</para></entry>
<entry role="parameter_description"><para>root window Y coordinate of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>timestamp</para></entry>
<entry role="parameter_description"><para>timestamp of mouse click that began the drag (use <link linkend="gdk-event-get-time"><function>gdk_event_get_time()</function></link>)</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-begin-resize-drag-for-device" role="function">
<title>gdk_surface_begin_resize_drag_for_device&#160;()</title>
<indexterm zone="gdk-surface-begin-resize-drag-for-device"><primary>gdk_surface_begin_resize_drag_for_device</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_begin_resize_drag_for_device
                               (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                <parameter><link linkend="GdkSurfaceEdge"><type>GdkSurfaceEdge</type></link> edge</parameter>,
                                <parameter><link linkend="GdkDevice"><type>GdkDevice</type></link> *device</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> button</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> root_x</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> root_y</parameter>,
                                <parameter><link linkend="guint32"><type>guint32</type></link> timestamp</parameter>);</programlisting>
<para>Begins a surface resize operation (for a toplevel surface).
You might use this function to implement a “window resize grip,” for
example; in fact <link linkend="GtkStatusbar"><type>GtkStatusbar</type></link> uses it. The function works best
with window managers that support the
<ulink url="http://www.freedesktop.org/Standards/wm-spec">Extended Window Manager Hints</ulink>
but has a fallback implementation for other window managers.</para>
<refsect3 id="gdk-surface-begin-resize-drag-for-device.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>edge</para></entry>
<entry role="parameter_description"><para>the edge or corner from which the drag is started</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>device</para></entry>
<entry role="parameter_description"><para>the device used for the operation</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>button</para></entry>
<entry role="parameter_description"><para>the button being used to drag, or 0 for a keyboard-initiated drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_x</para></entry>
<entry role="parameter_description"><para>root window X coordinate of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_y</para></entry>
<entry role="parameter_description"><para>root window Y coordinate of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>timestamp</para></entry>
<entry role="parameter_description"><para>timestamp of mouse click that began the drag (use <link linkend="gdk-event-get-time"><function>gdk_event_get_time()</function></link>)</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-begin-move-drag" role="function">
<title>gdk_surface_begin_move_drag&#160;()</title>
<indexterm zone="gdk-surface-begin-move-drag"><primary>gdk_surface_begin_move_drag</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_begin_move_drag (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> button</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> root_x</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> root_y</parameter>,
                             <parameter><link linkend="guint32"><type>guint32</type></link> timestamp</parameter>);</programlisting>
<para>Begins a surface move operation (for a toplevel surface).</para>
<para>This function assumes that the drag is controlled by the
client pointer device, use <link linkend="gdk-surface-begin-move-drag-for-device"><function>gdk_surface_begin_move_drag_for_device()</function></link>
to begin a drag with a different device.</para>
<refsect3 id="gdk-surface-begin-move-drag.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>button</para></entry>
<entry role="parameter_description"><para>the button being used to drag, or 0 for a keyboard-initiated drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_x</para></entry>
<entry role="parameter_description"><para>root window X coordinate of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_y</para></entry>
<entry role="parameter_description"><para>root window Y coordinate of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>timestamp</para></entry>
<entry role="parameter_description"><para>timestamp of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-begin-move-drag-for-device" role="function">
<title>gdk_surface_begin_move_drag_for_device&#160;()</title>
<indexterm zone="gdk-surface-begin-move-drag-for-device"><primary>gdk_surface_begin_move_drag_for_device</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_begin_move_drag_for_device
                               (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                <parameter><link linkend="GdkDevice"><type>GdkDevice</type></link> *device</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> button</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> root_x</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> root_y</parameter>,
                                <parameter><link linkend="guint32"><type>guint32</type></link> timestamp</parameter>);</programlisting>
<para>Begins a surface move operation (for a toplevel surface).
You might use this function to implement a “window move grip,” for
example. The function works best with window managers that support the
<ulink url="http://www.freedesktop.org/Standards/wm-spec">Extended Window Manager Hints</ulink>
but has a fallback implementation for other window managers.</para>
<refsect3 id="gdk-surface-begin-move-drag-for-device.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>device</para></entry>
<entry role="parameter_description"><para>the device used for the operation</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>button</para></entry>
<entry role="parameter_description"><para>the button being used to drag, or 0 for a keyboard-initiated drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_x</para></entry>
<entry role="parameter_description"><para>root window X coordinate of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_y</para></entry>
<entry role="parameter_description"><para>root window Y coordinate of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>timestamp</para></entry>
<entry role="parameter_description"><para>timestamp of mouse click that began the drag</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-show-window-menu" role="function">
<title>gdk_surface_show_window_menu&#160;()</title>
<indexterm zone="gdk-surface-show-window-menu"><primary>gdk_surface_show_window_menu</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_show_window_menu (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                              <parameter><link linkend="GdkEvent"><type>GdkEvent</type></link> *event</parameter>);</programlisting>
<para>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.</para>
<refsect3 id="gdk-surface-show-window-menu.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>event</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkEvent"><type>GdkEvent</type></link> to show the menu for</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-show-window-menu.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the window menu was shown and <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-constrain-size" role="function">
<title>gdk_surface_constrain_size&#160;()</title>
<indexterm zone="gdk-surface-constrain-size"><primary>gdk_surface_constrain_size</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_constrain_size (<parameter><link linkend="GdkGeometry"><type>GdkGeometry</type></link> *geometry</parameter>,
                            <parameter><link linkend="GdkSurfaceHints"><type>GdkSurfaceHints</type></link> flags</parameter>,
                            <parameter><link linkend="gint"><type>gint</type></link> width</parameter>,
                            <parameter><link linkend="gint"><type>gint</type></link> height</parameter>,
                            <parameter><link linkend="gint"><type>gint</type></link> *new_width</parameter>,
                            <parameter><link linkend="gint"><type>gint</type></link> *new_height</parameter>);</programlisting>
<para>Constrains a desired width and height according to a
set of geometry hints (such as minimum and maximum size).</para>
<refsect3 id="gdk-surface-constrain-size.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>geometry</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkGeometry"><type>GdkGeometry</type></link> structure</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>flags</para></entry>
<entry role="parameter_description"><para>a mask indicating what portions of <parameter>geometry</parameter>
are set</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>desired width of surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>desired height of the surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>new_width</para></entry>
<entry role="parameter_description"><para>location to store resulting width. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>new_height</para></entry>
<entry role="parameter_description"><para>location to store resulting height. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-beep" role="function">
<title>gdk_surface_beep&#160;()</title>
<indexterm zone="gdk-surface-beep"><primary>gdk_surface_beep</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_beep (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Emits a short beep associated to <parameter>surface</parameter>
 in the appropriate
display, if supported. Otherwise, emits a short beep on
the display just as <link linkend="gdk-display-beep"><function>gdk_display_beep()</function></link>.</para>
<refsect3 id="gdk-surface-beep.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-scale-factor" role="function">
<title>gdk_surface_get_scale_factor&#160;()</title>
<indexterm zone="gdk-surface-get-scale-factor"><primary>gdk_surface_get_scale_factor</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
gdk_surface_get_scale_factor (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Returns the internal scale factor that maps from surface coordiantes
to the actual device pixels. On traditional systems this is 1, but
on very high density outputs this can be a higher value (often 2).</para>
<para>A higher value means that drawing is automatically scaled up to
a higher resolution, so any code doing drawing will automatically look
nicer. However, if you are supplying pixel-based data the scale
value can be used to determine whether to use a pixel resource
with higher resolution data.</para>
<para>The scale of a surface may change during runtime, if this happens
a configure event will be sent to the toplevel surface.</para>
<refsect3 id="gdk-surface-get-scale-factor.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>surface to get scale factor for</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-scale-factor.returns" role="returns">
<title>Returns</title>
<para> the scale factor</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-opaque-region" role="function">
<title>gdk_surface_set_opaque_region&#160;()</title>
<indexterm zone="gdk-surface-set-opaque-region"><primary>gdk_surface_set_opaque_region</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_opaque_region (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                               <parameter><link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>);</programlisting>
<para>For optimisation purposes, compositing window managers may
like to not draw obscured regions of surfaces, or turn off blending
during for these regions. With RGB windows with no transparency,
this is just the shape of the window, but with ARGB32 windows, the
compositor does not know what regions of the window are transparent
or not.</para>
<para>This function only works for toplevel surfaces.</para>
<para>GTK+ will update this property automatically if
the <parameter>surface</parameter>
 background is opaque, as we know where the opaque regions
are. If your surface background is not opaque, please update this
property in your <link linkend="GtkWidget-style-updated"><type>“style-updated”</type></link> handler.</para>
<refsect3 id="gdk-surface-set-opaque-region.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a top-level or non-native <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>region</para></entry>
<entry role="parameter_description"><para>a region, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-create-gl-context" role="function">
<title>gdk_surface_create_gl_context&#160;()</title>
<indexterm zone="gdk-surface-create-gl-context"><primary>gdk_surface_create_gl_context</primary></indexterm>
<programlisting language="C"><link linkend="GdkGLContext"><returnvalue>GdkGLContext</returnvalue></link>&#160;*
gdk_surface_create_gl_context (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                               <parameter><link linkend="GError"><type>GError</type></link> **error</parameter>);</programlisting>
<para>Creates a new <link linkend="GdkGLContext"><type>GdkGLContext</type></link> matching the
framebuffer format to the visual of the <link linkend="GdkSurface"><type>GdkSurface</type></link>. The context
is disconnected from any particular surface or surface.</para>
<para>If the creation of the <link linkend="GdkGLContext"><type>GdkGLContext</type></link> failed, <parameter>error</parameter>
 will be set.</para>
<para>Before using the returned <link linkend="GdkGLContext"><type>GdkGLContext</type></link>, you will need to
call <link linkend="gdk-gl-context-make-current"><function>gdk_gl_context_make_current()</function></link> or <link linkend="gdk-gl-context-realize"><function>gdk_gl_context_realize()</function></link>.</para>
<refsect3 id="gdk-surface-create-gl-context.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>error</para></entry>
<entry role="parameter_description"><para>return location for an error</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-create-gl-context.returns" role="returns">
<title>Returns</title>
<para>the newly created <link linkend="GdkGLContext"><type>GdkGLContext</type></link>, or
<link linkend="NULL:CAPS"><literal>NULL</literal></link> on error. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-create-vulkan-context" role="function">
<title>gdk_surface_create_vulkan_context&#160;()</title>
<indexterm zone="gdk-surface-create-vulkan-context"><primary>gdk_surface_create_vulkan_context</primary></indexterm>
<programlisting language="C"><link linkend="GdkVulkanContext"><returnvalue>GdkVulkanContext</returnvalue></link>&#160;*
gdk_surface_create_vulkan_context (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                   <parameter><link linkend="GError"><type>GError</type></link> **error</parameter>);</programlisting>
<para>Creates a new <link linkend="GdkVulkanContext"><type>GdkVulkanContext</type></link> for rendering on <parameter>surface</parameter>
.</para>
<para>If the creation of the <link linkend="GdkVulkanContext"><type>GdkVulkanContext</type></link> failed, <parameter>error</parameter>
 will be set.</para>
<refsect3 id="gdk-surface-create-vulkan-context.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>error</para></entry>
<entry role="parameter_description"><para>return location for an error</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-create-vulkan-context.returns" role="returns">
<title>Returns</title>
<para>the newly created <link linkend="GdkVulkanContext"><type>GdkVulkanContext</type></link>, or
<link linkend="NULL:CAPS"><literal>NULL</literal></link> on error. </para>
<para><emphasis role="annotation">[<acronym>transfer full</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-invalidate-rect" role="function">
<title>gdk_surface_invalidate_rect&#160;()</title>
<indexterm zone="gdk-surface-invalidate-rect"><primary>gdk_surface_invalidate_rect</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_invalidate_rect (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                             <parameter>const <link linkend="GdkRectangle"><type>GdkRectangle</type></link> *rect</parameter>);</programlisting>
<para>A convenience wrapper around <link linkend="gdk-surface-invalidate-region"><function>gdk_surface_invalidate_region()</function></link> which
invalidates a rectangular region. See
<link linkend="gdk-surface-invalidate-region"><function>gdk_surface_invalidate_region()</function></link> for details.</para>
<refsect3 id="gdk-surface-invalidate-rect.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>rect</para></entry>
<entry role="parameter_description"><para>rectangle to invalidate or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to invalidate the whole
surface. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-invalidate-region" role="function">
<title>gdk_surface_invalidate_region&#160;()</title>
<indexterm zone="gdk-surface-invalidate-region"><primary>gdk_surface_invalidate_region</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_invalidate_region (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                               <parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *region</parameter>);</programlisting>
<para>Adds <parameter>region</parameter>
 to the update area for <parameter>surface</parameter>
. The update area is the
region that needs to be redrawn, or “dirty region.”</para>
<para>GDK will process all updates whenever the frame clock schedules a redraw,
so there’s no need to do forces redraws manually, you just need to
invalidate regions that you know should be redrawn.</para>
<para>The <parameter>invalidate_children</parameter>
 parameter controls whether the region of
each child surface that intersects <parameter>region</parameter>
 will also be invalidated.
If <link linkend="FALSE:CAPS"><literal>FALSE</literal></link>, then the update area for child surfaces will remain
unaffected.</para>
<refsect3 id="gdk-surface-invalidate-region.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>region</para></entry>
<entry role="parameter_description"><para>a <link linkend="cairo-region-t"><type>cairo_region_t</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-queue-expose" role="function">
<title>gdk_surface_queue_expose&#160;()</title>
<indexterm zone="gdk-surface-queue-expose"><primary>gdk_surface_queue_expose</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_queue_expose (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Forces an expose event for <parameter>surface</parameter>
 to be scheduled.</para>
<para>If the invalid area of <parameter>surface</parameter>
 is empty, an expose event will
still be emitted. Its invalid region will be empty.</para>
<para>This function is useful for implementations that track invalid
regions on their own.</para>
<refsect3 id="gdk-surface-queue-expose.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-freeze-updates" role="function">
<title>gdk_surface_freeze_updates&#160;()</title>
<indexterm zone="gdk-surface-freeze-updates"><primary>gdk_surface_freeze_updates</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_freeze_updates (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Temporarily freezes a surface such that it won’t receive expose
events.  The surface will begin receiving expose events again when
<link linkend="gdk-surface-thaw-updates"><function>gdk_surface_thaw_updates()</function></link> is called. If <link linkend="gdk-surface-freeze-updates"><function>gdk_surface_freeze_updates()</function></link>
has been called more than once, <link linkend="gdk-surface-thaw-updates"><function>gdk_surface_thaw_updates()</function></link> must be called
an equal number of times to begin processing exposes.</para>
<refsect3 id="gdk-surface-freeze-updates.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-thaw-updates" role="function">
<title>gdk_surface_thaw_updates&#160;()</title>
<indexterm zone="gdk-surface-thaw-updates"><primary>gdk_surface_thaw_updates</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_thaw_updates (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Thaws a surface frozen with <link linkend="gdk-surface-freeze-updates"><function>gdk_surface_freeze_updates()</function></link>.</para>
<refsect3 id="gdk-surface-thaw-updates.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-frame-clock" role="function">
<title>gdk_surface_get_frame_clock&#160;()</title>
<indexterm zone="gdk-surface-get-frame-clock"><primary>gdk_surface_get_frame_clock</primary></indexterm>
<programlisting language="C"><link linkend="GdkFrameClock"><returnvalue>GdkFrameClock</returnvalue></link>&#160;*
gdk_surface_get_frame_clock (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Gets the frame clock for the surface. The frame clock for a surface
never changes unless the surface is reparented to a new toplevel
surface.</para>
<refsect3 id="gdk-surface-get-frame-clock.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>surface to get frame clock for</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-frame-clock.returns" role="returns">
<title>Returns</title>
<para>the frame clock. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-user-data" role="function">
<title>gdk_surface_set_user_data&#160;()</title>
<indexterm zone="gdk-surface-set-user-data"><primary>gdk_surface_set_user_data</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_user_data (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                           <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
<para>For most purposes this function is deprecated in favor of
<link linkend="g-object-set-data"><function>g_object_set_data()</function></link>. However, for historical reasons GTK+ stores
the <link linkend="GtkWidget"><type>GtkWidget</type></link> that owns a <link linkend="GdkSurface"><type>GdkSurface</type></link> as user data on the
<link linkend="GdkSurface"><type>GdkSurface</type></link>. So, custom widget implementations should use
this function for that. If GTK+ receives an event for a <link linkend="GdkSurface"><type>GdkSurface</type></link>,
and the user data for the surface is non-<link linkend="NULL:CAPS"><literal>NULL</literal></link>, GTK+ will assume the
user data is a <link linkend="GtkWidget"><type>GtkWidget</type></link>, and forward the event to that widget.</para>
<refsect3 id="gdk-surface-set-user-data.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>][<acronym>type</acronym> GObject.Object]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-accept-focus" role="function">
<title>gdk_surface_set_accept_focus&#160;()</title>
<indexterm zone="gdk-surface-set-accept-focus"><primary>gdk_surface_set_accept_focus</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_accept_focus (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                              <parameter><link linkend="gboolean"><type>gboolean</type></link> accept_focus</parameter>);</programlisting>
<para>Setting <parameter>accept_focus</parameter>
 to <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> hints the desktop environment that the
surface doesn’t want to receive input focus.</para>
<para>On X, it is the responsibility of the window manager to interpret this
hint. ICCCM-compliant window manager usually respect it.</para>
<refsect3 id="gdk-surface-set-accept-focus.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>accept_focus</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface should receive input focus</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-accept-focus" role="function">
<title>gdk_surface_get_accept_focus&#160;()</title>
<indexterm zone="gdk-surface-get-accept-focus"><primary>gdk_surface_get_accept_focus</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_get_accept_focus (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Determines whether or not the desktop environment shuld be hinted that
the surface does not want to receive input focus.</para>
<refsect3 id="gdk-surface-get-accept-focus.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-accept-focus.returns" role="returns">
<title>Returns</title>
<para> whether or not the surface should receive input focus.</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-focus-on-map" role="function">
<title>gdk_surface_set_focus_on_map&#160;()</title>
<indexterm zone="gdk-surface-set-focus-on-map"><primary>gdk_surface_set_focus_on_map</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_focus_on_map (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                              <parameter><link linkend="gboolean"><type>gboolean</type></link> focus_on_map</parameter>);</programlisting>
<para>Setting <parameter>focus_on_map</parameter>
 to <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> 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).</para>
<para>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.</para>
<refsect3 id="gdk-surface-set-focus-on-map.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>focus_on_map</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface should receive input focus when mapped</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-focus-on-map" role="function">
<title>gdk_surface_get_focus_on_map&#160;()</title>
<indexterm zone="gdk-surface-get-focus-on-map"><primary>gdk_surface_get_focus_on_map</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_get_focus_on_map (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Determines whether or not the desktop environment should be hinted that the
surface does not want to receive input focus when it is mapped.</para>
<refsect3 id="gdk-surface-get-focus-on-map.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-focus-on-map.returns" role="returns">
<title>Returns</title>
<para> whether or not the surface wants to receive input focus when
it is mapped.</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-input-shape-combine-region" role="function">
<title>gdk_surface_input_shape_combine_region&#160;()</title>
<indexterm zone="gdk-surface-input-shape-combine-region"><primary>gdk_surface_input_shape_combine_region</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_input_shape_combine_region
                               (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                <parameter>const <link linkend="cairo-region-t"><type>cairo_region_t</type></link> *shape_region</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> offset_x</parameter>,
                                <parameter><link linkend="gint"><type>gint</type></link> offset_y</parameter>);</programlisting>
<para>Like <link linkend="gdk-surface-shape-combine-region"><function>gdk_surface_shape_combine_region()</function></link>, but the shape applies
only to event handling. Mouse events which happen while
the pointer position corresponds to an unset bit in the
mask will be passed on the surface below <parameter>surface</parameter>
.</para>
<para>An input shape is typically used with RGBA surfaces.
The alpha channel of the surface defines which pixels are
invisible and allows for nicely antialiased borders,
and the input shape controls where the surface is
“clickable”.</para>
<para>On the X11 platform, this requires version 1.1 of the
shape extension.</para>
<para>On the Win32 platform, this functionality is not present and the
function does nothing.</para>
<refsect3 id="gdk-surface-input-shape-combine-region.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>shape_region</para></entry>
<entry role="parameter_description"><para>region of surface to be non-transparent</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset_x</para></entry>
<entry role="parameter_description"><para>X position of <parameter>shape_region</parameter>
in <parameter>surface</parameter>
coordinates</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>offset_y</para></entry>
<entry role="parameter_description"><para>Y position of <parameter>shape_region</parameter>
in <parameter>surface</parameter>
coordinates</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-child-input-shapes" role="function">
<title>gdk_surface_set_child_input_shapes&#160;()</title>
<indexterm zone="gdk-surface-set-child-input-shapes"><primary>gdk_surface_set_child_input_shapes</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_child_input_shapes (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Sets the input shape mask of <parameter>surface</parameter>
 to the union of input shape masks
for all children of <parameter>surface</parameter>
, ignoring the input shape mask of <parameter>surface</parameter>

itself. Contrast with <link linkend="gdk-surface-merge-child-input-shapes"><function>gdk_surface_merge_child_input_shapes()</function></link> which includes
the input shape mask of <parameter>surface</parameter>
 in the masks to be merged.</para>
<refsect3 id="gdk-surface-set-child-input-shapes.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-merge-child-input-shapes" role="function">
<title>gdk_surface_merge_child_input_shapes&#160;()</title>
<indexterm zone="gdk-surface-merge-child-input-shapes"><primary>gdk_surface_merge_child_input_shapes</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_merge_child_input_shapes (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Merges the input shape masks for any child surfaces into the
input shape mask for <parameter>surface</parameter>
. i.e. the union of all input masks
for <parameter>surface</parameter>
 and its children will become the new input mask
for <parameter>surface</parameter>
. See <link linkend="gdk-surface-input-shape-combine-region"><function>gdk_surface_input_shape_combine_region()</function></link>.</para>
<para>This function is distinct from <link linkend="gdk-surface-set-child-input-shapes"><function>gdk_surface_set_child_input_shapes()</function></link>
because it includes <parameter>surface</parameter>
’s input shape mask in the set of
shapes to be merged.</para>
<refsect3 id="gdk-surface-merge-child-input-shapes.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-title" role="function">
<title>gdk_surface_set_title&#160;()</title>
<indexterm zone="gdk-surface-set-title"><primary>gdk_surface_set_title</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_title (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                       <parameter>const <link linkend="gchar"><type>gchar</type></link> *title</parameter>);</programlisting>
<para>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 <link linkend="gdk-surface-set-icon-name"><function>gdk_surface_set_icon_name()</function></link>), the icon name will be set to
<parameter>title</parameter>
 as well. <parameter>title</parameter>
 must be in UTF-8 encoding (as with all
user-readable strings in GDK/GTK+). <parameter>title</parameter>
 may not be <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
<refsect3 id="gdk-surface-set-title.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>title</para></entry>
<entry role="parameter_description"><para>title of <parameter>surface</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-cursor" role="function">
<title>gdk_surface_set_cursor&#160;()</title>
<indexterm zone="gdk-surface-set-cursor"><primary>gdk_surface_set_cursor</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_cursor (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                        <parameter><link linkend="GdkCursor"><type>GdkCursor</type></link> *cursor</parameter>);</programlisting>
<para>Sets the default mouse pointer for a <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para>
<para>Note that <parameter>cursor</parameter>
 must be for the same display as <parameter>surface</parameter>
.</para>
<para>Use <link linkend="gdk-cursor-new-for-display"><function>gdk_cursor_new_for_display()</function></link> or <link linkend="gdk-cursor-new-from-texture"><function>gdk_cursor_new_from_texture()</function></link> to
create the cursor. To make the cursor invisible, use <link linkend="GDK-BLANK-CURSOR:CAPS"><literal>GDK_BLANK_CURSOR</literal></link>.
Passing <link linkend="NULL:CAPS"><literal>NULL</literal></link> for the <parameter>cursor</parameter>
 argument to <link linkend="gdk-surface-set-cursor"><function>gdk_surface_set_cursor()</function></link> means
that <parameter>surface</parameter>
 will use the cursor of its parent surface. Most surfaces
should use this default.</para>
<refsect3 id="gdk-surface-set-cursor.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>cursor</para></entry>
<entry role="parameter_description"><para>a cursor. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-cursor" role="function">
<title>gdk_surface_get_cursor&#160;()</title>
<indexterm zone="gdk-surface-get-cursor"><primary>gdk_surface_get_cursor</primary></indexterm>
<programlisting language="C"><link linkend="GdkCursor"><returnvalue>GdkCursor</returnvalue></link>&#160;*
gdk_surface_get_cursor (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Retrieves a <link linkend="GdkCursor"><type>GdkCursor</type></link> pointer for the cursor currently set on the
specified <link linkend="GdkSurface"><type>GdkSurface</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.  If the return value is <link linkend="NULL:CAPS"><literal>NULL</literal></link> then
there is no custom cursor set on the specified surface, and it is
using the cursor for its parent surface.</para>
<refsect3 id="gdk-surface-get-cursor.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-cursor.returns" role="returns">
<title>Returns</title>
<para>a <link linkend="GdkCursor"><type>GdkCursor</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. The
returned object is owned by the <link linkend="GdkSurface"><type>GdkSurface</type></link> and should not be
unreferenced directly. Use <link linkend="gdk-surface-set-cursor"><function>gdk_surface_set_cursor()</function></link> to unset the
cursor of the surface. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-user-data" role="function">
<title>gdk_surface_get_user_data&#160;()</title>
<indexterm zone="gdk-surface-get-user-data"><primary>gdk_surface_get_user_data</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_get_user_data (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                           <parameter><link linkend="gpointer"><type>gpointer</type></link> *data</parameter>);</programlisting>
<para>Retrieves the user data for <parameter>surface</parameter>
, which is normally the widget
that <parameter>surface</parameter>
 belongs to. See <link linkend="gdk-surface-set-user-data"><function>gdk_surface_set_user_data()</function></link>.</para>
<refsect3 id="gdk-surface-get-user-data.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>data</para></entry>
<entry role="parameter_description"><para>return location for user data. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-geometry" role="function">
<title>gdk_surface_get_geometry&#160;()</title>
<indexterm zone="gdk-surface-get-geometry"><primary>gdk_surface_get_geometry</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_get_geometry (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                          <parameter><link linkend="gint"><type>gint</type></link> *x</parameter>,
                          <parameter><link linkend="gint"><type>gint</type></link> *y</parameter>,
                          <parameter><link linkend="gint"><type>gint</type></link> *width</parameter>,
                          <parameter><link linkend="gint"><type>gint</type></link> *height</parameter>);</programlisting>
<para>Any of the return location arguments to this function may be <link linkend="NULL:CAPS"><literal>NULL</literal></link>,
if you aren’t interested in getting the value of that field.</para>
<para>The X and Y coordinates returned are relative to the parent surface
of <parameter>surface</parameter>
, which for toplevels usually means relative to the
surface decorations (titlebar, etc.) rather than relative to the
root window (screen-size background window).</para>
<para>On the X11 platform, the geometry is obtained from the X server,
so reflects the latest position of <parameter>surface</parameter>
; this may be out-of-sync
with the position of <parameter>surface</parameter>
 delivered in the most-recently-processed
<link linkend="GdkEventConfigure"><type>GdkEventConfigure</type></link>. <link linkend="gdk-surface-get-position"><function>gdk_surface_get_position()</function></link> in contrast gets the
position from the most recent configure event.</para>
<para>Note: If <parameter>surface</parameter>
 is not a toplevel, it is much better
to call <link linkend="gdk-surface-get-position"><function>gdk_surface_get_position()</function></link>, <link linkend="gdk-surface-get-width"><function>gdk_surface_get_width()</function></link> and
<link linkend="gdk-surface-get-height"><function>gdk_surface_get_height()</function></link> instead, because it avoids the roundtrip to
the X server and because these functions support the full 32-bit
coordinate space, whereas <link linkend="gdk-surface-get-geometry"><function>gdk_surface_get_geometry()</function></link> is restricted to
the 16-bit coordinates of X11.</para>
<refsect3 id="gdk-surface-get-geometry.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>return location for X coordinate of surface (relative to its parent). </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>return location for Y coordinate of surface (relative to its parent). </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>width</para></entry>
<entry role="parameter_description"><para>return location for width of surface. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>height</para></entry>
<entry role="parameter_description"><para>return location for height of surface. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-geometry-hints" role="function">
<title>gdk_surface_set_geometry_hints&#160;()</title>
<indexterm zone="gdk-surface-set-geometry-hints"><primary>gdk_surface_set_geometry_hints</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_geometry_hints (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                <parameter>const <link linkend="GdkGeometry"><type>GdkGeometry</type></link> *geometry</parameter>,
                                <parameter><link linkend="GdkSurfaceHints"><type>GdkSurfaceHints</type></link> geom_mask</parameter>);</programlisting>
<para>Sets the geometry hints for <parameter>surface</parameter>
. Hints flagged in <parameter>geom_mask</parameter>

are set, hints not flagged in <parameter>geom_mask</parameter>
 are unset.
To unset all hints, use a <parameter>geom_mask</parameter>
 of 0 and a <parameter>geometry</parameter>
 of <link linkend="NULL:CAPS"><literal>NULL</literal></link>.</para>
<para>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 <link linkend="gdk-surface-resize"><function>gdk_surface_resize()</function></link> or
<link linkend="gdk-surface-move-resize"><function>gdk_surface_move_resize()</function></link>.</para>
<para>Note that on X11, this effect has no effect on surfaces
of type <link linkend="GDK-SURFACE-TEMP:CAPS"><literal>GDK_SURFACE_TEMP</literal></link> since these surfaces are not resizable
by the user.</para>
<para>Since you can’t count on the windowing system doing the
constraints for programmatic resizes, you should generally
call <link linkend="gdk-surface-constrain-size"><function>gdk_surface_constrain_size()</function></link> yourself to determine
appropriate sizes.</para>
<refsect3 id="gdk-surface-set-geometry-hints.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>geometry</para></entry>
<entry role="parameter_description"><para>geometry hints</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>geom_mask</para></entry>
<entry role="parameter_description"><para>bitmask indicating fields of <parameter>geometry</parameter>
to pay attention to</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-width" role="function">
<title>gdk_surface_get_width&#160;()</title>
<indexterm zone="gdk-surface-get-width"><primary>gdk_surface_get_width</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
gdk_surface_get_width (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Returns the width of the given <parameter>surface</parameter>
.</para>
<para>On the X11 platform the returned size is the size reported in the
most-recently-processed configure event, rather than the current
size on the X server.</para>
<refsect3 id="gdk-surface-get-width.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-width.returns" role="returns">
<title>Returns</title>
<para> The width of <parameter>surface</parameter>
</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-height" role="function">
<title>gdk_surface_get_height&#160;()</title>
<indexterm zone="gdk-surface-get-height"><primary>gdk_surface_get_height</primary></indexterm>
<programlisting language="C"><link linkend="int"><returnvalue>int</returnvalue></link>
gdk_surface_get_height (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Returns the height of the given <parameter>surface</parameter>
.</para>
<para>On the X11 platform the returned size is the size reported in the
most-recently-processed configure event, rather than the current
size on the X server.</para>
<refsect3 id="gdk-surface-get-height.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-height.returns" role="returns">
<title>Returns</title>
<para> The height of <parameter>surface</parameter>
</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-icon-list" role="function">
<title>gdk_surface_set_icon_list&#160;()</title>
<indexterm zone="gdk-surface-set-icon-list"><primary>gdk_surface_set_icon_list</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_icon_list (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                           <parameter><link linkend="GList"><type>GList</type></link> *surfaces</parameter>);</programlisting>
<para>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.</para>
<para>Note that some platforms don't support surface icons.</para>
<refsect3 id="gdk-surface-set-icon-list.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>The <link linkend="GdkSurface"><type>GdkSurface</type></link> toplevel surface to set the icon of.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>surfaces</para></entry>
<entry role="parameter_description"><para>A list of image surfaces, of different sizes. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>element-type</acronym> GdkTexture]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-modal-hint" role="function">
<title>gdk_surface_set_modal_hint&#160;()</title>
<indexterm zone="gdk-surface-set-modal-hint"><primary>gdk_surface_set_modal_hint</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_modal_hint (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                            <parameter><link linkend="gboolean"><type>gboolean</type></link> modal</parameter>);</programlisting>
<para>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.</para>
<para>You should only use this on surfaces for which you have
previously called <link linkend="gdk-surface-set-transient-for"><function>gdk_surface_set_transient_for()</function></link></para>
<refsect3 id="gdk-surface-set-modal-hint.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>A toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>modal</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface is modal, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-modal-hint" role="function">
<title>gdk_surface_get_modal_hint&#160;()</title>
<indexterm zone="gdk-surface-get-modal-hint"><primary>gdk_surface_get_modal_hint</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_get_modal_hint (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Determines whether or not the surface manager is hinted that <parameter>surface</parameter>

has modal behaviour.</para>
<refsect3 id="gdk-surface-get-modal-hint.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>A toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-modal-hint.returns" role="returns">
<title>Returns</title>
<para> whether or not the surface has the modal hint set.</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-type-hint" role="function">
<title>gdk_surface_set_type_hint&#160;()</title>
<indexterm zone="gdk-surface-set-type-hint"><primary>gdk_surface_set_type_hint</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_type_hint (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                           <parameter><link linkend="GdkSurfaceTypeHint"><type>GdkSurfaceTypeHint</type></link> hint</parameter>);</programlisting>
<para>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.</para>
<para>The hint must be set before the surface is mapped.</para>
<refsect3 id="gdk-surface-set-type-hint.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>A toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>hint</para></entry>
<entry role="parameter_description"><para>A hint of the function this surface will have</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-type-hint" role="function">
<title>gdk_surface_get_type_hint&#160;()</title>
<indexterm zone="gdk-surface-get-type-hint"><primary>gdk_surface_get_type_hint</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurfaceTypeHint"><returnvalue>GdkSurfaceTypeHint</returnvalue></link>
gdk_surface_get_type_hint (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>This function returns the type hint set for a surface.</para>
<refsect3 id="gdk-surface-get-type-hint.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>A toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-type-hint.returns" role="returns">
<title>Returns</title>
<para> The type hint set for <parameter>surface</parameter>
</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-shadow-width" role="function">
<title>gdk_surface_set_shadow_width&#160;()</title>
<indexterm zone="gdk-surface-set-shadow-width"><primary>gdk_surface_set_shadow_width</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_shadow_width (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                              <parameter><link linkend="gint"><type>gint</type></link> left</parameter>,
                              <parameter><link linkend="gint"><type>gint</type></link> right</parameter>,
                              <parameter><link linkend="gint"><type>gint</type></link> top</parameter>,
                              <parameter><link linkend="gint"><type>gint</type></link> bottom</parameter>);</programlisting>
<para>Newer GTK+ windows using client-side decorations use extra geometry
around their frames for effects like shadows and invisible borders.
Window managers that want to maximize windows or snap to edges need
to know where the extents of the actual frame lie, so that users
don’t feel like windows are snapping against random invisible edges.</para>
<para>Note that this property is automatically updated by GTK+, so this
function should only be used by applications which do not use GTK+
to create toplevel surfaces.</para>
<refsect3 id="gdk-surface-set-shadow-width.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>left</para></entry>
<entry role="parameter_description"><para>The left extent</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>right</para></entry>
<entry role="parameter_description"><para>The right extent</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>top</para></entry>
<entry role="parameter_description"><para>The top extent</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>bottom</para></entry>
<entry role="parameter_description"><para>The bottom extent</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-skip-taskbar-hint" role="function">
<title>gdk_surface_set_skip_taskbar_hint&#160;()</title>
<indexterm zone="gdk-surface-set-skip-taskbar-hint"><primary>gdk_surface_set_skip_taskbar_hint</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_skip_taskbar_hint (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                   <parameter><link linkend="gboolean"><type>gboolean</type></link> skips_taskbar</parameter>);</programlisting>
<para>Toggles whether a surface should appear in a task list or surface
list. If a surface’s semantic type as specified with
<link linkend="gdk-surface-set-type-hint"><function>gdk_surface_set_type_hint()</function></link> already fully describes the surface, this
function should not be called in addition,
instead you should allow the surface to be treated according to
standard policy for its semantic type.</para>
<refsect3 id="gdk-surface-set-skip-taskbar-hint.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>skips_taskbar</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to skip the taskbar</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-skip-pager-hint" role="function">
<title>gdk_surface_set_skip_pager_hint&#160;()</title>
<indexterm zone="gdk-surface-set-skip-pager-hint"><primary>gdk_surface_set_skip_pager_hint</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_skip_pager_hint (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                 <parameter><link linkend="gboolean"><type>gboolean</type></link> skips_pager</parameter>);</programlisting>
<para>Toggles whether a surface should appear in a pager (workspace
switcher, or other desktop utility program that displays a small
thumbnail representation of the surfaces on the desktop). If a
surface’s semantic type as specified with <link linkend="gdk-surface-set-type-hint"><function>gdk_surface_set_type_hint()</function></link>
already fully describes the surface, this function should
not be called in addition, instead you should
allow the surface to be treated according to standard policy for
its semantic type.</para>
<refsect3 id="gdk-surface-set-skip-pager-hint.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>skips_pager</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to skip the pager</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-urgency-hint" role="function">
<title>gdk_surface_set_urgency_hint&#160;()</title>
<indexterm zone="gdk-surface-set-urgency-hint"><primary>gdk_surface_set_urgency_hint</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_urgency_hint (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                              <parameter><link linkend="gboolean"><type>gboolean</type></link> urgent</parameter>);</programlisting>
<para>Toggles whether a surface needs the user's
urgent attention.</para>
<refsect3 id="gdk-surface-set-urgency-hint.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>urgent</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface is urgent</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-position" role="function">
<title>gdk_surface_get_position&#160;()</title>
<indexterm zone="gdk-surface-get-position"><primary>gdk_surface_get_position</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_get_position (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                          <parameter><link linkend="gint"><type>gint</type></link> *x</parameter>,
                          <parameter><link linkend="gint"><type>gint</type></link> *y</parameter>);</programlisting>
<para>Obtains the position of the surface as reported in the
most-recently-processed <link linkend="GdkEventConfigure"><type>GdkEventConfigure</type></link>. Contrast with
<link linkend="gdk-surface-get-geometry"><function>gdk_surface_get_geometry()</function></link> which queries the X server for the
current surface position, regardless of which events have been
received or processed.</para>
<para>The position coordinates are relative to the surface’s parent surface.</para>
<refsect3 id="gdk-surface-get-position.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X coordinate of surface. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y coordinate of surface. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-root-origin" role="function">
<title>gdk_surface_get_root_origin&#160;()</title>
<indexterm zone="gdk-surface-get-root-origin"><primary>gdk_surface_get_root_origin</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_get_root_origin (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> *x</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> *y</parameter>);</programlisting>
<para>Obtains the top-left corner of the surface manager frame in root
surface coordinates.</para>
<refsect3 id="gdk-surface-get-root-origin.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>return location for X position of surface frame. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>return location for Y position of surface frame. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-frame-extents" role="function">
<title>gdk_surface_get_frame_extents&#160;()</title>
<indexterm zone="gdk-surface-get-frame-extents"><primary>gdk_surface_get_frame_extents</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_get_frame_extents (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                               <parameter><link linkend="GdkRectangle"><type>GdkRectangle</type></link> *rect</parameter>);</programlisting>
<para>Obtains the bounding box of the surface, including window manager
titlebar/borders if any. The frame position is given in root window
coordinates. To get the position of the surface itself (rather than
the frame) in root window coordinates, use <link linkend="gdk-surface-get-origin"><function>gdk_surface_get_origin()</function></link>.</para>
<refsect3 id="gdk-surface-get-frame-extents.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>rect</para></entry>
<entry role="parameter_description"><para>rectangle to fill with bounding box of the surface frame. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-origin" role="function">
<title>gdk_surface_get_origin&#160;()</title>
<indexterm zone="gdk-surface-get-origin"><primary>gdk_surface_get_origin</primary></indexterm>
<programlisting language="C"><link linkend="gint"><returnvalue>gint</returnvalue></link>
gdk_surface_get_origin (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> *x</parameter>,
                        <parameter><link linkend="gint"><type>gint</type></link> *y</parameter>);</programlisting>
<para>Obtains the position of a surface in root window coordinates.
(Compare with <link linkend="gdk-surface-get-position"><function>gdk_surface_get_position()</function></link> and
<link linkend="gdk-surface-get-geometry"><function>gdk_surface_get_geometry()</function></link> which return the position of a surface
relative to its parent surface.)</para>
<refsect3 id="gdk-surface-get-origin.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>return location for X coordinate. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>return location for Y coordinate. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-origin.returns" role="returns">
<title>Returns</title>
<para> not meaningful, ignore</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-root-coords" role="function">
<title>gdk_surface_get_root_coords&#160;()</title>
<indexterm zone="gdk-surface-get-root-coords"><primary>gdk_surface_get_root_coords</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_get_root_coords (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> x</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> y</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> *root_x</parameter>,
                             <parameter><link linkend="gint"><type>gint</type></link> *root_y</parameter>);</programlisting>
<para>Obtains the position of a surface position in root
window coordinates. This is similar to
<link linkend="gdk-surface-get-origin"><function>gdk_surface_get_origin()</function></link> but allows you to pass
in any position in the surface, not just the origin.</para>
<refsect3 id="gdk-surface-get-root-coords.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X coordinate in surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y coordinate in surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>root_x</para></entry>
<entry role="parameter_description"><para>return location for X coordinate. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>root_y</para></entry>
<entry role="parameter_description"><para>return location for Y coordinate. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-device-position" role="function">
<title>gdk_surface_get_device_position&#160;()</title>
<indexterm zone="gdk-surface-get-device-position"><primary>gdk_surface_get_device_position</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_get_device_position (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                 <parameter><link linkend="GdkDevice"><type>GdkDevice</type></link> *device</parameter>,
                                 <parameter><link linkend="gint"><type>gint</type></link> *x</parameter>,
                                 <parameter><link linkend="gint"><type>gint</type></link> *y</parameter>,
                                 <parameter><link linkend="GdkModifierType"><type>GdkModifierType</type></link> *mask</parameter>);</programlisting>
<para>Obtains the current device position and modifier state.
The position is given in coordinates relative to the upper left
corner of <parameter>surface</parameter>
.</para>
<para>Use <link linkend="gdk-surface-get-device-position-double"><function>gdk_surface_get_device_position_double()</function></link> if you need subpixel precision.</para>
<refsect3 id="gdk-surface-get-device-position.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>device</para></entry>
<entry role="parameter_description"><para>pointer <link linkend="GdkDevice"><type>GdkDevice</type></link> to query to.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>return location for the X coordinate of <parameter>device</parameter>
, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>return location for the Y coordinate of <parameter>device</parameter>
, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>mask</para></entry>
<entry role="parameter_description"><para>return location for the modifier mask, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-device-position.returns" role="returns">
<title>Returns</title>
<para>The surface underneath <parameter>device</parameter>
(as with <link linkend="gdk-device-get-surface-at-position"><function>gdk_device_get_surface_at_position()</function></link>), or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the
surface is not known to GDK. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-device-position-double" role="function">
<title>gdk_surface_get_device_position_double&#160;()</title>
<indexterm zone="gdk-surface-get-device-position-double"><primary>gdk_surface_get_device_position_double</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_get_device_position_double
                               (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                <parameter><link linkend="GdkDevice"><type>GdkDevice</type></link> *device</parameter>,
                                <parameter><link linkend="gdouble"><type>gdouble</type></link> *x</parameter>,
                                <parameter><link linkend="gdouble"><type>gdouble</type></link> *y</parameter>,
                                <parameter><link linkend="GdkModifierType"><type>GdkModifierType</type></link> *mask</parameter>);</programlisting>
<para>Obtains the current device position in doubles and modifier state.
The position is given in coordinates relative to the upper left
corner of <parameter>surface</parameter>
.</para>
<refsect3 id="gdk-surface-get-device-position-double.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>device</para></entry>
<entry role="parameter_description"><para>pointer <link linkend="GdkDevice"><type>GdkDevice</type></link> to query to.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>return location for the X coordinate of <parameter>device</parameter>
, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>return location for the Y coordinate of <parameter>device</parameter>
, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>mask</para></entry>
<entry role="parameter_description"><para>return location for the modifier mask, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-device-position-double.returns" role="returns">
<title>Returns</title>
<para>The surface underneath <parameter>device</parameter>
(as with <link linkend="gdk-device-get-surface-at-position"><function>gdk_device_get_surface_at_position()</function></link>), or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the
surface is not known to GDK. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-parent" role="function">
<title>gdk_surface_get_parent&#160;()</title>
<indexterm zone="gdk-surface-get-parent"><primary>gdk_surface_get_parent</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_get_parent (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Obtains the parent of <parameter>surface</parameter>
, as known to GDK. Does not query the
X server; thus this returns the parent as passed to <link linkend="gdk-surface-new"><function>gdk_surface_new()</function></link>,
not the actual parent. This should never matter unless you’re using
Xlib calls mixed with GDK calls on the X11 platform. It may also
matter for toplevel windows, because the window manager may choose
to reparent them.</para>
<refsect3 id="gdk-surface-get-parent.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-parent.returns" role="returns">
<title>Returns</title>
<para>parent of <parameter>surface</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-toplevel" role="function">
<title>gdk_surface_get_toplevel&#160;()</title>
<indexterm zone="gdk-surface-get-toplevel"><primary>gdk_surface_get_toplevel</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_get_toplevel (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Gets the toplevel surface that’s an ancestor of <parameter>surface</parameter>
.</para>
<para>Any surface type but <link linkend="GDK-SURFACE-CHILD:CAPS"><literal>GDK_SURFACE_CHILD</literal></link> is considered a
toplevel surface, as is a <link linkend="GDK-SURFACE-CHILD:CAPS"><literal>GDK_SURFACE_CHILD</literal></link> surface that
has a root surface as parent.</para>
<refsect3 id="gdk-surface-get-toplevel.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-toplevel.returns" role="returns">
<title>Returns</title>
<para>the toplevel surface containing <parameter>surface</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-children" role="function">
<title>gdk_surface_get_children&#160;()</title>
<indexterm zone="gdk-surface-get-children"><primary>gdk_surface_get_children</primary></indexterm>
<programlisting language="C"><link linkend="GList"><returnvalue>GList</returnvalue></link>&#160;*
gdk_surface_get_children (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Gets the list of children of <parameter>surface</parameter>
 known to GDK.
This function only returns children created via GDK,
so for example it’s useless when used with the root window;
it only returns surfaces an application created itself.</para>
<para>The returned list must be freed, but the elements in the
list need not be.</para>
<refsect3 id="gdk-surface-get-children.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-children.returns" role="returns">
<title>Returns</title>
<para>list of child surfaces inside <parameter>surface</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer container</acronym>][<acronym>element-type</acronym> GdkSurface]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-children-with-user-data" role="function">
<title>gdk_surface_get_children_with_user_data&#160;()</title>
<indexterm zone="gdk-surface-get-children-with-user-data"><primary>gdk_surface_get_children_with_user_data</primary></indexterm>
<programlisting language="C"><link linkend="GList"><returnvalue>GList</returnvalue></link>&#160;*
gdk_surface_get_children_with_user_data
                               (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                <parameter><link linkend="gpointer"><type>gpointer</type></link> user_data</parameter>);</programlisting>
<para>Gets the list of children of <parameter>surface</parameter>
 known to GDK with a
particular <parameter>user_data</parameter>
 set on it.</para>
<para>The returned list must be freed, but the elements in the
list need not be.</para>
<para>The list is returned in (relative) stacking order, i.e. the
lowest surface is first.</para>
<refsect3 id="gdk-surface-get-children-with-user-data.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>user_data</para></entry>
<entry role="parameter_description"><para>user data to look for</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-children-with-user-data.returns" role="returns">
<title>Returns</title>
<para>list of child surfaces inside <parameter>surface</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer container</acronym>][<acronym>element-type</acronym> GdkSurface]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-peek-children" role="function">
<title>gdk_surface_peek_children&#160;()</title>
<indexterm zone="gdk-surface-peek-children"><primary>gdk_surface_peek_children</primary></indexterm>
<programlisting language="C"><link linkend="GList"><returnvalue>GList</returnvalue></link>&#160;*
gdk_surface_peek_children (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Like <link linkend="gdk-surface-get-children"><function>gdk_surface_get_children()</function></link>, but does not copy the list of
children, so the list does not need to be freed.</para>
<refsect3 id="gdk-surface-peek-children.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-peek-children.returns" role="returns">
<title>Returns</title>
<para>a reference to the list of child surfaces in <parameter>surface</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>][<acronym>element-type</acronym> GdkSurface]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-icon-name" role="function">
<title>gdk_surface_set_icon_name&#160;()</title>
<indexterm zone="gdk-surface-set-icon-name"><primary>gdk_surface_set_icon_name</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_icon_name (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                           <parameter>const <link linkend="gchar"><type>gchar</type></link> *name</parameter>);</programlisting>
<para>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.</para>
<para>After calling this with a non-<link linkend="NULL:CAPS"><literal>NULL</literal></link> <parameter>name</parameter>
, calls to <link linkend="gdk-surface-set-title"><function>gdk_surface_set_title()</function></link>
will not update the icon title.</para>
<para>Using <link linkend="NULL:CAPS"><literal>NULL</literal></link> for <parameter>name</parameter>
 unsets the icon title; further calls to
<link linkend="gdk-surface-set-title"><function>gdk_surface_set_title()</function></link> will again update the icon title as well.</para>
<para>Note that some platforms don't support surface icons.</para>
<refsect3 id="gdk-surface-set-icon-name.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>name</para></entry>
<entry role="parameter_description"><para>name of surface while iconified (minimized). </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-transient-for" role="function">
<title>gdk_surface_set_transient_for&#160;()</title>
<indexterm zone="gdk-surface-set-transient-for"><primary>gdk_surface_set_transient_for</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_transient_for (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                               <parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *parent</parameter>);</programlisting>
<para>Indicates to the window manager that <parameter>surface</parameter>
 is a transient dialog
associated with the application surface <parameter>parent</parameter>
. This allows the
window manager to do things like center <parameter>surface</parameter>
 on <parameter>parent</parameter>
 and
keep <parameter>surface</parameter>
 above <parameter>parent</parameter>
.</para>
<para>See <link linkend="gtk-window-set-transient-for"><function>gtk_window_set_transient_for()</function></link> if you’re using <link linkend="GtkWindow"><type>GtkWindow</type></link> or
<link linkend="GtkDialog"><type>GtkDialog</type></link>.</para>
<refsect3 id="gdk-surface-set-transient-for.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>parent</para></entry>
<entry role="parameter_description"><para>another toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-role" role="function">
<title>gdk_surface_set_role&#160;()</title>
<indexterm zone="gdk-surface-set-role"><primary>gdk_surface_set_role</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_role (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                      <parameter>const <link linkend="gchar"><type>gchar</type></link> *role</parameter>);</programlisting>
<para>When using GTK+, typically you should use <link linkend="gtk-window-set-role"><function>gtk_window_set_role()</function></link> instead
of this low-level function.</para>
<para>The window manager and session manager use a surface’s role to
distinguish it from other kinds of surface in the same application.
When an application is restarted after being saved in a previous
session, all surfaces with the same title and role are treated as
interchangeable.  So if you have two surfaces with the same title
that should be distinguished for session management purposes, you
should set the role on those surfaces. It doesn’t matter what string
you use for the role, as long as you have a different role for each
non-interchangeable kind of surface.</para>
<refsect3 id="gdk-surface-set-role.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>role</para></entry>
<entry role="parameter_description"><para>a string indicating its role</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-startup-id" role="function">
<title>gdk_surface_set_startup_id&#160;()</title>
<indexterm zone="gdk-surface-set-startup-id"><primary>gdk_surface_set_startup_id</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_startup_id (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                            <parameter>const <link linkend="gchar"><type>gchar</type></link> *startup_id</parameter>);</programlisting>
<para>When using GTK+, typically you should use <link linkend="gtk-window-set-startup-id"><function>gtk_window_set_startup_id()</function></link>
instead of this low-level function.</para>
<refsect3 id="gdk-surface-set-startup-id.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>startup_id</para></entry>
<entry role="parameter_description"><para>a string with startup-notification identifier</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-group" role="function">
<title>gdk_surface_set_group&#160;()</title>
<indexterm zone="gdk-surface-set-group"><primary>gdk_surface_set_group</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_group (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                       <parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *leader</parameter>);</programlisting>
<para>Sets the group leader surface for <parameter>surface</parameter>
. By default,
GDK sets the group leader for all toplevel surfaces
to a global surface implicitly created by GDK. With this function
you can override this default.</para>
<para>The group leader surface allows the window manager to distinguish
all surfaces that belong to a single application. It may for example
allow users to minimize/unminimize all surfaces belonging to an
application at once. You should only set a non-default group surface
if your application pretends to be multiple applications.</para>
<refsect3 id="gdk-surface-set-group.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>leader</para></entry>
<entry role="parameter_description"><para>group leader surface, or <link linkend="NULL:CAPS"><literal>NULL</literal></link> to restore the default group leader surface. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-group" role="function">
<title>gdk_surface_get_group&#160;()</title>
<indexterm zone="gdk-surface-get-group"><primary>gdk_surface_get_group</primary></indexterm>
<programlisting language="C"><link linkend="GdkSurface"><returnvalue>GdkSurface</returnvalue></link>&#160;*
gdk_surface_get_group (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Returns the group leader surface for <parameter>surface</parameter>
. See <link linkend="gdk-surface-set-group"><function>gdk_surface_set_group()</function></link>.</para>
<refsect3 id="gdk-surface-get-group.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-group.returns" role="returns">
<title>Returns</title>
<para>the group leader surface for <parameter>surface</parameter>
. </para>
<para><emphasis role="annotation">[<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-decorations" role="function">
<title>gdk_surface_set_decorations&#160;()</title>
<indexterm zone="gdk-surface-set-decorations"><primary>gdk_surface_set_decorations</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_decorations (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                             <parameter><link linkend="GdkWMDecoration"><type>GdkWMDecoration</type></link> decorations</parameter>);</programlisting>
<para>“Decorations” are the features the window manager adds to a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link>.
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 <link linkend="gtk-window-set-decorated"><function>gtk_window_set_decorated()</function></link> on a <link linkend="GtkWindow"><type>GtkWindow</type></link> instead of
using the GDK function directly.</para>
<para>The <parameter>decorations</parameter>
 argument is the logical OR of the fields in
the <link linkend="GdkWMDecoration"><type>GdkWMDecoration</type></link> enumeration. If <link linkend="GDK-DECOR-ALL:CAPS"><type>GDK_DECOR_ALL</type></link> is included in the
mask, the other bits indicate which decorations should be turned off.
If <link linkend="GDK-DECOR-ALL:CAPS"><type>GDK_DECOR_ALL</type></link> is not included, then the other bits indicate
which decorations should be turned on.</para>
<para>Most window managers honor a decorations hint of 0 to disable all decorations,
but very few honor all possible combinations of bits.</para>
<refsect3 id="gdk-surface-set-decorations.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>decorations</para></entry>
<entry role="parameter_description"><para>decoration hint mask</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-decorations" role="function">
<title>gdk_surface_get_decorations&#160;()</title>
<indexterm zone="gdk-surface-get-decorations"><primary>gdk_surface_get_decorations</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_get_decorations (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                             <parameter><link linkend="GdkWMDecoration"><type>GdkWMDecoration</type></link> *decorations</parameter>);</programlisting>
<para>Returns the decorations set on the GdkSurface with
<link linkend="gdk-surface-set-decorations"><function>gdk_surface_set_decorations()</function></link>.</para>
<refsect3 id="gdk-surface-get-decorations.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>The toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link> to get the decorations from</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>decorations</para></entry>
<entry role="parameter_description"><para>The surface decorations will be written here. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-decorations.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface has decorations set, <link linkend="FALSE:CAPS"><literal>FALSE</literal></link> otherwise.</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-functions" role="function">
<title>gdk_surface_set_functions&#160;()</title>
<indexterm zone="gdk-surface-set-functions"><primary>gdk_surface_set_functions</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_functions (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                           <parameter><link linkend="GdkWMFunction"><type>GdkWMFunction</type></link> functions</parameter>);</programlisting>
<para>Sets hints about the window management functions to make available
via buttons on the window frame.</para>
<para>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.</para>
<para>The <parameter>functions</parameter>
 argument is the logical OR of values from the
<link linkend="GdkWMFunction"><type>GdkWMFunction</type></link> enumeration. If the bitmask includes <link linkend="GDK-FUNC-ALL:CAPS"><type>GDK_FUNC_ALL</type></link>,
then the other bits indicate which functions to disable; if
it doesn’t include <link linkend="GDK-FUNC-ALL:CAPS"><type>GDK_FUNC_ALL</type></link>, it indicates which functions to
enable.</para>
<refsect3 id="gdk-surface-set-functions.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a toplevel <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>functions</para></entry>
<entry role="parameter_description"><para>bitmask of operations to allow on <parameter>surface</parameter>
</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-support-multidevice" role="function">
<title>gdk_surface_get_support_multidevice&#160;()</title>
<indexterm zone="gdk-surface-get-support-multidevice"><primary>gdk_surface_get_support_multidevice</primary></indexterm>
<programlisting language="C"><link linkend="gboolean"><returnvalue>gboolean</returnvalue></link>
gdk_surface_get_support_multidevice (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>);</programlisting>
<para>Returns <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface is aware of the existence of multiple
devices.</para>
<refsect3 id="gdk-surface-get-support-multidevice.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-support-multidevice.returns" role="returns">
<title>Returns</title>
<para> <link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the surface handles multidevice features.</para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-support-multidevice" role="function">
<title>gdk_surface_set_support_multidevice&#160;()</title>
<indexterm zone="gdk-surface-set-support-multidevice"><primary>gdk_surface_set_support_multidevice</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_support_multidevice (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                     <parameter><link linkend="gboolean"><type>gboolean</type></link> support_multidevice</parameter>);</programlisting>
<para>This function will enable multidevice features in <parameter>surface</parameter>
.</para>
<para>Multidevice aware surfaces will need to handle properly multiple,
per device enter/leave events, device grabs and grab ownerships.</para>
<refsect3 id="gdk-surface-set-support-multidevice.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>support_multidevice</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> to enable multidevice support in <parameter>surface</parameter>
.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-get-device-cursor" role="function">
<title>gdk_surface_get_device_cursor&#160;()</title>
<indexterm zone="gdk-surface-get-device-cursor"><primary>gdk_surface_get_device_cursor</primary></indexterm>
<programlisting language="C"><link linkend="GdkCursor"><returnvalue>GdkCursor</returnvalue></link>&#160;*
gdk_surface_get_device_cursor (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                               <parameter><link linkend="GdkDevice"><type>GdkDevice</type></link> *device</parameter>);</programlisting>
<para>Retrieves a <link linkend="GdkCursor"><type>GdkCursor</type></link> pointer for the <parameter>device</parameter>
 currently set on the
specified <link linkend="GdkSurface"><type>GdkSurface</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>.  If the return value is <link linkend="NULL:CAPS"><literal>NULL</literal></link> then
there is no custom cursor set on the specified surface, and it is
using the cursor for its parent surface.</para>
<refsect3 id="gdk-surface-get-device-cursor.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>device</para></entry>
<entry role="parameter_description"><para>a master, pointer <link linkend="GdkDevice"><type>GdkDevice</type></link>.</para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><refsect3 id="gdk-surface-get-device-cursor.returns" role="returns">
<title>Returns</title>
<para>a <link linkend="GdkCursor"><type>GdkCursor</type></link>, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. The
returned object is owned by the <link linkend="GdkSurface"><type>GdkSurface</type></link> and should not be
unreferenced directly. Use <link linkend="gdk-surface-set-cursor"><function>gdk_surface_set_cursor()</function></link> to unset the
cursor of the surface. </para>
<para><emphasis role="annotation">[<acronym>nullable</acronym>][<acronym>transfer none</acronym>]</emphasis></para>
</refsect3></refsect2>
<refsect2 id="gdk-surface-set-device-cursor" role="function">
<title>gdk_surface_set_device_cursor&#160;()</title>
<indexterm zone="gdk-surface-set-device-cursor"><primary>gdk_surface_set_device_cursor</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_set_device_cursor (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                               <parameter><link linkend="GdkDevice"><type>GdkDevice</type></link> *device</parameter>,
                               <parameter><link linkend="GdkCursor"><type>GdkCursor</type></link> *cursor</parameter>);</programlisting>
<para>Sets a specific <link linkend="GdkCursor"><type>GdkCursor</type></link> for a given device when it gets inside <parameter>surface</parameter>
.
Use <link linkend="gdk-cursor-new-for-display"><function>gdk_cursor_new_for_display()</function></link> or <link linkend="gdk-cursor-new-from-texture"><function>gdk_cursor_new_from_texture()</function></link> to create
the cursor. To make the cursor invisible, use <link linkend="GDK-BLANK-CURSOR:CAPS"><literal>GDK_BLANK_CURSOR</literal></link>. Passing
<link linkend="NULL:CAPS"><literal>NULL</literal></link> for the <parameter>cursor</parameter>
 argument to <link linkend="gdk-surface-set-cursor"><function>gdk_surface_set_cursor()</function></link> means that
<parameter>surface</parameter>
 will use the cursor of its parent surface. Most surfaces should
use this default.</para>
<refsect3 id="gdk-surface-set-device-cursor.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkSurface"><type>GdkSurface</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>device</para></entry>
<entry role="parameter_description"><para>a master, pointer <link linkend="GdkDevice"><type>GdkDevice</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>cursor</para></entry>
<entry role="parameter_description"><para>a <link linkend="GdkCursor"><type>GdkCursor</type></link></para></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-coords-from-parent" role="function">
<title>gdk_surface_coords_from_parent&#160;()</title>
<indexterm zone="gdk-surface-coords-from-parent"><primary>gdk_surface_coords_from_parent</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_coords_from_parent (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                                <parameter><link linkend="gdouble"><type>gdouble</type></link> parent_x</parameter>,
                                <parameter><link linkend="gdouble"><type>gdouble</type></link> parent_y</parameter>,
                                <parameter><link linkend="gdouble"><type>gdouble</type></link> *x</parameter>,
                                <parameter><link linkend="gdouble"><type>gdouble</type></link> *y</parameter>);</programlisting>
<para>Transforms surface coordinates from a parent surface to a child
surface.</para>
<para>Calling this function is equivalent to subtracting the return
values of <link linkend="gdk-surface-get-position"><function>gdk_surface_get_position()</function></link> from the parent coordinates.</para>
<para>See also: <link linkend="gdk-surface-coords-to-parent"><function>gdk_surface_coords_to_parent()</function></link></para>
<refsect3 id="gdk-surface-coords-from-parent.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a child surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>parent_x</para></entry>
<entry role="parameter_description"><para>X coordinate in parent’s coordinate system</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>parent_y</para></entry>
<entry role="parameter_description"><para>Y coordinate in parent’s coordinate system</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>return location for X coordinate in child’s coordinate system. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>return location for Y coordinate in child’s coordinate system. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="gdk-surface-coords-to-parent" role="function">
<title>gdk_surface_coords_to_parent&#160;()</title>
<indexterm zone="gdk-surface-coords-to-parent"><primary>gdk_surface_coords_to_parent</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
gdk_surface_coords_to_parent (<parameter><link linkend="GdkSurface"><type>GdkSurface</type></link> *surface</parameter>,
                              <parameter><link linkend="gdouble"><type>gdouble</type></link> x</parameter>,
                              <parameter><link linkend="gdouble"><type>gdouble</type></link> y</parameter>,
                              <parameter><link linkend="gdouble"><type>gdouble</type></link> *parent_x</parameter>,
                              <parameter><link linkend="gdouble"><type>gdouble</type></link> *parent_y</parameter>);</programlisting>
<para>Transforms surface coordinates from a child surface to its parent
surface. Calling this function is equivalent to adding the return
values of <link linkend="gdk-surface-get-position"><function>gdk_surface_get_position()</function></link> to the child coordinates.</para>
<para>See also: <link linkend="gdk-surface-coords-from-parent"><function>gdk_surface_coords_from_parent()</function></link></para>
<refsect3 id="gdk-surface-coords-to-parent.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>a child surface</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>x</para></entry>
<entry role="parameter_description"><para>X coordinate in child’s coordinate system</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>y</para></entry>
<entry role="parameter_description"><para>Y coordinate in child’s coordinate system</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>parent_x</para></entry>
<entry role="parameter_description"><para>return location for X coordinate
in parent’s coordinate system, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>parent_y</para></entry>
<entry role="parameter_description"><para>return location for Y coordinate
in parent’s coordinate system, or <link linkend="NULL:CAPS"><literal>NULL</literal></link>. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>out</acronym>][<acronym>allow-none</acronym>]</emphasis></entry></row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>

</refsect1>
<refsect1 id="GdkSurface.other_details" role="details">
<title role="details.title">Types and Values</title>
<refsect2 id="GdkSurface-struct" role="struct">
<title>GdkSurface</title>
<indexterm zone="GdkSurface-struct"><primary>GdkSurface</primary></indexterm>
<programlisting language="C">typedef struct _GdkSurface GdkSurface;</programlisting>
<para>The GdkSurface struct contains only private fields and
should not be accessed directly.</para>
</refsect2>
<refsect2 id="GdkSurfaceType" role="enum">
<title>enum GdkSurfaceType</title>
<indexterm zone="GdkSurfaceType"><primary>GdkSurfaceType</primary></indexterm>
<para>Describes the kind of surface.</para>
<refsect3 id="GdkSurfaceType.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TOPLEVEL:CAPS">GDK_SURFACE_TOPLEVEL</para></entry>
<entry role="enum_member_description"><para>toplevel window (used to implement <link linkend="GtkWindow"><type>GtkWindow</type></link>)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-CHILD:CAPS">GDK_SURFACE_CHILD</para></entry>
<entry role="enum_member_description"><para>child surface (used to implement e.g. <link linkend="GtkEntry"><type>GtkEntry</type></link>)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TEMP:CAPS">GDK_SURFACE_TEMP</para></entry>
<entry role="enum_member_description"><para>override redirect temporary surface (used to implement
 <link linkend="GtkMenu"><type>GtkMenu</type></link>)</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-SUBSURFACE:CAPS">GDK_SURFACE_SUBSURFACE</para></entry>
<entry role="enum_member_description"><para>subsurface; This surface is visually
 tied to a toplevel, and is moved/stacked with it. Currently this window
 type is only implemented in Wayland</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkSurfaceHints" role="enum">
<title>enum GdkSurfaceHints</title>
<indexterm zone="GdkSurfaceHints"><primary>GdkSurfaceHints</primary></indexterm>
<para>Used to indicate which fields of a <link linkend="GdkGeometry"><type>GdkGeometry</type></link> struct should be paid
attention to. Also, the presence/absence of <parameter>GDK_HINT_POS</parameter>
,
<parameter>GDK_HINT_USER_POS</parameter>
, and <parameter>GDK_HINT_USER_SIZE</parameter>
 is significant, though they don't
directly refer to <link linkend="GdkGeometry"><type>GdkGeometry</type></link> fields. <parameter>GDK_HINT_USER_POS</parameter>
 will be set
automatically by <link linkend="GtkWindow"><type>GtkWindow</type></link> if you call <link linkend="gtk-window-move"><function>gtk_window_move()</function></link>.
<parameter>GDK_HINT_USER_POS</parameter>
 and <parameter>GDK_HINT_USER_SIZE</parameter>
 should be set if the user
specified a size/position using a --geometry command-line argument;
<link linkend="gtk-window-parse-geometry"><function>gtk_window_parse_geometry()</function></link> automatically sets these flags.</para>
<refsect3 id="GdkSurfaceHints.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-POS:CAPS">GDK_HINT_POS</para></entry>
<entry role="enum_member_description"><para>indicates that the program has positioned the surface</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-MIN-SIZE:CAPS">GDK_HINT_MIN_SIZE</para></entry>
<entry role="enum_member_description"><para>min size fields are set</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-MAX-SIZE:CAPS">GDK_HINT_MAX_SIZE</para></entry>
<entry role="enum_member_description"><para>max size fields are set</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-BASE-SIZE:CAPS">GDK_HINT_BASE_SIZE</para></entry>
<entry role="enum_member_description"><para>base size fields are set</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-ASPECT:CAPS">GDK_HINT_ASPECT</para></entry>
<entry role="enum_member_description"><para>aspect ratio fields are set</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-RESIZE-INC:CAPS">GDK_HINT_RESIZE_INC</para></entry>
<entry role="enum_member_description"><para>resize increment fields are set</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-WIN-GRAVITY:CAPS">GDK_HINT_WIN_GRAVITY</para></entry>
<entry role="enum_member_description"><para>surface gravity field is set</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-USER-POS:CAPS">GDK_HINT_USER_POS</para></entry>
<entry role="enum_member_description"><para>indicates that the surface’s position was explicitly set
 by the user</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HINT-USER-SIZE:CAPS">GDK_HINT_USER_SIZE</para></entry>
<entry role="enum_member_description"><para>indicates that the surface’s size was explicitly set by
 the user</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkGeometry" role="struct">
<title>struct GdkGeometry</title>
<indexterm zone="GdkGeometry"><primary>GdkGeometry</primary></indexterm>
<programlisting language="C">struct GdkGeometry {
  gint min_width;
  gint min_height;
  gint max_width;
  gint max_height;
  gint base_width;
  gint base_height;
  gint width_inc;
  gint height_inc;
  gdouble min_aspect;
  gdouble max_aspect;
  GdkGravity win_gravity;
};
</programlisting>
<para>The <link linkend="GdkGeometry"><type>GdkGeometry</type></link> struct gives the window manager information about
a surface’s geometry constraints. Normally you would set these on
the GTK+ level using <link linkend="gtk-window-set-geometry-hints"><function>gtk_window_set_geometry_hints()</function></link>. <link linkend="GtkWindow"><type>GtkWindow</type></link>
then sets the hints on the <link linkend="GdkSurface"><type>GdkSurface</type></link> it creates.</para>
<para>gdk_surface_set_geometry_hints() expects the hints to be fully valid already
and simply passes them to the window manager; in contrast,
<link linkend="gtk-window-set-geometry-hints"><function>gtk_window_set_geometry_hints()</function></link> performs some interpretation. For example,
<link linkend="GtkWindow"><type>GtkWindow</type></link> will apply the hints to the geometry widget instead of the
toplevel window, if you set a geometry widget. Also, the
<parameter>min_width</parameter>
/<parameter>min_height</parameter>
/<parameter>max_width</parameter>
/<parameter>max_height</parameter>
 fields may be set to -1, and
<link linkend="GtkWindow"><type>GtkWindow</type></link> will substitute the size request of the surface or geometry widget.
If the minimum size hint is not provided, <link linkend="GtkWindow"><type>GtkWindow</type></link> will use its requisition
as the minimum size. If the minimum size is provided and a geometry widget is
set, <link linkend="GtkWindow"><type>GtkWindow</type></link> will take the minimum size as the minimum size of the
geometry widget rather than the entire surface. The base size is treated
similarly.</para>
<para>The canonical use-case for <link linkend="gtk-window-set-geometry-hints"><function>gtk_window_set_geometry_hints()</function></link> is to get a
terminal widget to resize properly. Here, the terminal text area should be
the geometry widget; <link linkend="GtkWindow"><type>GtkWindow</type></link> will then automatically set the base size to
the size of other widgets in the terminal window, such as the menubar and
scrollbar. Then, the <parameter>width_inc</parameter>
 and <parameter>height_inc</parameter>
 fields should be set to the
size of one character in the terminal. Finally, the base size should be set
to the size of one character. The net effect is that the minimum size of the
terminal will have a 1x1 character terminal area, and only terminal sizes on
the “character grid” will be allowed.</para>
<para>Here’s an example of how the terminal example would be implemented, assuming
a terminal area widget called “terminal” and a toplevel window “toplevel”:</para>
<informalexample><programlisting><![CDATA[
	GdkGeometry hints;

	hints.base_width = terminal->char_width;
        hints.base_height = terminal->char_height;
        hints.min_width = terminal->char_width;
        hints.min_height = terminal->char_height;
        hints.width_inc = terminal->char_width;
        hints.height_inc = terminal->char_height;

 gtk_window_set_geometry_hints (GTK_WINDOW (toplevel),
                                GTK_WIDGET (terminal),
                                &hints,
                                GDK_HINT_RESIZE_INC |
                                GDK_HINT_MIN_SIZE |
                                GDK_HINT_BASE_SIZE);
]]></programlisting></informalexample>
<para></para>
<para>The other useful fields are the <parameter>min_aspect</parameter>
 and <parameter>max_aspect</parameter>
 fields; these
contain a width/height ratio as a floating point number. If a geometry widget
is set, the aspect applies to the geometry widget rather than the entire
window. The most common use of these hints is probably to set <parameter>min_aspect</parameter>
 and
<parameter>max_aspect</parameter>
 to the same value, thus forcing the window to keep a constant
aspect ratio.</para>
<refsect3 id="GdkGeometry.members" role="struct_members">
<title>Members</title>
<informaltable role="struct_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="struct_members_name" colwidth="300px"/>
<colspec colname="struct_members_description"/>
<colspec colname="struct_members_annotations" colwidth="200px"/>
<tbody>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="GdkGeometry.min-width">min_width</structfield>;</para></entry>
<entry role="struct_member_description"><para>minimum width of surface (or -1 to use requisition, with
<link linkend="GtkWindow"><type>GtkWindow</type></link> only)</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="GdkGeometry.min-height">min_height</structfield>;</para></entry>
<entry role="struct_member_description"><para>minimum height of surface (or -1 to use requisition, with
<link linkend="GtkWindow"><type>GtkWindow</type></link> only)</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="GdkGeometry.max-width">max_width</structfield>;</para></entry>
<entry role="struct_member_description"><para>maximum width of surface (or -1 to use requisition, with
<link linkend="GtkWindow"><type>GtkWindow</type></link> only)</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="GdkGeometry.max-height">max_height</structfield>;</para></entry>
<entry role="struct_member_description"><para>maximum height of surface (or -1 to use requisition, with
<link linkend="GtkWindow"><type>GtkWindow</type></link> only)</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="GdkGeometry.base-width">base_width</structfield>;</para></entry>
<entry role="struct_member_description"><para>allowed surface widths are <parameter>base_width</parameter>
+ <parameter>width_inc</parameter>
* N where N
is any integer (-1 allowed with <link linkend="GtkWindow"><type>GtkWindow</type></link>)</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="GdkGeometry.base-height">base_height</structfield>;</para></entry>
<entry role="struct_member_description"><para>allowed surface widths are <parameter>base_height</parameter>
+ <parameter>height_inc</parameter>
* N where
N is any integer (-1 allowed with <link linkend="GtkWindow"><type>GtkWindow</type></link>)</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="GdkGeometry.width-inc">width_inc</structfield>;</para></entry>
<entry role="struct_member_description"><para>width resize increment</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gint"><type>gint</type></link>&#160;<structfield id="GdkGeometry.height-inc">height_inc</structfield>;</para></entry>
<entry role="struct_member_description"><para>height resize increment</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gdouble"><type>gdouble</type></link>&#160;<structfield id="GdkGeometry.min-aspect">min_aspect</structfield>;</para></entry>
<entry role="struct_member_description"><para>minimum width/height ratio</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="gdouble"><type>gdouble</type></link>&#160;<structfield id="GdkGeometry.max-aspect">max_aspect</structfield>;</para></entry>
<entry role="struct_member_description"><para>maximum width/height ratio</para></entry>
<entry role="struct_member_annotations"></entry>
</row>
<row role="member"><entry role="struct_member_name"><para><link linkend="GdkGravity"><type>GdkGravity</type></link>&#160;<structfield id="GdkGeometry.win-gravity">win_gravity</structfield>;</para></entry>
<entry role="struct_member_description"><para>surface gravity, see <link linkend="gtk-window-set-gravity"><function>gtk_window_set_gravity()</function></link></para></entry>
<entry role="struct_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3>
</refsect2>
<refsect2 id="GdkGravity" role="enum">
<title>enum GdkGravity</title>
<indexterm zone="GdkGravity"><primary>GdkGravity</primary></indexterm>
<para>Defines the reference point of a surface and the meaning of coordinates
passed to <link linkend="gtk-window-move"><function>gtk_window_move()</function></link>. See <link linkend="gtk-window-move"><function>gtk_window_move()</function></link> and the "implementation
notes" section of the
<ulink url="http://www.freedesktop.org/Standards/wm-spec">Extended Window Manager Hints</ulink>
specification for more details.</para>
<refsect3 id="GdkGravity.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-NORTH-WEST:CAPS">GDK_GRAVITY_NORTH_WEST</para></entry>
<entry role="enum_member_description"><para>the reference point is at the top left corner.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-NORTH:CAPS">GDK_GRAVITY_NORTH</para></entry>
<entry role="enum_member_description"><para>the reference point is in the middle of the top edge.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-NORTH-EAST:CAPS">GDK_GRAVITY_NORTH_EAST</para></entry>
<entry role="enum_member_description"><para>the reference point is at the top right corner.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-WEST:CAPS">GDK_GRAVITY_WEST</para></entry>
<entry role="enum_member_description"><para>the reference point is at the middle of the left edge.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-CENTER:CAPS">GDK_GRAVITY_CENTER</para></entry>
<entry role="enum_member_description"><para>the reference point is at the center of the surface.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-EAST:CAPS">GDK_GRAVITY_EAST</para></entry>
<entry role="enum_member_description"><para>the reference point is at the middle of the right edge.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-SOUTH-WEST:CAPS">GDK_GRAVITY_SOUTH_WEST</para></entry>
<entry role="enum_member_description"><para>the reference point is at the lower left corner.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-SOUTH:CAPS">GDK_GRAVITY_SOUTH</para></entry>
<entry role="enum_member_description"><para>the reference point is at the middle of the lower edge.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-SOUTH-EAST:CAPS">GDK_GRAVITY_SOUTH_EAST</para></entry>
<entry role="enum_member_description"><para>the reference point is at the lower right corner.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-GRAVITY-STATIC:CAPS">GDK_GRAVITY_STATIC</para></entry>
<entry role="enum_member_description"><para>the reference point is at the top left corner of the
 surface itself, ignoring window manager decorations.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkAnchorHints" role="enum">
<title>enum GdkAnchorHints</title>
<indexterm zone="GdkAnchorHints"><primary>GdkAnchorHints</primary></indexterm>
<para>Positioning hints for aligning a surface relative to a rectangle.</para>
<para>These hints determine how the surface should be positioned in the case that
the surface would fall off-screen if placed in its ideal position.</para>
<para>For example, <link linkend="GDK-ANCHOR-FLIP-X:CAPS"><literal>GDK_ANCHOR_FLIP_X</literal></link> will replace <link linkend="GDK-GRAVITY-NORTH-WEST:CAPS"><literal>GDK_GRAVITY_NORTH_WEST</literal></link> with
<link linkend="GDK-GRAVITY-NORTH-EAST:CAPS"><literal>GDK_GRAVITY_NORTH_EAST</literal></link> and vice versa if the surface extends beyond the left
or right edges of the monitor.</para>
<para>If <link linkend="GDK-ANCHOR-SLIDE-X:CAPS"><literal>GDK_ANCHOR_SLIDE_X</literal></link> is set, the surface can be shifted horizontally to fit
on-screen. If <link linkend="GDK-ANCHOR-RESIZE-X:CAPS"><literal>GDK_ANCHOR_RESIZE_X</literal></link> is set, the surface can be shrunken
horizontally to fit.</para>
<para>In general, when multiple flags are set, flipping should take precedence over
sliding, which should take precedence over resizing.</para>
<refsect3 id="GdkAnchorHints.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-FLIP-X:CAPS">GDK_ANCHOR_FLIP_X</para></entry>
<entry role="enum_member_description"><para>allow flipping anchors horizontally</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-FLIP-Y:CAPS">GDK_ANCHOR_FLIP_Y</para></entry>
<entry role="enum_member_description"><para>allow flipping anchors vertically</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-SLIDE-X:CAPS">GDK_ANCHOR_SLIDE_X</para></entry>
<entry role="enum_member_description"><para>allow sliding surface horizontally</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-SLIDE-Y:CAPS">GDK_ANCHOR_SLIDE_Y</para></entry>
<entry role="enum_member_description"><para>allow sliding surface vertically</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-RESIZE-X:CAPS">GDK_ANCHOR_RESIZE_X</para></entry>
<entry role="enum_member_description"><para>allow resizing surface horizontally</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-RESIZE-Y:CAPS">GDK_ANCHOR_RESIZE_Y</para></entry>
<entry role="enum_member_description"><para>allow resizing surface vertically</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-FLIP:CAPS">GDK_ANCHOR_FLIP</para></entry>
<entry role="enum_member_description"><para>allow flipping anchors on both axes</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-SLIDE:CAPS">GDK_ANCHOR_SLIDE</para></entry>
<entry role="enum_member_description"><para>allow sliding surface on both axes</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-ANCHOR-RESIZE:CAPS">GDK_ANCHOR_RESIZE</para></entry>
<entry role="enum_member_description"><para>allow resizing surface on both axes</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkSurfaceEdge" role="enum">
<title>enum GdkSurfaceEdge</title>
<indexterm zone="GdkSurfaceEdge"><primary>GdkSurfaceEdge</primary></indexterm>
<para>Determines a surface edge or corner.</para>
<refsect3 id="GdkSurfaceEdge.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-EDGE-NORTH-WEST:CAPS">GDK_SURFACE_EDGE_NORTH_WEST</para></entry>
<entry role="enum_member_description"><para>the top left corner.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-EDGE-NORTH:CAPS">GDK_SURFACE_EDGE_NORTH</para></entry>
<entry role="enum_member_description"><para>the top edge.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-EDGE-NORTH-EAST:CAPS">GDK_SURFACE_EDGE_NORTH_EAST</para></entry>
<entry role="enum_member_description"><para>the top right corner.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-EDGE-WEST:CAPS">GDK_SURFACE_EDGE_WEST</para></entry>
<entry role="enum_member_description"><para>the left edge.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-EDGE-EAST:CAPS">GDK_SURFACE_EDGE_EAST</para></entry>
<entry role="enum_member_description"><para>the right edge.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-EDGE-SOUTH-WEST:CAPS">GDK_SURFACE_EDGE_SOUTH_WEST</para></entry>
<entry role="enum_member_description"><para>the lower left corner.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-EDGE-SOUTH:CAPS">GDK_SURFACE_EDGE_SOUTH</para></entry>
<entry role="enum_member_description"><para>the lower edge.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-EDGE-SOUTH-EAST:CAPS">GDK_SURFACE_EDGE_SOUTH_EAST</para></entry>
<entry role="enum_member_description"><para>the lower right corner.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkSurfaceTypeHint" role="enum">
<title>enum GdkSurfaceTypeHint</title>
<indexterm zone="GdkSurfaceTypeHint"><primary>GdkSurfaceTypeHint</primary></indexterm>
<para>These are hints for the window manager that indicate what type of function
the window has. The window manager can use this when determining decoration
and behaviour of the window. The hint must be set before mapping the window.</para>
<para>See the <ulink url="http://www.freedesktop.org/Standards/wm-spec">Extended Window Manager Hints</ulink>
specification for more details about window types.</para>
<refsect3 id="GdkSurfaceTypeHint.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-NORMAL:CAPS">GDK_SURFACE_TYPE_HINT_NORMAL</para></entry>
<entry role="enum_member_description"><para>Normal toplevel window.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-DIALOG:CAPS">GDK_SURFACE_TYPE_HINT_DIALOG</para></entry>
<entry role="enum_member_description"><para>Dialog window.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-MENU:CAPS">GDK_SURFACE_TYPE_HINT_MENU</para></entry>
<entry role="enum_member_description"><para>Window used to implement a menu; GTK+ uses
 this hint only for torn-off menus, see <link linkend="GtkTearoffMenuItem"><type>GtkTearoffMenuItem</type></link>.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-TOOLBAR:CAPS">GDK_SURFACE_TYPE_HINT_TOOLBAR</para></entry>
<entry role="enum_member_description"><para>Window used to implement toolbars.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-SPLASHSCREEN:CAPS">GDK_SURFACE_TYPE_HINT_SPLASHSCREEN</para></entry>
<entry role="enum_member_description"><para>Window used to display a splash
 screen during application startup.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-UTILITY:CAPS">GDK_SURFACE_TYPE_HINT_UTILITY</para></entry>
<entry role="enum_member_description"><para>Utility windows which are not detached
 toolbars or dialogs.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-DOCK:CAPS">GDK_SURFACE_TYPE_HINT_DOCK</para></entry>
<entry role="enum_member_description"><para>Used for creating dock or panel windows.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-DESKTOP:CAPS">GDK_SURFACE_TYPE_HINT_DESKTOP</para></entry>
<entry role="enum_member_description"><para>Used for creating the desktop background
 window.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-DROPDOWN-MENU:CAPS">GDK_SURFACE_TYPE_HINT_DROPDOWN_MENU</para></entry>
<entry role="enum_member_description"><para>A menu that belongs to a menubar.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-POPUP-MENU:CAPS">GDK_SURFACE_TYPE_HINT_POPUP_MENU</para></entry>
<entry role="enum_member_description"><para>A menu that does not belong to a menubar,
 e.g. a context menu.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-TOOLTIP:CAPS">GDK_SURFACE_TYPE_HINT_TOOLTIP</para></entry>
<entry role="enum_member_description"><para>A tooltip.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-NOTIFICATION:CAPS">GDK_SURFACE_TYPE_HINT_NOTIFICATION</para></entry>
<entry role="enum_member_description"><para>A notification - typically a “bubble”
 that belongs to a status icon.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-COMBO:CAPS">GDK_SURFACE_TYPE_HINT_COMBO</para></entry>
<entry role="enum_member_description"><para>A popup from a combo box.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-TYPE-HINT-DND:CAPS">GDK_SURFACE_TYPE_HINT_DND</para></entry>
<entry role="enum_member_description"><para>A window that is used to implement a DND cursor.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkSurfaceState" role="enum">
<title>enum GdkSurfaceState</title>
<indexterm zone="GdkSurfaceState"><primary>GdkSurfaceState</primary></indexterm>
<para>Specifies the state of a toplevel surface.</para>
<refsect3 id="GdkSurfaceState.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-WITHDRAWN:CAPS">GDK_SURFACE_STATE_WITHDRAWN</para></entry>
<entry role="enum_member_description"><para>the surface is not shown.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-ICONIFIED:CAPS">GDK_SURFACE_STATE_ICONIFIED</para></entry>
<entry role="enum_member_description"><para>the surface is minimized.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-MAXIMIZED:CAPS">GDK_SURFACE_STATE_MAXIMIZED</para></entry>
<entry role="enum_member_description"><para>the surface is maximized.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-STICKY:CAPS">GDK_SURFACE_STATE_STICKY</para></entry>
<entry role="enum_member_description"><para>the surface is sticky.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-FULLSCREEN:CAPS">GDK_SURFACE_STATE_FULLSCREEN</para></entry>
<entry role="enum_member_description"><para>the surface is maximized without
  decorations.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-ABOVE:CAPS">GDK_SURFACE_STATE_ABOVE</para></entry>
<entry role="enum_member_description"><para>the surface is kept above other surfaces.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-BELOW:CAPS">GDK_SURFACE_STATE_BELOW</para></entry>
<entry role="enum_member_description"><para>the surface is kept below other surfaces.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-FOCUSED:CAPS">GDK_SURFACE_STATE_FOCUSED</para></entry>
<entry role="enum_member_description"><para>the surface is presented as focused (with active decorations).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-TILED:CAPS">GDK_SURFACE_STATE_TILED</para></entry>
<entry role="enum_member_description"><para>the surface is in a tiled state. Deprecated</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-TOP-TILED:CAPS">GDK_SURFACE_STATE_TOP_TILED</para></entry>
<entry role="enum_member_description"><para>whether the top edge is tiled</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-TOP-RESIZABLE:CAPS">GDK_SURFACE_STATE_TOP_RESIZABLE</para></entry>
<entry role="enum_member_description"><para>whether the top edge is resizable</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-RIGHT-TILED:CAPS">GDK_SURFACE_STATE_RIGHT_TILED</para></entry>
<entry role="enum_member_description"><para>whether the right edge is tiled</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-RIGHT-RESIZABLE:CAPS">GDK_SURFACE_STATE_RIGHT_RESIZABLE</para></entry>
<entry role="enum_member_description"><para>whether the right edge is resizable</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-BOTTOM-TILED:CAPS">GDK_SURFACE_STATE_BOTTOM_TILED</para></entry>
<entry role="enum_member_description"><para>whether the bottom edge is tiled</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-BOTTOM-RESIZABLE:CAPS">GDK_SURFACE_STATE_BOTTOM_RESIZABLE</para></entry>
<entry role="enum_member_description"><para>whether the bottom edge is resizable</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-LEFT-TILED:CAPS">GDK_SURFACE_STATE_LEFT_TILED</para></entry>
<entry role="enum_member_description"><para>whether the left edge is tiled</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SURFACE-STATE-LEFT-RESIZABLE:CAPS">GDK_SURFACE_STATE_LEFT_RESIZABLE</para></entry>
<entry role="enum_member_description"><para>whether the left edge is resizable</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkFullscreenMode" role="enum">
<title>enum GdkFullscreenMode</title>
<indexterm zone="GdkFullscreenMode"><primary>GdkFullscreenMode</primary></indexterm>
<para>Indicates which monitor (in a multi-head setup) a surface should span over
when in fullscreen mode.</para>
<refsect3 id="GdkFullscreenMode.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-FULLSCREEN-ON-CURRENT-MONITOR:CAPS">GDK_FULLSCREEN_ON_CURRENT_MONITOR</para></entry>
<entry role="enum_member_description"><para>Fullscreen on current monitor only.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-FULLSCREEN-ON-ALL-MONITORS:CAPS">GDK_FULLSCREEN_ON_ALL_MONITORS</para></entry>
<entry role="enum_member_description"><para>Span across all monitors when fullscreen.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GDK-PARENT-RELATIVE:CAPS" role="macro">
<title>GDK_PARENT_RELATIVE</title>
<indexterm zone="GDK-PARENT-RELATIVE:CAPS"><primary>GDK_PARENT_RELATIVE</primary></indexterm>
<programlisting language="C">#define GDK_PARENT_RELATIVE  1L
</programlisting>
<para>A special value, indicating that the background
for a surface should be inherited from the parent surface.</para>
</refsect2>
<refsect2 id="GdkModifierType" role="enum">
<title>enum GdkModifierType</title>
<indexterm zone="GdkModifierType"><primary>GdkModifierType</primary></indexterm>
<para>A set of bit-flags to indicate the state of modifier keys and mouse buttons
in various event types. Typical modifier keys are Shift, Control, Meta,
Super, Hyper, Alt, Compose, Apple, CapsLock or ShiftLock.</para>
<para>Like the X Window System, GDK supports 8 modifier keys and 5 mouse buttons.</para>
<para>GDK recognizes which of the Meta, Super or Hyper keys are mapped
to Mod2 - Mod5, and indicates this by setting <link linkend="GDK-SUPER-MASK:CAPS"><literal>GDK_SUPER_MASK</literal></link>,
<link linkend="GDK-HYPER-MASK:CAPS"><literal>GDK_HYPER_MASK</literal></link> or <link linkend="GDK-META-MASK:CAPS"><literal>GDK_META_MASK</literal></link> in the state field of key events.</para>
<para>Note that GDK may add internal values to events which include
reserved values such as <link linkend="GDK-MODIFIER-RESERVED-13-MASK:CAPS"><literal>GDK_MODIFIER_RESERVED_13_MASK</literal></link>.  Your code
should preserve and ignore them.  You can use <link linkend="GDK-MODIFIER-MASK:CAPS"><literal>GDK_MODIFIER_MASK</literal></link> to
remove all reserved values.</para>
<para>Also note that the GDK X backend interprets button press events for button
4-7 as scroll events, so <link linkend="GDK-BUTTON4-MASK:CAPS"><literal>GDK_BUTTON4_MASK</literal></link> and <link linkend="GDK-BUTTON5-MASK:CAPS"><literal>GDK_BUTTON5_MASK</literal></link> will never
be set.</para>
<refsect3 id="GdkModifierType.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SHIFT-MASK:CAPS">GDK_SHIFT_MASK</para></entry>
<entry role="enum_member_description"><para>the Shift key.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-LOCK-MASK:CAPS">GDK_LOCK_MASK</para></entry>
<entry role="enum_member_description"><para>a Lock key (depending on the modifier mapping of the
 X server this may either be CapsLock or ShiftLock).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-CONTROL-MASK:CAPS">GDK_CONTROL_MASK</para></entry>
<entry role="enum_member_description"><para>the Control key.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MOD1-MASK:CAPS">GDK_MOD1_MASK</para></entry>
<entry role="enum_member_description"><para>the fourth modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier, but
 normally it is the Alt key).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MOD2-MASK:CAPS">GDK_MOD2_MASK</para></entry>
<entry role="enum_member_description"><para>the fifth modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MOD3-MASK:CAPS">GDK_MOD3_MASK</para></entry>
<entry role="enum_member_description"><para>the sixth modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MOD4-MASK:CAPS">GDK_MOD4_MASK</para></entry>
<entry role="enum_member_description"><para>the seventh modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MOD5-MASK:CAPS">GDK_MOD5_MASK</para></entry>
<entry role="enum_member_description"><para>the eighth modifier key (it depends on the modifier
 mapping of the X server which key is interpreted as this modifier).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-BUTTON1-MASK:CAPS">GDK_BUTTON1_MASK</para></entry>
<entry role="enum_member_description"><para>the first mouse button.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-BUTTON2-MASK:CAPS">GDK_BUTTON2_MASK</para></entry>
<entry role="enum_member_description"><para>the second mouse button.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-BUTTON3-MASK:CAPS">GDK_BUTTON3_MASK</para></entry>
<entry role="enum_member_description"><para>the third mouse button.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-BUTTON4-MASK:CAPS">GDK_BUTTON4_MASK</para></entry>
<entry role="enum_member_description"><para>the fourth mouse button.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-BUTTON5-MASK:CAPS">GDK_BUTTON5_MASK</para></entry>
<entry role="enum_member_description"><para>the fifth mouse button.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-13-MASK:CAPS">GDK_MODIFIER_RESERVED_13_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-14-MASK:CAPS">GDK_MODIFIER_RESERVED_14_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-15-MASK:CAPS">GDK_MODIFIER_RESERVED_15_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-16-MASK:CAPS">GDK_MODIFIER_RESERVED_16_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-17-MASK:CAPS">GDK_MODIFIER_RESERVED_17_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-18-MASK:CAPS">GDK_MODIFIER_RESERVED_18_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-19-MASK:CAPS">GDK_MODIFIER_RESERVED_19_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-20-MASK:CAPS">GDK_MODIFIER_RESERVED_20_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-21-MASK:CAPS">GDK_MODIFIER_RESERVED_21_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-22-MASK:CAPS">GDK_MODIFIER_RESERVED_22_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-23-MASK:CAPS">GDK_MODIFIER_RESERVED_23_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-24-MASK:CAPS">GDK_MODIFIER_RESERVED_24_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-25-MASK:CAPS">GDK_MODIFIER_RESERVED_25_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-SUPER-MASK:CAPS">GDK_SUPER_MASK</para></entry>
<entry role="enum_member_description"><para>the Super modifier</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-HYPER-MASK:CAPS">GDK_HYPER_MASK</para></entry>
<entry role="enum_member_description"><para>the Hyper modifier</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-META-MASK:CAPS">GDK_META_MASK</para></entry>
<entry role="enum_member_description"><para>the Meta modifier</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-RESERVED-29-MASK:CAPS">GDK_MODIFIER_RESERVED_29_MASK</para></entry>
<entry role="enum_member_description"><para>A reserved bit flag; do not use in your own code</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-RELEASE-MASK:CAPS">GDK_RELEASE_MASK</para></entry>
<entry role="enum_member_description"><para>not used in GDK itself. GTK+ uses it to differentiate
 between (keyval, modifiers) pairs from key press and release events.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-MASK:CAPS">GDK_MODIFIER_MASK</para></entry>
<entry role="enum_member_description"><para>a mask covering all modifier types.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkModifierIntent" role="enum">
<title>enum GdkModifierIntent</title>
<indexterm zone="GdkModifierIntent"><primary>GdkModifierIntent</primary></indexterm>
<para>This enum is used with <link linkend="gdk-keymap-get-modifier-mask"><function>gdk_keymap_get_modifier_mask()</function></link>
in order to determine what modifiers the
currently used windowing system backend uses for particular
purposes. For example, on X11/Windows, the Control key is used for
invoking menu shortcuts (accelerators), whereas on Apple computers
it’s the Command key (which correspond to <link linkend="GDK-CONTROL-MASK:CAPS"><literal>GDK_CONTROL_MASK</literal></link> and
<link linkend="GDK-MOD2-MASK:CAPS"><literal>GDK_MOD2_MASK</literal></link>, respectively).</para>
<refsect3 id="GdkModifierIntent.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-INTENT-PRIMARY-ACCELERATOR:CAPS">GDK_MODIFIER_INTENT_PRIMARY_ACCELERATOR</para></entry>
<entry role="enum_member_description"><para>the primary modifier used to invoke
 menu accelerators.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-INTENT-CONTEXT-MENU:CAPS">GDK_MODIFIER_INTENT_CONTEXT_MENU</para></entry>
<entry role="enum_member_description"><para>the modifier used to invoke context menus.
 Note that mouse button 3 always triggers context menus. When this modifier
 is not 0, it additionally triggers context menus when used with mouse button 1.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-INTENT-EXTEND-SELECTION:CAPS">GDK_MODIFIER_INTENT_EXTEND_SELECTION</para></entry>
<entry role="enum_member_description"><para>the modifier used to extend selections
 using <literal>modifier</literal>-click or <literal>modifier</literal>-cursor-key</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-INTENT-MODIFY-SELECTION:CAPS">GDK_MODIFIER_INTENT_MODIFY_SELECTION</para></entry>
<entry role="enum_member_description"><para>the modifier used to modify selections,
 which in most cases means toggling the clicked item into or out of the selection.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-INTENT-NO-TEXT-INPUT:CAPS">GDK_MODIFIER_INTENT_NO_TEXT_INPUT</para></entry>
<entry role="enum_member_description"><para>when any of these modifiers is pressed, the
 key event cannot produce a symbol directly. This is meant to be used for
 input methods, and for use cases like typeahead search.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-INTENT-SHIFT-GROUP:CAPS">GDK_MODIFIER_INTENT_SHIFT_GROUP</para></entry>
<entry role="enum_member_description"><para>the modifier that switches between keyboard
 groups (AltGr on X11/Windows and Option/Alt on OS X).</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-MODIFIER-INTENT-DEFAULT-MOD-MASK:CAPS">GDK_MODIFIER_INTENT_DEFAULT_MOD_MASK</para></entry>
<entry role="enum_member_description"><para>The set of modifier masks accepted
as modifiers in accelerators. Needed because Command is mapped to MOD2 on
OSX, which is widely used, but on X11 MOD2 is NumLock and using that for a
mod key is problematic at best.
Ref: https://bugzilla.gnome.org/show_bug.cgi?id=736125.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkWMDecoration" role="enum">
<title>enum GdkWMDecoration</title>
<indexterm zone="GdkWMDecoration"><primary>GdkWMDecoration</primary></indexterm>
<para>These are hints originally defined by the Motif toolkit.
The window manager can use them when determining how to decorate
the surface. The hint must be set before mapping the surface.</para>
<refsect3 id="GdkWMDecoration.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-DECOR-ALL:CAPS">GDK_DECOR_ALL</para></entry>
<entry role="enum_member_description"><para>all decorations should be applied.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-DECOR-BORDER:CAPS">GDK_DECOR_BORDER</para></entry>
<entry role="enum_member_description"><para>a frame should be drawn around the surface.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-DECOR-RESIZEH:CAPS">GDK_DECOR_RESIZEH</para></entry>
<entry role="enum_member_description"><para>the frame should have resize handles.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-DECOR-TITLE:CAPS">GDK_DECOR_TITLE</para></entry>
<entry role="enum_member_description"><para>a titlebar should be placed above the surface.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-DECOR-MENU:CAPS">GDK_DECOR_MENU</para></entry>
<entry role="enum_member_description"><para>a button for opening a menu should be included.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-DECOR-MINIMIZE:CAPS">GDK_DECOR_MINIMIZE</para></entry>
<entry role="enum_member_description"><para>a minimize button should be included.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-DECOR-MAXIMIZE:CAPS">GDK_DECOR_MAXIMIZE</para></entry>
<entry role="enum_member_description"><para>a maximize button should be included.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>
<refsect2 id="GdkWMFunction" role="enum">
<title>enum GdkWMFunction</title>
<indexterm zone="GdkWMFunction"><primary>GdkWMFunction</primary></indexterm>
<para>These are hints originally defined by the Motif toolkit. The window manager
can use them when determining the functions to offer for the surface. The
hint must be set before mapping the surface.</para>
<refsect3 id="GdkWMFunction.members" role="enum_members">
<title>Members</title>
<informaltable role="enum_members_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="enum_members_name" colwidth="300px"/>
<colspec colname="enum_members_description"/>
<colspec colname="enum_members_annotations" colwidth="200px"/>
<tbody>
<row role="constant"><entry role="enum_member_name"><para id="GDK-FUNC-ALL:CAPS">GDK_FUNC_ALL</para></entry>
<entry role="enum_member_description"><para>all functions should be offered.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-FUNC-RESIZE:CAPS">GDK_FUNC_RESIZE</para></entry>
<entry role="enum_member_description"><para>the surface should be resizable.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-FUNC-MOVE:CAPS">GDK_FUNC_MOVE</para></entry>
<entry role="enum_member_description"><para>the surface should be movable.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-FUNC-MINIMIZE:CAPS">GDK_FUNC_MINIMIZE</para></entry>
<entry role="enum_member_description"><para>the surface should be minimizable.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-FUNC-MAXIMIZE:CAPS">GDK_FUNC_MAXIMIZE</para></entry>
<entry role="enum_member_description"><para>the surface should be maximizable.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
<row role="constant"><entry role="enum_member_name"><para id="GDK-FUNC-CLOSE:CAPS">GDK_FUNC_CLOSE</para></entry>
<entry role="enum_member_description"><para>the surface should be closable.</para>
</entry>
<entry role="enum_member_annotations"></entry>
</row>
</tbody></tgroup></informaltable>
</refsect3></refsect2>

</refsect1>
<refsect1 id="GdkSurface.property-details" role="property_details">
<title role="property_details.title">Property Details</title>
<refsect2 id="GdkSurface--cursor" role="property"><title>The <literal>“cursor”</literal> property</title>
<indexterm zone="GdkSurface--cursor"><primary>GdkSurface:cursor</primary></indexterm>
<programlisting>  “cursor”                   <link linkend="GdkCursor"><type>GdkCursor</type></link>&#160;*</programlisting>
<para>The mouse pointer for a <link linkend="GdkSurface"><type>GdkSurface</type></link>. See <link linkend="gdk-surface-set-cursor"><function>gdk_surface_set_cursor()</function></link> and
<link linkend="gdk-surface-get-cursor"><function>gdk_surface_get_cursor()</function></link> for details.</para>
<para>Flags: Read / Write</para>
</refsect2>
<refsect2 id="GdkSurface--display" role="property"><title>The <literal>“display”</literal> property</title>
<indexterm zone="GdkSurface--display"><primary>GdkSurface:display</primary></indexterm>
<programlisting>  “display”                  <link linkend="GdkDisplay"><type>GdkDisplay</type></link>&#160;*</programlisting>
<para>The <link linkend="GdkDisplay"><type>GdkDisplay</type></link> connection of the surface. See <link linkend="gdk-surface-get-display"><function>gdk_surface_get_display()</function></link>
for details.</para>
<para>Flags: Read / Write / Construct Only</para>
</refsect2>
<refsect2 id="GdkSurface--state" role="property"><title>The <literal>“state”</literal> property</title>
<indexterm zone="GdkSurface--state"><primary>GdkSurface:state</primary></indexterm>
<programlisting>  “state”                    <link linkend="GdkSurfaceState"><type>GdkSurfaceState</type></link></programlisting>
<para>State.</para><para>Flags: Read</para>
<para>Default value: GDK_SURFACE_STATE_WITHDRAWN</para>
</refsect2>

</refsect1>
<refsect1 id="GdkSurface.signal-details" role="signals">
<title role="signals.title">Signal Details</title>
<refsect2 id="GdkSurface-moved-to-rect" role="signal"><title>The <literal>“moved-to-rect”</literal> signal</title>
<indexterm zone="GdkSurface-moved-to-rect"><primary>GdkSurface::moved-to-rect</primary></indexterm>
<programlisting language="C"><link linkend="void"><returnvalue>void</returnvalue></link>
user_function (<link linkend="GdkSurface"><type>GdkSurface</type></link> *surface,
               <link linkend="gpointer"><type>gpointer</type></link>    flipped_rect,
               <link linkend="gpointer"><type>gpointer</type></link>    final_rect,
               <link linkend="gboolean"><type>gboolean</type></link>    flipped_x,
               <link linkend="gboolean"><type>gboolean</type></link>    flipped_y,
               <link linkend="gpointer"><type>gpointer</type></link>    user_data)</programlisting>
<para>Emitted when the position of <parameter>surface</parameter>
 is finalized after being moved to a
destination rectangle.</para>
<para><parameter>surface</parameter>
 might be flipped over the destination rectangle in order to keep
it on-screen, in which case <parameter>flipped_x</parameter>
 and <parameter>flipped_y</parameter>
 will be set to <link linkend="TRUE:CAPS"><literal>TRUE</literal></link>
accordingly.</para>
<para><parameter>flipped_rect</parameter>
 is the ideal position of <parameter>surface</parameter>
 after any possible
flipping, but before any possible sliding. <parameter>final_rect</parameter>
 is <parameter>flipped_rect</parameter>
,
but possibly translated in the case that flipping is still ineffective in
keeping <parameter>surface</parameter>
 on-screen.</para>
<refsect3 id="GdkSurface-moved-to-rect.parameters" role="parameters">
<title>Parameters</title>
<informaltable role="parameters_table" pgwide="1" frame="none">
<tgroup cols="3">
<colspec colname="parameters_name" colwidth="150px"/>
<colspec colname="parameters_description"/>
<colspec colname="parameters_annotations" colwidth="200px"/>
<tbody>
<row><entry role="parameter_name"><para>surface</para></entry>
<entry role="parameter_description"><para>the <link linkend="GdkSurface"><type>GdkSurface</type></link> that moved</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>flipped_rect</para></entry>
<entry role="parameter_description"><para>the position of <parameter>surface</parameter>
after any possible
flipping or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the backend can't obtain it. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>final_rect</para></entry>
<entry role="parameter_description"><para>the final position of <parameter>surface</parameter>
or <link linkend="NULL:CAPS"><literal>NULL</literal></link> if the
backend can't obtain it. </para></entry>
<entry role="parameter_annotations"><emphasis role="annotation">[<acronym>nullable</acronym>]</emphasis></entry></row>
<row><entry role="parameter_name"><para>flipped_x</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the anchors were flipped horizontally</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><para>flipped_y</para></entry>
<entry role="parameter_description"><para><link linkend="TRUE:CAPS"><literal>TRUE</literal></link> if the anchors were flipped vertically</para></entry>
<entry role="parameter_annotations"></entry></row>
<row><entry role="parameter_name"><simpara>user_data</simpara></entry>
<entry role="parameter_description"><simpara>user data set when the signal handler was connected.</simpara></entry>
<entry role="parameter_annotations"></entry></row>
</tbody></tgroup></informaltable>
</refsect3><para>Flags: <link linkend="G-SIGNAL-RUN-FIRST:CAPS">Run First</link></para>
<para role="stability">Stability Level: <acronym>Private</acronym></para></refsect2>
</refsect1>

</refentry>
