~catfish-search/catfish-search/trunk

« back to all changes in this revision

Viewing changes to catfish_lib/Window.py

  • Committer: Sean Davis
  • Date: 2016-01-24 17:24:05 UTC
  • Revision ID: smd.seandavis@gmail.com-20160124172405-gdjbew1rctxebbwu
Fix issues with multiple selection (LP: #1461072, #1508918)

Show diffs side-by-side

added added

removed removed

Lines of Context:
208
208
            self.setup_toolbar(chooser, search, button)
209
209
 
210
210
        search.grab_focus()
 
211
        self.keys_pressed = []
211
212
 
212
213
    def setup_headerbar(self, chooser, search, button):
213
214
        headerbar = Gtk.HeaderBar.new()
262
263
        self.window_is_fullscreen = bool(event.new_window_state &
263
264
                                         Gdk.WindowState.FULLSCREEN)
264
265
 
 
266
    def get_keys_from_event(self, event):
 
267
        keys = []
 
268
        keys.append(Gdk.keyval_name(event.keyval))
 
269
        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
 
270
            keys.append("Control")
 
271
        if event.get_state() & Gdk.ModifierType.SHIFT_MASK:
 
272
            keys.append("Shift")
 
273
        if event.get_state() & Gdk.ModifierType.SUPER_MASK:
 
274
            keys.append("Super")
 
275
        if event.get_state() & Gdk.ModifierType.MOD1_MASK:
 
276
            keys.append("Alt")
 
277
        return keys
 
278
 
 
279
    def add_keys(self, keys):
 
280
        ignore = ["Escape"]
 
281
        for key in keys:
 
282
            if key not in self.keys_pressed and key not in ignore:
 
283
                self.keys_pressed.append(key)
 
284
 
 
285
    def remove_keys(self, keys):
 
286
        for key in keys:
 
287
            if key in self.keys_pressed:
 
288
                self.keys_pressed.remove(key)
 
289
 
265
290
    def on_catfish_window_key_press_event(self, widget, event):
266
291
        """Handle keypresses for the Catfish window."""
267
 
        key_name = Gdk.keyval_name(event.keyval)
268
 
        if key_name == "Escape":
 
292
        keys = self.get_keys_from_event(event)
 
293
        self.add_keys(keys)
 
294
 
 
295
        if "Escape" in keys:
269
296
            self.search_engine.stop()
270
297
            return True
271
 
        if event.get_state() & Gdk.ModifierType.CONTROL_MASK:
272
 
            if key_name == 'q' or key_name == 'Q':
273
 
                self.destroy()
274
 
        if key_name == 'F9':
 
298
        if "Control" in keys and ("q" in keys or "Q" in keys):
 
299
            self.destroy()
 
300
        if 'F9' in keys:
275
301
            self.on_sidebar_toggle_toggled(widget)
276
302
            return True
277
 
        if key_name == 'F11':
 
303
        if 'F11' in keys:
278
304
            if self.window_is_fullscreen:
279
305
                self.unfullscreen()
280
306
            else:
281
307
                self.fullscreen()
282
308
            return True
283
309
        return False
 
310
 
 
311
    def on_catfish_window_key_release_event(self, widget, event):
 
312
        """Handle key releases for the Catfish window."""
 
313
        keys = self.get_keys_from_event(event)
 
314
        self.remove_keys(keys)
 
315
        return False