[gnome-panel] libpanel-applet: remove move-focus-out-of-applet signal



commit 3a4eafb5b86faf1ddeb29f41ad755d6f72059689
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Fri Oct 14 03:17:27 2016 +0300

    libpanel-applet: remove move-focus-out-of-applet signal
    
    And add it back to PanelAppletFrame.
    
    https://git.gnome.org/browse/gnome-panel/commit/?id=fdc603831096422ddd771ff757cdf67f30958193
    https://git.gnome.org/browse/gnome-panel/commit/?id=e83ec60a4ea0fd0dcff76187d529d1f05df8ac99

 gnome-panel/panel-applet-frame.c |   70 ++++++++++++++++++++++++++++++++++++
 gnome-panel/panel-applet-frame.h |    3 ++
 libpanel-applet/panel-applet.c   |   73 --------------------------------------
 libpanel-applet/panel-applet.h   |    2 -
 4 files changed, 73 insertions(+), 75 deletions(-)
---
diff --git a/gnome-panel/panel-applet-frame.c b/gnome-panel/panel-applet-frame.c
index ca054ef..ce56a78 100644
--- a/gnome-panel/panel-applet-frame.c
+++ b/gnome-panel/panel-applet-frame.c
@@ -28,6 +28,7 @@
 #include <glib/gi18n.h>
 
 #include <gdk/gdk.h>
+#include <gdk/gdkkeysyms.h>
 #include <gdk/gdkx.h>
 
 #include "panel-applets-manager.h"
@@ -86,8 +87,17 @@ struct _PanelAppletFramePrivate {
        GdkRectangle     handle_rect;
 
        guint            has_handle : 1;
+
+       gboolean         moving_focus_out;
+};
+
+enum {
+       MOVE_FOCUS_OUT_OF_APPLET,
+       LAST_SIGNAL
 };
 
+static guint panel_applet_frame_signals [LAST_SIGNAL];
+
 static gboolean
 panel_applet_frame_draw (GtkWidget *widget,
                          cairo_t   *cr)
@@ -406,10 +416,54 @@ panel_applet_frame_finalize (GObject *object)
 }
 
 static void
+panel_applet_frame_move_focus_out_of_applet (PanelAppletFrame *frame,
+                                             GtkDirectionType  dir)
+{
+       GtkWidget *toplevel;
+
+       frame->priv->moving_focus_out = TRUE;
+       toplevel = gtk_widget_get_toplevel (GTK_WIDGET (frame));
+       g_return_if_fail (toplevel);
+
+       gtk_widget_child_focus (toplevel, dir);
+       frame->priv->moving_focus_out = FALSE;
+}
+
+static gboolean
+panel_applet_frame_focus (GtkWidget        *widget,
+                          GtkDirectionType  dir)
+{
+       PanelAppletFrame *frame;
+
+       g_return_val_if_fail (PANEL_IS_APPLET_FRAME (widget), FALSE);
+
+       frame = PANEL_APPLET_FRAME (widget);
+
+       if (frame->priv->moving_focus_out)
+               return FALSE;
+
+       return GTK_WIDGET_CLASS (panel_applet_frame_parent_class)->focus (widget, dir);
+}
+
+static void
+add_tab_bindings (GtkBindingSet    *binding_set,
+                  GdkModifierType   modifiers,
+                  GtkDirectionType  direction)
+{
+       gtk_binding_entry_add_signal (binding_set, GDK_KEY_Tab, modifiers,
+                                     "move_focus_out_of_applet", 1,
+                                     GTK_TYPE_DIRECTION_TYPE, direction);
+       gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Tab, modifiers,
+                                     "move_focus_out_of_applet", 1,
+                                     GTK_TYPE_DIRECTION_TYPE, direction);
+}
+
+static void
 panel_applet_frame_class_init (PanelAppletFrameClass *klass)
 {
        GObjectClass   *gobject_class = (GObjectClass *) klass;
        GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
+       GtkBindingSet *binding_set;
 
        gobject_class->finalize = panel_applet_frame_finalize;
 
@@ -419,6 +473,22 @@ panel_applet_frame_class_init (PanelAppletFrameClass *klass)
        widget_class->size_allocate        = panel_applet_frame_size_allocate;
        widget_class->button_press_event   = panel_applet_frame_button_changed;
        widget_class->button_release_event = panel_applet_frame_button_changed;
+       widget_class->focus                = panel_applet_frame_focus;
+
+       klass->move_focus_out_of_applet = panel_applet_frame_move_focus_out_of_applet;
+
+       panel_applet_frame_signals [MOVE_FOCUS_OUT_OF_APPLET] =
+                g_signal_new ("move_focus_out_of_applet",
+                              G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+                              G_STRUCT_OFFSET (PanelAppletFrameClass, move_focus_out_of_applet),
+                              NULL, NULL, g_cclosure_marshal_VOID__ENUM,
+                              G_TYPE_NONE, 1, GTK_TYPE_DIRECTION_TYPE);
+
+       binding_set = gtk_binding_set_by_class (gobject_class);
+       add_tab_bindings (binding_set, 0, GTK_DIR_TAB_FORWARD);
+       add_tab_bindings (binding_set, GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
+       add_tab_bindings (binding_set, GDK_CONTROL_MASK, GTK_DIR_TAB_FORWARD);
+       add_tab_bindings (binding_set, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
 
        g_type_class_add_private (klass, sizeof (PanelAppletFramePrivate));
 }
diff --git a/gnome-panel/panel-applet-frame.h b/gnome-panel/panel-applet-frame.h
index 8e646f2..3af0be4 100644
--- a/gnome-panel/panel-applet-frame.h
+++ b/gnome-panel/panel-applet-frame.h
@@ -61,6 +61,9 @@ struct _PanelAppletFrameClass {
 
        void     (*change_orientation)    (PanelAppletFrame    *frame,
                                           PanelOrientation     orientation);
+
+       void (*move_focus_out_of_applet) (PanelAppletFrame *frame,
+                                         GtkDirectionType  direction);
 };
 
 struct _PanelAppletFrame {
diff --git a/libpanel-applet/panel-applet.c b/libpanel-applet/panel-applet.c
index 1a6ffcb..d4ecc1e 100644
--- a/libpanel-applet/panel-applet.c
+++ b/libpanel-applet/panel-applet.c
@@ -33,7 +33,6 @@
 #include <glib/gi18n-lib.h>
 #include <cairo.h>
 #include <cairo-gobject.h>
-#include <gdk/gdkkeysyms.h>
 #include <gtk/gtk.h>
 #include <gtk/gtkx.h>
 #include <X11/Xatom.h>
@@ -94,14 +93,11 @@ struct _PanelAppletPrivate {
         int               *size_hints;
         int                size_hints_len;
 
-       gboolean           moving_focus_out;
-
        gboolean           locked_down;
 };
 
 enum {
         CHANGE_ORIENT,
-       MOVE_FOCUS_OUT_OF_APPLET,
         LAST_SIGNAL
 };
 
@@ -1217,19 +1213,6 @@ panel_applet_focus (GtkWidget        *widget,
 {
        gboolean ret;
        GtkWidget *previous_focus_child;
-       PanelApplet *applet;
-
-       g_return_val_if_fail (PANEL_IS_APPLET (widget), FALSE);
-
-       applet = PANEL_APPLET (widget);
-       if (applet->priv->moving_focus_out) {
-               /*
-                * Applet will retain focus if there is nothing else on the
-                * panel to get focus
-                */
-               applet->priv->moving_focus_out = FALSE;
-               return FALSE;
-       }
 
        previous_focus_child = gtk_container_get_focus_child (GTK_CONTAINER (widget));
        if (!previous_focus_child && !gtk_widget_has_focus (widget)) {
@@ -1260,20 +1243,6 @@ panel_applet_focus (GtkWidget        *widget,
 }
 
 static void
-panel_applet_move_focus_out_of_applet (PanelApplet      *applet,
-                                      GtkDirectionType  dir)
-{
-       GtkWidget *toplevel;
-
-       applet->priv->moving_focus_out = TRUE;
-       toplevel = gtk_widget_get_toplevel (GTK_WIDGET (applet));
-       g_return_if_fail (toplevel);
-
-       gtk_widget_child_focus (toplevel, dir);
-       applet->priv->moving_focus_out = FALSE;
-}
-
-static void
 panel_applet_get_property (GObject    *object,
                           guint       prop_id,
                           GValue     *value,
@@ -1373,19 +1342,6 @@ panel_applet_set_property (GObject      *object,
 }
 
 static void
-add_tab_bindings (GtkBindingSet   *binding_set,
-                 GdkModifierType  modifiers,
-                 GtkDirectionType direction)
-{
-       gtk_binding_entry_add_signal (binding_set, GDK_KEY_Tab, modifiers,
-                                     "move_focus_out_of_applet", 1,
-                                     GTK_TYPE_DIRECTION_TYPE, direction);
-       gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Tab, modifiers,
-                                     "move_focus_out_of_applet", 1,
-                                     GTK_TYPE_DIRECTION_TYPE, direction);
-}
-
-static void
 panel_applet_setup (PanelApplet *applet)
 {
        GValue   value = {0, };
@@ -1483,15 +1439,12 @@ panel_applet_class_init (PanelAppletClass *klass)
 {
        GObjectClass   *gobject_class = (GObjectClass *) klass;
        GtkWidgetClass *widget_class = (GtkWidgetClass *) klass;
-       GtkBindingSet *binding_set;
 
        gobject_class->get_property = panel_applet_get_property;
        gobject_class->set_property = panel_applet_set_property;
        gobject_class->constructed = panel_applet_constructed;
         gobject_class->finalize = panel_applet_finalize;
 
-       klass->move_focus_out_of_applet = panel_applet_move_focus_out_of_applet;
-
        widget_class->button_press_event = panel_applet_button_press;
        widget_class->composited_changed = panel_applet_composited_changed;
        widget_class->key_press_event = panel_applet_key_press_event;
@@ -1627,32 +1580,6 @@ panel_applet_class_init (PanelAppletClass *klass)
                              1,
                              G_TYPE_UINT);
 
-        /**
-         * PanelApplet::move-focus-out-of-applet: (skip)
-         * @applet: the #PanelApplet which emitted the signal.
-         * @direction: the move direction.
-         *
-        * Emitted when the focus is moved out of @applet. This is an
-        * implementation detail.
-         **/
-       panel_applet_signals [MOVE_FOCUS_OUT_OF_APPLET] =
-                g_signal_new ("move_focus_out_of_applet",
-                              G_TYPE_FROM_CLASS (klass),
-                              G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
-                              G_STRUCT_OFFSET (PanelAppletClass, move_focus_out_of_applet),
-                              NULL,
-                             NULL,
-                              g_cclosure_marshal_VOID__ENUM,
-                              G_TYPE_NONE,
-                             1,
-                             GTK_TYPE_DIRECTION_TYPE);
-
-       binding_set = gtk_binding_set_by_class (gobject_class);
-       add_tab_bindings (binding_set, 0, GTK_DIR_TAB_FORWARD);
-       add_tab_bindings (binding_set, GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
-       add_tab_bindings (binding_set, GDK_CONTROL_MASK, GTK_DIR_TAB_FORWARD);
-       add_tab_bindings (binding_set, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD);
-
        gtk_widget_class_set_css_name (widget_class, "panel-applet");
 }
 
diff --git a/libpanel-applet/panel-applet.h b/libpanel-applet/panel-applet.h
index 94d61cc..36fbb9f 100644
--- a/libpanel-applet/panel-applet.h
+++ b/libpanel-applet/panel-applet.h
@@ -157,8 +157,6 @@ struct _PanelAppletClass {
 
        void (*change_orient) (PanelApplet       *applet,
                               PanelAppletOrient  orient);
-       void (*move_focus_out_of_applet) (PanelApplet        *frame,
-                                         GtkDirectionType    direction);
 };
 
 GType              panel_applet_get_type             (void) G_GNUC_CONST;


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