summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-02-20 17:02:15 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-02-20 17:02:15 +0000
commitb9a41a903b6997f0e57d717cea5e11b1c21bafb1 (patch)
tree48e3001d70e52c15ac4c3631d0f2c046a9955148
parentef89ef9051e5ffc33254d3f0e34bc02fe8796107 (diff)
parentb741d36cedbf57f02879aac9f0ea57f16fb2b6f2 (diff)
downloadgtk+-b9a41a903b6997f0e57d717cea5e11b1c21bafb1.tar.gz
Merge branch 'wip/carlosg/fix-search-entry' into 'master'
Fix search bars See merge request GNOME/gtk!593
-rw-r--r--gtk/gtkeventcontrollerkey.c10
-rw-r--r--gtk/gtksearchbar.c3
-rw-r--r--gtk/gtksearchentry.c2
-rw-r--r--gtk/gtkwidget.c14
-rw-r--r--gtk/gtkwidgetprivate.h6
-rw-r--r--gtk/inspector/resource-list.c2
6 files changed, 23 insertions, 14 deletions
diff --git a/gtk/gtkeventcontrollerkey.c b/gtk/gtkeventcontrollerkey.c
index 91254f8bbc..f1b28d999b 100644
--- a/gtk/gtkeventcontrollerkey.c
+++ b/gtk/gtkeventcontrollerkey.c
@@ -35,6 +35,7 @@
#include "gtkeventcontrollerprivate.h"
#include "gtkeventcontrollerkey.h"
#include "gtkbindings.h"
+#include "gtkenums.h"
#include <gdk/gdk.h>
@@ -342,9 +343,14 @@ gtk_event_controller_key_forward (GtkEventControllerKey *controller,
if (!gtk_widget_get_realized (widget))
gtk_widget_realize (widget);
- if (_gtk_widget_captured_event (widget, controller->current_event))
+ if (gtk_widget_run_controllers (widget, controller->current_event,
+ GTK_PHASE_CAPTURE))
return TRUE;
- if (gtk_widget_event (widget, controller->current_event))
+ if (gtk_widget_run_controllers (widget, controller->current_event,
+ GTK_PHASE_TARGET))
+ return TRUE;
+ if (gtk_widget_run_controllers (widget, controller->current_event,
+ GTK_PHASE_BUBBLE))
return TRUE;
return FALSE;
diff --git a/gtk/gtksearchbar.c b/gtk/gtksearchbar.c
index 0b3f916344..7c0222ef60 100644
--- a/gtk/gtksearchbar.c
+++ b/gtk/gtksearchbar.c
@@ -643,6 +643,9 @@ capture_widget_key_handled (GtkEventControllerKey *controller,
GtkSearchBarPrivate *priv = gtk_search_bar_get_instance_private (bar);
gboolean handled;
+ if (!gtk_widget_get_mapped (GTK_WIDGET (bar)))
+ return GDK_EVENT_PROPAGATE;
+
if (priv->reveal_child)
return GDK_EVENT_PROPAGATE;
diff --git a/gtk/gtksearchentry.c b/gtk/gtksearchentry.c
index e9c56c4e04..6f93dd6b93 100644
--- a/gtk/gtksearchentry.c
+++ b/gtk/gtksearchentry.c
@@ -622,7 +622,7 @@ capture_widget_key_handled (GtkEventControllerKey *controller,
priv->content_changed = FALSE;
priv->search_stopped = FALSE;
- handled = gtk_event_controller_key_forward (controller, entry);
+ handled = gtk_event_controller_key_forward (controller, priv->entry);
return handled && priv->content_changed && !priv->search_stopped ? GDK_EVENT_STOP : GDK_EVENT_PROPAGATE;
}
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index ab2f219551..d4eac90902 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -5076,10 +5076,10 @@ _gtk_widget_set_captured_event_handler (GtkWidget *widget,
g_object_set_data (G_OBJECT (widget), I_("captured-event-handler"), callback);
}
-static gboolean
-_gtk_widget_run_controllers (GtkWidget *widget,
- const GdkEvent *event,
- GtkPropagationPhase phase)
+gboolean
+gtk_widget_run_controllers (GtkWidget *widget,
+ const GdkEvent *event,
+ GtkPropagationPhase phase)
{
GtkWidgetPrivate *priv = gtk_widget_get_instance_private (widget);
GtkEventController *controller;
@@ -5151,7 +5151,7 @@ _gtk_widget_captured_event (GtkWidget *widget,
return FALSE;
}
- return_val = _gtk_widget_run_controllers (widget, event_copy, GTK_PHASE_CAPTURE);
+ return_val = gtk_widget_run_controllers (widget, event_copy, GTK_PHASE_CAPTURE);
handler = g_object_get_data (G_OBJECT (widget), I_("captured-event-handler"));
if (!handler)
@@ -5258,10 +5258,10 @@ gtk_widget_event_internal (GtkWidget *widget,
}
if (widget == gtk_get_event_target (event_copy))
- return_val |= _gtk_widget_run_controllers (widget, event_copy, GTK_PHASE_TARGET);
+ return_val |= gtk_widget_run_controllers (widget, event_copy, GTK_PHASE_TARGET);
if (return_val == FALSE)
- return_val |= _gtk_widget_run_controllers (widget, event_copy, GTK_PHASE_BUBBLE);
+ return_val |= gtk_widget_run_controllers (widget, event_copy, GTK_PHASE_BUBBLE);
g_object_unref (event_copy);
if (return_val == FALSE &&
diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h
index a25b70bcc4..b1afcb9f5b 100644
--- a/gtk/gtkwidgetprivate.h
+++ b/gtk/gtkwidgetprivate.h
@@ -338,9 +338,9 @@ void gtk_widget_cancel_event_sequence (GtkWidget
GdkEventSequence *sequence,
GtkEventSequenceState state);
-
-
-
+gboolean gtk_widget_run_controllers (GtkWidget *widget,
+ const GdkEvent *event,
+ GtkPropagationPhase phase);
/* inline getters */
diff --git a/gtk/inspector/resource-list.c b/gtk/inspector/resource-list.c
index b1d99223fd..3dd38a8d52 100644
--- a/gtk/inspector/resource-list.c
+++ b/gtk/inspector/resource-list.c
@@ -508,7 +508,7 @@ on_search_changed (GtkSearchEntry *entry,
gint length;
gboolean backwards;
- length = strlen (gtk_entry_get_text (GTK_ENTRY (entry)));
+ length = strlen (gtk_editable_get_text (GTK_EDITABLE (entry)));
backwards = length < sl->priv->search_length;
sl->priv->search_length = length;