Merge lp:~djaler1/audience/fix-1235489 into lp:~audience-members/audience/trunk

Proposed by Kirill Romanov
Status: Merged
Approved by: Leonardo Lemos
Approved revision: 596
Merged at revision: 598
Proposed branch: lp:~djaler1/audience/fix-1235489
Merge into: lp:~audience-members/audience/trunk
Diff against target: 91 lines (+36/-25)
1 file modified
src/Window.vala (+36/-25)
To merge this branch: bzr merge lp:~djaler1/audience/fix-1235489
Reviewer Review Type Date Requested Status
Audience Members Pending
Review via email: mp+300268@code.launchpad.net

Commit message

Fix Ctrl+Q support for non-Latin keyboard layouts

Description of the change

Fix bug#1235489

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/Window.vala'
--- src/Window.vala 2016-06-12 13:04:20 +0000
+++ src/Window.vala 2016-07-17 08:57:45 +0000
@@ -95,22 +95,49 @@
95 });95 });
96 }96 }
9797
98 /** Returns true if the code parameter matches the keycode of the keyval parameter for
99 * any keyboard group or level (in order to allow for non-QWERTY keyboards) **/
100 protected bool match_keycode (int keyval, uint code) {
101 Gdk.KeymapKey [] keys;
102 Gdk.Keymap keymap = Gdk.Keymap.get_default ();
103 if (keymap.get_entries_for_keyval (keyval, out keys)) {
104 foreach (var key in keys) {
105 if (code == key.keycode)
106 return true;
107 }
108 }
109
110 return false;
111 }
112
98 public override bool key_press_event (Gdk.EventKey e) {113 public override bool key_press_event (Gdk.EventKey e) {
99 switch (e.keyval) {114 uint keycode = e.hardware_keycode;
100 case Gdk.Key.o:115 if ((e.state & Gdk.ModifierType.CONTROL_MASK) != 0) {
116 if (match_keycode (Gdk.Key.o, keycode)) {
101 run_open_file ();117 run_open_file ();
102 return true;118 return true;
103 case Gdk.Key.q:119 } else if (match_keycode (Gdk.Key.q, keycode)) {
104 destroy ();120 destroy ();
105 return true;121 return true;
122 }
106 }123 }
107124
108 if (main_stack.get_visible_child () == player_page) {125 if (main_stack.get_visible_child () == player_page) {
126 if (match_keycode (Gdk.Key.p, keycode) || match_keycode (Gdk.Key.space, keycode)) {
127 player_page.playing = !player_page.playing;
128 } else if (match_keycode (Gdk.Key.a, keycode)) {
129 player_page.next_audio ();
130 } else if (match_keycode (Gdk.Key.s, keycode)) {
131 player_page.next_text ();
132 } else if (match_keycode (Gdk.Key.f, keycode)) {
133 if (player_page.fullscreened) {
134 unfullscreen ();
135 } else {
136 fullscreen ();
137 }
138 }
139
109 switch (e.keyval) {140 switch (e.keyval) {
110 case Gdk.Key.p:
111 case Gdk.Key.space:
112 player_page.playing = !player_page.playing;
113 break;
114 case Gdk.Key.Escape:141 case Gdk.Key.Escape:
115 if (player_page.fullscreened) {142 if (player_page.fullscreened) {
116 unfullscreen ();143 unfullscreen ();
@@ -163,28 +190,12 @@
163 player_page.seek_jump_seconds (600); // 10 mins190 player_page.seek_jump_seconds (600); // 10 mins
164 player_page.reveal_control ();191 player_page.reveal_control ();
165 break;192 break;
166 case Gdk.Key.a:
167 player_page.next_audio ();
168 break;
169 case Gdk.Key.s:
170 player_page.next_text ();
171 break;
172 case Gdk.Key.f:
173 if (player_page.fullscreened) {
174 unfullscreen ();
175 } else {
176 fullscreen ();
177 }
178
179 break;
180 default:193 default:
181 break;194 break;
182 }195 }
183 } else {196 } else {
184 switch (e.keyval) {197 if (match_keycode (Gdk.Key.p, keycode) || match_keycode (Gdk.Key.space, keycode)) {
185 case Gdk.Key.p:198 resume_last_videos ();
186 case Gdk.Key.space:
187 resume_last_videos ();
188 return true;199 return true;
189 }200 }
190 }201 }

Subscribers

People subscribed via source and target branches