Add GdkDragSurfaceSize
authorMatthias Clasen <mclasen@redhat.com>
Wed, 8 Mar 2023 19:01:10 +0000 (14:01 -0500)
committerIvan Molodetskikh <yalterz@gmail.com>
Wed, 15 Mar 2023 02:41:44 +0000 (19:41 -0700)
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.

gdk/gdk.h
gdk/gdkdragsurfacesize.c [new file with mode: 0644]
gdk/gdkdragsurfacesize.h [new file with mode: 0644]
gdk/gdkdragsurfacesizeprivate.h [new file with mode: 0644]
gdk/meson.build

index af43c7f1758c1a058a3d34053ff5568ae71a8982..4e8f31880d7fceb91fee49ed011b0491240f9fd8 100644 (file)
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -45,6 +45,7 @@
 #include <gdk/gdkdisplaymanager.h>
 #include <gdk/gdkdrag.h>
 #include <gdk/gdkdragsurface.h>
+#include <gdk/gdkdragsurfacesize.h>
 #include <gdk/gdkdrawcontext.h>
 #include <gdk/gdkdrop.h>
 #include <gdk/gdkenums.h>
diff --git a/gdk/gdkdragsurfacesize.c b/gdk/gdkdragsurfacesize.c
new file mode 100644 (file)
index 0000000..354d3ec
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#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 (file)
index 0000000..28d2312
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#if !defined(__GDK_H_INSIDE__) && !defined(GTK_COMPILATION)
+#error "Only <gdk/gdk.h> can be included directly."
+#endif
+
+#include <gdk/gdktypes.h>
+#include <gdk/gdkversionmacros.h>
+
+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 (file)
index 0000000..f777f47
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#pragma once
+
+#include "gdkdragsurfacesize.h"
+
+struct _GdkDragSurfaceSize
+{
+  int width;
+  int height;
+};
+
+void gdk_drag_surface_size_init (GdkDragSurfaceSize *size);
index 3f97ac16fbf6a5aac0364fc41d96754a0c93addc..0e97663c0843a424cf75da5c7e8e3da2a6eae171 100644 (file)
@@ -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',