[gtk+] Add gtk_widget_set_focus_child
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Add gtk_widget_set_focus_child
- Date: Sat, 7 Jan 2017 16:21:50 +0000 (UTC)
commit 5f98597a0c3878801c12e630755be327263064e2
Author: Timm Bäder <mail baedert org>
Date: Fri Jan 6 17:06:51 2017 +0100
Add gtk_widget_set_focus_child
With a very useful implementation, but at least now we don't get runtime
warnings.
gtk/gtkwidget.c | 22 ++++++++++++++++++++--
gtk/gtkwidget.h | 3 +++
gtk/gtkwindow.c | 2 +-
3 files changed, 24 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 8bebdfb..e61ea43 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -7231,7 +7231,7 @@ gtk_widget_real_grab_focus (GtkWidget *focus_widget)
while (widget->priv->parent)
{
widget = widget->priv->parent;
- gtk_container_set_focus_child (GTK_CONTAINER (widget), NULL);
+ gtk_widget_set_focus_child (widget, NULL);
if (widget == common_ancestor)
break;
}
@@ -7255,7 +7255,7 @@ gtk_widget_real_grab_focus (GtkWidget *focus_widget)
widget = focus_widget;
while (widget->priv->parent)
{
- gtk_container_set_focus_child (GTK_CONTAINER (widget->priv->parent), widget);
+ gtk_widget_set_focus_child (widget->priv->parent, widget);
widget = widget->priv->parent;
}
if (GTK_IS_WINDOW (widget))
@@ -15804,3 +15804,21 @@ gtk_widget_snapshot_child (GtkWidget *widget,
gtk_widget_snapshot (child, snapshot);
gtk_snapshot_translate_2d (snapshot, -x, -y);
}
+
+void
+gtk_widget_set_focus_child (GtkWidget *widget,
+ GtkWidget *child)
+{
+ g_return_if_fail (GTK_IS_WIDGET (widget));
+
+ if (child != NULL)
+ {
+ g_return_if_fail (GTK_IS_WIDGET (child));
+ g_return_if_fail (gtk_widget_get_parent (child) == widget);
+ }
+
+ if (GTK_IS_CONTAINER (widget))
+ gtk_container_set_focus_child (GTK_CONTAINER (widget), child);
+
+ /* TODO: ??? */
+}
diff --git a/gtk/gtkwidget.h b/gtk/gtkwidget.h
index 33db17d..319c7d7 100644
--- a/gtk/gtkwidget.h
+++ b/gtk/gtkwidget.h
@@ -1258,6 +1258,9 @@ GDK_AVAILABLE_IN_3_90
GtkWidget * gtk_widget_get_next_sibling (GtkWidget *widget);
GDK_AVAILABLE_IN_3_90
GtkWidget * gtk_widget_get_prev_sibling (GtkWidget *widget);
+GDK_AVAILABLE_IN_3_90
+void gtk_widget_set_focus_child (GtkWidget *widget,
+ GtkWidget *child);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkWidget, g_object_unref)
G_DEFINE_AUTOPTR_CLEANUP_FUNC(GtkRequisition, gtk_requisition_free)
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 1d03a66..dbdeb18 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -2539,7 +2539,7 @@ gtk_window_set_focus (GtkWindow *window,
while ((parent = _gtk_widget_get_parent (widget)))
{
widget = parent;
- gtk_container_set_focus_child (GTK_CONTAINER (widget), NULL);
+ gtk_widget_set_focus_child (widget, NULL);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]