From 257e1f3096b3a1e896f0fa7de5149c7d84119164 Mon Sep 17 00:00:00 2001 From: Volker Sobek Date: Mon, 3 Mar 2014 18:14:51 +0100 Subject: [PATCH] calendar: Grab key focus when user changes day When the user changes the active day by mouse click or keyboard focus plus key press on a day in the grid, always move the keyboard focus to the newly activated day. This basically restores functionality that was introduced in commit 31478e9fb441 but got lost again in the re-factoring in commit cc4659f5c697. https://bugzilla.gnome.org/show_bug.cgi?id=725606 --- js/ui/calendar.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/js/ui/calendar.js b/js/ui/calendar.js index 0a5013891..1058e58db 100644 --- a/js/ui/calendar.js +++ b/js/ui/calendar.js @@ -403,6 +403,8 @@ const Calendar = new Lang.Class({ // Start off with the current date this._selectedDate = new Date(); + this._shouldDateGrabFocus = false; + this.actor = new St.Table({ homogeneous: false, style_class: 'calendar', reactive: true }); @@ -608,7 +610,9 @@ const Calendar = new Lang.Class({ button._date = new Date(iter); button.connect('clicked', Lang.bind(this, function() { + this._shouldDateGrabFocus = true; this.setDate(button._date); + this._shouldDateGrabFocus = false; })); let hasEvents = this._eventSource.hasEvents(iter); @@ -674,8 +678,11 @@ const Calendar = new Lang.Class({ this._rebuildCalendar(); this._buttons.forEach(Lang.bind(this, function(button) { - if (_sameDay(button._date, this._selectedDate)) + if (_sameDay(button._date, this._selectedDate)) { button.add_style_pseudo_class('active'); + if (this._shouldDateGrabFocus) + button.grab_key_focus(); + } else button.remove_style_pseudo_class('active'); }));