summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartyn Russell <martyn@lanedo.com>2014-02-11 12:29:40 +0000
committerMartyn Russell <martyn@lanedo.com>2014-02-11 12:29:40 +0000
commit2babd17d9463d770075edeeb6c7bd2502e0198c2 (patch)
tree719174f97aeb6c1c54165d703fb046d4cc53208d
parent016e2dd5d9064c72b2db29340ad029d5b66b0a7b (diff)
downloadtracker-2babd17d9463d770075edeeb6c7bd2502e0198c2.tar.gz
tracker-needle: Go to search results from entry box by pressing Down
https://bugzilla.gnome.org/show_bug.cgi?id=723097
-rw-r--r--src/tracker-needle/tracker-needle.vala19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/tracker-needle/tracker-needle.vala b/src/tracker-needle/tracker-needle.vala
index 4350769f1..35cf9541d 100644
--- a/src/tracker-needle/tracker-needle.vala
+++ b/src/tracker-needle/tracker-needle.vala
@@ -58,6 +58,7 @@ public class Tracker.Needle {
private uint limit = 500;
static bool current_find_in_filelist = true;
static bool current_find_in_icons = true;
+ private Widget current_view;
private ResultStore categories_model;
private ResultStore files_model;
@@ -304,6 +305,7 @@ public class Tracker.Needle {
search = search_list.get_child () as Entry;
search.changed.connect (search_changed);
search.activate.connect (search_activated);
+ search.key_press_event.connect (search_key_press_event);
search_history_insert (history.get ());
spinner = new Spinner ();
@@ -366,6 +368,19 @@ public class Tracker.Needle {
return false;
}
+ private bool search_key_press_event (Gtk.Widget widget, Gdk.EventKey event) {
+ if (Gdk.keyval_name (event.keyval) == "Down" ||
+ Gdk.keyval_name (event.keyval) == "KP_Down") {
+ var child = ((ScrolledWindow) current_view).get_child ();
+
+ if (child != null) {
+ child.grab_focus();
+ }
+ }
+
+ return false;
+ }
+
private void search_changed (Editable editable) {
if (last_search_id != 0) {
Source.remove (last_search_id);
@@ -459,9 +474,11 @@ public class Tracker.Needle {
// Show correct window
sw_noresults.hide ();
+ current_view = sw_noresults;
if (view_icons.active) {
sw_icons.show ();
+ current_view = sw_icons;
if (find_in_all.active) {
store = images_model;
@@ -476,6 +493,7 @@ public class Tracker.Needle {
if (view_categories.active) {
sw_categories.show ();
+ current_view = sw_categories;
store = categories_model;
} else {
sw_categories.hide ();
@@ -483,6 +501,7 @@ public class Tracker.Needle {
if (view_filelist.active) {
sw_filelist.show ();
+ current_view = sw_filelist;
if (find_in_contents.active) {
store = files_model;