[gtk/wip/matthiasc/focus3: 3/32] window: Implement the root focus api



commit 784909f2929c30a721f0d2794325b59c90a83a5e
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Mar 2 08:46:21 2019 -0500

    window: Implement the root focus api
    
    This just uses the existing get/set_focus functions.
    We keep them public for now.

 gtk/gtkwindow.c | 9 +++++++++
 1 file changed, 9 insertions(+)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 10e80d195d..3af2dea877 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -1118,6 +1118,7 @@ gtk_window_class_init (GtkWindowClass *klass)
                            GTK_PARAM_READWRITE|G_PARAM_STATIC_STRINGS|G_PARAM_EXPLICIT_NOTIFY);
 
   g_object_class_install_properties (gobject_class, LAST_ARG, window_props);
+  gtk_root_install_properties (gobject_class, LAST_ARG);
 
   /**
    * GtkWindow:set-focus:
@@ -2095,6 +2096,9 @@ gtk_window_set_property (GObject      *object,
     case PROP_FOCUS_VISIBLE:
       gtk_window_set_focus_visible (window, g_value_get_boolean (value));
       break;
+    case LAST_ARG + GTK_ROOT_PROP_FOCUS_WIDGET:
+      gtk_window_set_focus (window, g_value_get_object (value));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -2210,6 +2214,9 @@ gtk_window_get_property (GObject      *object,
     case PROP_IS_MAXIMIZED:
       g_value_set_boolean (value, gtk_window_is_maximized (window));
       break;
+    case LAST_ARG + GTK_ROOT_PROP_FOCUS_WIDGET:
+      g_value_set_object (value, gtk_window_get_focus (window));
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -7326,6 +7333,8 @@ gtk_window_real_set_focus (GtkWindow *window,
 {
   unset_focus_widget (window);
   set_focus_widget (window, focus);
+
+  g_object_notify (G_OBJECT (window), "focus-widget");
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]