Gdk.Surface¶
class — extends GObject.Object
Represents a rectangular region on the screen.
It’s a low-level object, used to implement high-level objects such as GtkWindow.
The surfaces you see in practice are either Toplevel or
Popup, and those interfaces provide much of the required
API to interact with these surfaces. Other, more specialized surface
types exist, but you will rarely interact with them directly.
Constructors¶
new_popup¶
Create a new popup surface.
The surface will be attached to parent and can be positioned
relative to it using Popup.present.
Parameters:
parent— the parent surface to attach the surface toautohide— whether to hide the surface on outside clicks
new_toplevel¶
Creates a new toplevel surface.
Parameters:
display— the display to create the surface on
Methods¶
beep¶
Emits a short beep associated to surface.
If the display of surface does not support per-surface beeps,
emits a short beep on the display just as Display.beep.
create_cairo_context¶
:::warning Deprecated since 4.18 This API is deprecated. :::
Creates a new GdkCairoContext for rendering on surface.
create_gl_context¶
Creates a new GdkGLContext for the GdkSurface.
The context is disconnected from any particular surface or surface.
If the creation of the GdkGLContext failed, error will be set.
Before using the returned GdkGLContext, you will need to
call GLContext.make_current or GLContext.realize.
create_similar_surface¶
def create_similar_surface(self, content: cairo.Content | int, width: int, height: int) -> cairo.Surface
:::warning Deprecated since 4.12 This API is deprecated. :::
Create a new Cairo surface that is as compatible as possible with the
given surface.
For example the new surface will have the same fallback resolution
and font options as surface. Generally, the new surface will also
use the same backend as surface, unless that is not possible for
some reason. The type of the returned surface may be examined with
cairo_surface_get_type().
Initially the surface contents are all 0 (transparent if contents have transparency, black otherwise.)
This function always returns a valid pointer, but it will return a
pointer to a “nil” surface if other is already in an error state
or any other error occurs.
Parameters:
content— the content for the new surfacewidth— width of the new surfaceheight— height of the new surface
create_vulkan_context¶
:::warning Deprecated since 4.14 This API is deprecated. :::
Sets an error and returns None.
destroy¶
Destroys the window system resources associated with surface and
decrements surface's reference count.
The window system resources for all children of surface are also
destroyed, but the children’s reference counts are not decremented.
Note that a surface will not be destroyed automatically when its reference count reaches zero. You must call this function yourself before that happens.
get_cursor¶
Retrieves a GdkCursor pointer for the cursor currently set on the
GdkSurface.
If the return value is None then there is no custom cursor set on
the surface, and it is using the cursor for its parent surface.
Use Surface.set_cursor to unset the cursor of the surface.
get_device_cursor¶
Retrieves a GdkCursor pointer for the device currently set on the
specified GdkSurface.
If the return value is None then there is no custom cursor set on the
specified surface, and it is using the cursor for its parent surface.
Use Surface.set_cursor to unset the cursor of the surface.
Parameters:
device— a pointerGdkDevice
get_device_position¶
Obtains the current device position and modifier state.
The position is given in coordinates relative to the upper
left corner of surface.
Parameters:
device— pointerGdkDeviceto query to
get_display¶
Gets the GdkDisplay associated with a GdkSurface.
get_frame_clock¶
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.
get_height¶
Returns the height of the given surface.
Surface size is reported in ”application pixels”, not
”device pixels” (see Surface.get_scale_factor).
get_mapped¶
Checks whether the surface has been mapped.
A surface is mapped with Toplevel.present
or Popup.present.
get_scale¶
Returns the internal scale that maps from surface coordinates to the actual device pixels.
When the scale is bigger than 1, the windowing system prefers to get buffers with a resolution that is bigger than the surface size (e.g. to show the surface on a high-resolution display, or in a magnifier).
Compare with Surface.get_scale_factor, which returns the
next larger integer.
The scale may change during the lifetime of the surface.
get_scale_factor¶
Returns the internal scale factor that maps from surface coordinates 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). 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.
The scale factor may change during the lifetime of the surface.
get_width¶
Returns the width of the given surface.
Surface size is reported in ”application pixels”, not
”device pixels” (see Surface.get_scale_factor).
hide¶
Hide the surface.
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 Gtk.Widget.hide.
is_destroyed¶
Check to see if a surface is destroyed.
queue_render¶
Forces a Surface.render signal emission for surface
to be scheduled.
This function is useful for implementations that track invalid regions on their own.
request_layout¶
Request a layout phase from the surface's frame clock.
set_cursor¶
Sets the default mouse pointer for a GdkSurface.
Passing None for the cursor argument means that surface will use
the cursor of its parent surface. Most surfaces should use this default.
Note that cursor must be for the same display as surface.
Use Cursor.new_from_name or Cursor.new_from_texture
to create the cursor. To make the cursor invisible, use GDK_BLANK_CURSOR.
Parameters:
cursor— aGdkCursor
set_device_cursor¶
Sets a specific GdkCursor for a given device when it gets inside surface.
Passing None for the cursor argument means that surface will use the
cursor of its parent surface. Most surfaces should use this default.
Use Cursor.new_from_name or Cursor.new_from_texture
to create the cursor. To make the cursor invisible, use GDK_BLANK_CURSOR.
Parameters:
device— a pointerGdkDevicecursor— aGdkCursor
set_input_region¶
Apply the region to the surface for the purpose of 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
surface.
An input region 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 region controls where the surface is “clickable”.
Use Display.supports_input_shapes to find out if
a particular backend supports input regions.
Parameters:
region— region of surface to be reactive, orNoneto make the entire surface reactive
set_opaque_region¶
:::warning Deprecated since 4.16 This API is deprecated. :::
Marks a region of the GdkSurface as opaque.
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.
This function only works for toplevel surfaces.
GTK will update this property automatically if the surface background
is opaque, as we know where the opaque regions are. If your surface
background is not opaque, please update this property in your
GtkWidgetClass.css_changed handler.
Parameters:
region— a region, orNoneto make the entire surface opaque
translate_coordinates¶
Translates coordinates between two surfaces.
Note that this only works if to and from are popups or
transient-for to the same toplevel (directly or indirectly).
Parameters:
to— the target surfacex— coordinates to translatey— coordinates to translate
Properties¶
cursor¶
The mouse pointer for the GdkSurface.
display¶
The GdkDisplay connection of the surface.
frame_clock¶
The GdkFrameClock of the surface.
height¶
The height of the surface, in pixels.
mapped¶
Whether the surface is mapped.
scale¶
The scale of the surface.
scale_factor¶
The scale factor of the surface.
The scale factor is the next larger integer,
compared to Surface.scale.
width¶
The width of the surface in pixels.
Signals¶
enter-monitor¶
Emitted when surface starts being present on the monitor.
event¶
Emitted when GDK receives an input event for surface.
layout¶
Emitted when the size of surface is changed, or when relayout should
be performed.
Surface size is reported in ”application pixels”, not
”device pixels” (see Surface.get_scale_factor).
leave-monitor¶
Emitted when surface stops being present on the monitor.
render¶
Emitted when part of the surface needs to be redrawn.