From: Matthias Clasen Date: Wed, 8 Mar 2023 19:01:10 +0000 (-0500) Subject: Add GdkDragSurfaceSize X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~549^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=45434d501cd97efeb7a667e8ef60aeae1da1d2f6;p=gtk4.git Add GdkDragSurfaceSize This helper type will be used in the next commit for a new compute-size request on GdkDragSurface. It is analogous in spirit to GdkToplevelSize. --- diff --git a/gdk/gdk.h b/gdk/gdk.h index af43c7f175..4e8f31880d 100644 --- a/gdk/gdk.h +++ b/gdk/gdk.h @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include diff --git a/gdk/gdkdragsurfacesize.c b/gdk/gdkdragsurfacesize.c new file mode 100644 index 0000000000..354d3ecc1c --- /dev/null +++ b/gdk/gdkdragsurfacesize.c @@ -0,0 +1,53 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2023 Red Hat + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + */ + +#include "config.h" + +#include "gdkdragsurfacesizeprivate.h" + +/** + * GdkDragSurfaceSize: + * + * The `GdkDragSurfaceSize` struct contains information that is useful + * to compute the size of a drag surface. + */ + +G_DEFINE_POINTER_TYPE (GdkDragSurfaceSize, gdk_drag_surface_size) + +void +gdk_drag_surface_size_init (GdkDragSurfaceSize *size) +{ + *size = (GdkDragSurfaceSize) { 0 }; +} + +/** + * gdk_drag_surface_size_set_size: + * @size: a `GdkDragSurfaceSize` + * @width: the width + * @height: the height + * + * Sets the size the drag surface prefers to be resized to. + */ +void +gdk_drag_surface_size_set_size (GdkDragSurfaceSize *size, + int width, + int height) +{ + size->width = width; + size->height = height; +} diff --git a/gdk/gdkdragsurfacesize.h b/gdk/gdkdragsurfacesize.h new file mode 100644 index 0000000000..28d23128be --- /dev/null +++ b/gdk/gdkdragsurfacesize.h @@ -0,0 +1,42 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2023 Red Hat + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + */ + +#pragma once + +#if !defined(__GDK_H_INSIDE__) && !defined(GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +typedef struct _GdkDragSurfaceSize GdkDragSurfaceSize; + +#define GDK_TYPE_DRAG_SURFACE_SIZE (gdk_drag_surface_size_get_type ()) + +GDK_AVAILABLE_IN_4_12 +GType gdk_drag_surface_size_get_type (void); + +GDK_AVAILABLE_IN_4_12 +void gdk_drag_surface_size_set_size (GdkDragSurfaceSize *size, + int width, + int height); + +G_END_DECLS diff --git a/gdk/gdkdragsurfacesizeprivate.h b/gdk/gdkdragsurfacesizeprivate.h new file mode 100644 index 0000000000..f777f473c8 --- /dev/null +++ b/gdk/gdkdragsurfacesizeprivate.h @@ -0,0 +1,29 @@ +/* GDK - The GIMP Drawing Kit + * Copyright (C) 2023 Red Hat + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see . + * + */ + +#pragma once + +#include "gdkdragsurfacesize.h" + +struct _GdkDragSurfaceSize +{ + int width; + int height; +}; + +void gdk_drag_surface_size_init (GdkDragSurfaceSize *size); diff --git a/gdk/meson.build b/gdk/meson.build index 3f97ac16fb..0e97663c08 100644 --- a/gdk/meson.build +++ b/gdk/meson.build @@ -16,6 +16,8 @@ gdk_public_sources = files([ 'gdkdisplay.c', 'gdkdisplaymanager.c', 'gdkdrag.c', + 'gdkdragsurface.c', + 'gdkdragsurfacesize.c', 'gdkdrawcontext.c', 'gdkdrop.c', 'gdkevents.c', @@ -52,7 +54,6 @@ gdk_public_sources = files([ 'gdktoplevellayout.c', 'gdktoplevelsize.c', 'gdktoplevel.c', - 'gdkdragsurface.c', 'loaders/gdkpng.c', 'loaders/gdktiff.c', 'loaders/gdkjpeg.c', @@ -76,6 +77,7 @@ gdk_public_headers = files([ 'gdkdisplay.h', 'gdkdisplaymanager.h', 'gdkdrag.h', + 'gdkdragsurfacesize.h', 'gdkdrawcontext.h', 'gdkdrop.h', 'gdkenums.h',