From 2e5bc9fbc38e8ef4dfe7e07514ba5c3d05ed37b6 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 6 Apr 2018 20:21:06 +0200 Subject: [PATCH] gtk: Add the GtkRoot interface So far, this doesn't do anything. --- gtk/gtk.h | 1 + gtk/gtkroot.c | 44 ++++++++++++++++++++++++++++++++++++++++ gtk/gtkroot.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ gtk/gtktypes.h | 1 + gtk/meson.build | 2 ++ 5 files changed, 101 insertions(+) create mode 100644 gtk/gtkroot.c create mode 100644 gtk/gtkroot.h diff --git a/gtk/gtk.h b/gtk/gtk.h index c79f1a9dfb..368ce0ca69 100644 --- a/gtk/gtk.h +++ b/gtk/gtk.h @@ -176,6 +176,7 @@ #include #include #include +#include #include #include #include diff --git a/gtk/gtkroot.c b/gtk/gtkroot.c new file mode 100644 index 0000000000..3eecc97ec6 --- /dev/null +++ b/gtk/gtkroot.c @@ -0,0 +1,44 @@ +/* + * Copyright © 2018 Benjamin Otte + * + * 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.1 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 . + * + * Authors: Benjamin Otte + */ + +#include "config.h" + +#include "gtkroot.h" + +/** + * SECTION:root + * @Title: GtkRoot + * @Short_description: Root widgets + * @See_also: #GtkWindow + * + * #GtkRoot is the interface implemented by all widgets that can act as a toplevel + * widget to a hierarchy of widgets. The root widget takes care of providing the + * connection to the windowing system and manages layout, drawing and event delivery + * for its widget hierarchy. + * + * The obvious example of a #GtkRoot is #GtkWindow. + */ + +G_DEFINE_INTERFACE (GtkRoot, gtk_root, GTK_TYPE_WIDGET) + +static void +gtk_root_default_init (GtkRootInterface *iface) +{ +} + diff --git a/gtk/gtkroot.h b/gtk/gtkroot.h new file mode 100644 index 0000000000..e4894ee46b --- /dev/null +++ b/gtk/gtkroot.h @@ -0,0 +1,53 @@ +/* + * Copyright © 2018 Benjamin Otte + * + * 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.1 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 . + * + * Authors: Benjamin Otte + */ + +#ifndef __GTK_ROOT_H__ +#define __GTK_ROOT_H__ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only can be included directly." +#endif + +#include +#include + +G_BEGIN_DECLS + +#define GTK_TYPE_ROOT (gtk_root_get_type ()) + +GDK_AVAILABLE_IN_ALL +G_DECLARE_INTERFACE (GtkRoot, gtk_root, GTK, ROOT, GtkWidget) + +/** + * GtkRootIface: + * + * The list of functions that must be implemented for the #GtkRoot interface. + */ +struct _GtkRootInterface +{ + /*< private >*/ + GTypeInterface g_iface; + + /*< public >*/ +}; + + +G_END_DECLS + +#endif /* __GTK_ROOT_H__ */ diff --git a/gtk/gtktypes.h b/gtk/gtktypes.h index fc58058821..5d1218f189 100644 --- a/gtk/gtktypes.h +++ b/gtk/gtktypes.h @@ -39,6 +39,7 @@ typedef struct _GtkClipboard GtkClipboard; typedef struct _GtkEventController GtkEventController; typedef struct _GtkGesture GtkGesture; typedef struct _GtkRequisition GtkRequisition; +typedef struct _GtkRoot GtkRoot; typedef struct _GtkSelectionData GtkSelectionData; typedef struct _GtkSettings GtkSettings; typedef GdkSnapshot GtkSnapshot; diff --git a/gtk/meson.build b/gtk/meson.build index 3ebb1b5867..558232b9e7 100644 --- a/gtk/meson.build +++ b/gtk/meson.build @@ -314,6 +314,7 @@ gtk_public_sources = files([ 'gtkrendericon.c', 'gtkrendernodepaintable.c', 'gtkrevealer.c', + 'gtkroot.c', 'gtkroundedbox.c', 'gtkscale.c', 'gtkscalebutton.c', @@ -551,6 +552,7 @@ gtk_public_headers = files([ 'gtkrecentmanager.h', 'gtkrender.h', 'gtkrevealer.h', + 'gtkroot.h', 'gtkscale.h', 'gtkscalebutton.h', 'gtkscrollable.h',