diff options
-rw-r--r-- | docs/reference/gdk/gdk4-sections.txt | 2 | ||||
-rw-r--r-- | gdk/gdktoplevel.c | 50 | ||||
-rw-r--r-- | gdk/gdktoplevel.h | 17 |
3 files changed, 69 insertions, 0 deletions
diff --git a/docs/reference/gdk/gdk4-sections.txt b/docs/reference/gdk/gdk4-sections.txt index b753ee9ece..b526e2a879 100644 --- a/docs/reference/gdk/gdk4-sections.txt +++ b/docs/reference/gdk/gdk4-sections.txt @@ -675,6 +675,8 @@ gdk_toplevel_set_deletable gdk_toplevel_supports_edge_constraints gdk_toplevel_inhibit_system_shortcuts gdk_toplevel_restore_system_shortcuts +gdk_toplevel_begin_resize +gdk_toplevel_begin_move <SUBSECTION Standard> GDK_TYPE_TOPLEVEL gdk_toplevel_get_type diff --git a/gdk/gdktoplevel.c b/gdk/gdktoplevel.c index 96e4982627..7c10511ca9 100644 --- a/gdk/gdktoplevel.c +++ b/gdk/gdktoplevel.c @@ -23,6 +23,8 @@ #include "gdk-private.h" #include "gdktoplevelprivate.h" +#include <math.h> + /** * SECTION:gdktoplevel * @Short_description: Interface for toplevel surfaces @@ -512,3 +514,51 @@ gdk_toplevel_restore_system_shortcuts (GdkToplevel *toplevel) GDK_TOPLEVEL_GET_IFACE (toplevel)->restore_system_shortcuts (toplevel); } + +/** + * gdk_toplevel_begin_resize: + * @toplevel: a #GdkToplevel + * @edge: the edge or corner from which the drag is started + * @device: the device used for the operation + * @button: the button being used to drag, or 0 for a keyboard-initiated drag + * @x: surface X coordinate of mouse click that began the drag + * @y: surface Y coordinate of mouse click that began the drag + * @timestamp: timestamp of mouse click that began the drag (use gdk_event_get_time()) + * + * Begins an interactive resize operation (for a toplevel surface). + * You might use this function to implement a “window resize grip.” + */ +void +gdk_toplevel_begin_resize (GdkToplevel *toplevel, + GdkSurfaceEdge edge, + GdkDevice *device, + int button, + double x, + double y, + guint32 timestamp) +{ + gdk_surface_begin_resize_drag (GDK_SURFACE (toplevel), edge, device, button, round (x), round (y), timestamp); +} + +/** + * gdk_toplevel_begin_move: + * @toplevel: a #GdkToplevel + * @device: the device used for the operation + * @button: the button being used to drag, or 0 for a keyboard-initiated drag + * @x: surface X coordinate of mouse click that began the drag + * @y: surface Y coordinate of mouse click that began the drag + * @timestamp: timestamp of mouse click that began the drag + * + * Begins an interactive move operation (for a toplevel surface). + * You might use this function to implement draggable titlebars. + */ +void +gdk_toplevel_begin_move (GdkToplevel *toplevel, + GdkDevice *device, + int button, + double x, + double y, + guint32 timestamp) +{ + gdk_surface_begin_move_drag (GDK_SURFACE (toplevel), device, button, round (x), round (y), timestamp); +} diff --git a/gdk/gdktoplevel.h b/gdk/gdktoplevel.h index 863c26f3e8..20b3fc5d4b 100644 --- a/gdk/gdktoplevel.h +++ b/gdk/gdktoplevel.h @@ -95,6 +95,23 @@ void gdk_toplevel_inhibit_system_shortcuts (GdkToplevel *toplevel, GDK_AVAILABLE_IN_ALL void gdk_toplevel_restore_system_shortcuts (GdkToplevel *toplevel); +GDK_AVAILABLE_IN_ALL +void gdk_toplevel_begin_resize (GdkToplevel *toplevel, + GdkSurfaceEdge edge, + GdkDevice *device, + int button, + double x, + double y, + guint32 timestamp); + +GDK_AVAILABLE_IN_ALL +void gdk_toplevel_begin_move (GdkToplevel *toplevel, + GdkDevice *device, + int button, + double x, + double y, + guint32 timestamp); + G_END_DECLS |