Compare commits

...

1 Commits

Author SHA1 Message Date
Matthias Clasen
6e735f709b root: Add focus and default widgets
These are part of what GtkRoot will manage.
Use the GtkRoot api for them in the inspector.
2019-02-21 23:53:07 -05:00
5 changed files with 61 additions and 3 deletions

View File

@@ -58,12 +58,26 @@ gtk_root_default_get_surface_transform (GtkRoot *self,
*y = 0; *y = 0;
} }
static GtkWidget *
gtk_root_default_get_focus (GtkRoot *self)
{
return NULL;
}
static GtkWidget *
gtk_root_default_get_default (GtkRoot *self)
{
return NULL;
}
static void static void
gtk_root_default_init (GtkRootInterface *iface) gtk_root_default_init (GtkRootInterface *iface)
{ {
iface->get_display = gtk_root_default_get_display; iface->get_display = gtk_root_default_get_display;
iface->get_renderer = gtk_root_default_get_renderer; iface->get_renderer = gtk_root_default_get_renderer;
iface->get_surface_transform = gtk_root_default_get_surface_transform; iface->get_surface_transform = gtk_root_default_get_surface_transform;
iface->get_focus = gtk_root_default_get_focus;
iface->get_default = gtk_root_default_get_default;
} }
GdkDisplay * GdkDisplay *
@@ -102,3 +116,19 @@ gtk_root_get_surface_transform (GtkRoot *self,
iface = GTK_ROOT_GET_IFACE (self); iface = GTK_ROOT_GET_IFACE (self);
return iface->get_surface_transform (self, x, y); return iface->get_surface_transform (self, x, y);
} }
GtkWidget *
gtk_root_get_focus (GtkRoot *self)
{
g_return_val_if_fail (GTK_IS_ROOT (self), NULL);
return GTK_ROOT_GET_IFACE (self)->get_focus (self);
}
GtkWidget *
gtk_root_get_default (GtkRoot *self)
{
g_return_val_if_fail (GTK_IS_ROOT (self), NULL);
return GTK_ROOT_GET_IFACE (self)->get_default (self);
}

View File

@@ -51,6 +51,8 @@ struct _GtkRootInterface
void (* get_surface_transform) (GtkRoot *root, void (* get_surface_transform) (GtkRoot *root,
int *x, int *x,
int *y); int *y);
GtkWidget * (* get_focus) (GtkRoot *root);
GtkWidget * (* get_default) (GtkRoot *root);
}; };

View File

@@ -11,6 +11,8 @@ GskRenderer * gtk_root_get_renderer (GtkRoot
void gtk_root_get_surface_transform (GtkRoot *self, void gtk_root_get_surface_transform (GtkRoot *self,
int *x, int *x,
int *y); int *y);
GtkWidget * gtk_root_get_focus (GtkRoot *self);
GtkWidget * gtk_root_get_default (GtkRoot *self);
G_END_DECLS G_END_DECLS
#endif /* __GTK_ROOT_PRIVATE_H__ */ #endif /* __GTK_ROOT_PRIVATE_H__ */

View File

@@ -2534,12 +2534,35 @@ gtk_window_root_get_surface_transform (GtkRoot *root,
*y = margin.top + border.top + padding.top; *y = margin.top + border.top + padding.top;
} }
static GtkWidget *
gtk_window_root_get_focus (GtkRoot *root)
{
GtkWindow *window = GTK_WINDOW (root);
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
if (priv->initial_focus)
return priv->initial_focus;
else
return priv->focus_widget;
}
static GtkWidget *
gtk_window_root_get_default (GtkRoot *root)
{
GtkWindow *window = GTK_WINDOW (root);
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
return priv->default_widget;
}
static void static void
gtk_window_root_interface_init (GtkRootInterface *iface) gtk_window_root_interface_init (GtkRootInterface *iface)
{ {
iface->get_display = gtk_window_root_get_display; iface->get_display = gtk_window_root_get_display;
iface->get_renderer = gtk_window_root_get_renderer; iface->get_renderer = gtk_window_root_get_renderer;
iface->get_surface_transform = gtk_window_root_get_surface_transform; iface->get_surface_transform = gtk_window_root_get_surface_transform;
iface->get_focus = gtk_window_root_get_focus;
iface->get_default = gtk_window_root_get_default;
} }
/** /**

View File

@@ -29,6 +29,7 @@
#include "gtkframe.h" #include "gtkframe.h"
#include "gtkbutton.h" #include "gtkbutton.h"
#include "gtkwidgetprivate.h" #include "gtkwidgetprivate.h"
#include "gtkrootprivate.h"
struct _GtkInspectorMiscInfoPrivate { struct _GtkInspectorMiscInfoPrivate {
@@ -190,7 +191,7 @@ update_default_widget (GtkInspectorMiscInfo *sl)
{ {
GtkWidget *widget; GtkWidget *widget;
widget = gtk_window_get_default_widget (GTK_WINDOW (sl->priv->object)); widget = gtk_root_get_default (GTK_ROOT (sl->priv->object));
if (widget) if (widget)
{ {
gchar *tmp; gchar *tmp;
@@ -222,7 +223,7 @@ update_focus_widget (GtkInspectorMiscInfo *sl)
{ {
GtkWidget *widget; GtkWidget *widget;
widget = gtk_window_get_focus (GTK_WINDOW (sl->priv->object)); widget = gtk_root_get_focus (GTK_ROOT (sl->priv->object));
if (widget) if (widget)
{ {
gchar *tmp; gchar *tmp;
@@ -355,7 +356,7 @@ update_info (gpointer data)
gtk_buildable_get_name (GTK_BUILDABLE (sl->priv->object))); gtk_buildable_get_name (GTK_BUILDABLE (sl->priv->object)));
} }
if (GTK_IS_WINDOW (sl->priv->object)) if (GTK_IS_ROOT (sl->priv->object))
{ {
update_default_widget (sl); update_default_widget (sl);
update_focus_widget (sl); update_focus_widget (sl);