[gnome-music/gnome-3-10] Play/pause on pressing space
- From: Vadim Rutkovsky <vrutkovsky src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-music/gnome-3-10] Play/pause on pressing space
- Date: Fri, 8 Aug 2014 17:42:04 +0000 (UTC)
commit 1cc00de9ffd7f5ea8375d5f31ac81bfc19a446e2
Author: Vadim Rutkovsky <vrutkovs redhat com>
Date: Fri Mar 7 01:21:03 2014 +0530
Play/pause on pressing space
https://bugzilla.gnome.org/show_bug.cgi?id=734490
data/PlayerToolbar.ui | 10 +++++-----
data/application.css | 14 +++++++++++++-
data/headerbar.ui.in | 10 +++++-----
gnomemusic/window.py | 42 ++++++++++++++++++++++++++++--------------
4 files changed, 51 insertions(+), 25 deletions(-)
---
diff --git a/data/PlayerToolbar.ui b/data/PlayerToolbar.ui
index 86e2495..1739d5a 100644
--- a/data/PlayerToolbar.ui
+++ b/data/PlayerToolbar.ui
@@ -60,7 +60,7 @@
<property name="width_request">42</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="receives_default">True</property>
<property name="image">previous_image</property>
<property name="always_show_image">True</property>
@@ -76,7 +76,7 @@
<property name="width_request">60</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="receives_default">True</property>
<property name="image">play_image</property>
<property name="always_show_image">True</property>
@@ -92,7 +92,7 @@
<property name="width_request">42</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="receives_default">True</property>
<property name="image">next_image</property>
<property name="always_show_image">True</property>
@@ -201,7 +201,7 @@
<child>
<object class="GtkScale" id="progress_scale">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="draw_value">False</property>
@@ -304,7 +304,7 @@
<child>
<object class="GtkMenuButton" id="menuButton">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="has_focus">False</property>
<property name="is_focus">False</property>
<property name="receives_default">True</property>
diff --git a/data/application.css b/data/application.css
index 96b56b4..d30c888 100644
--- a/data/application.css
+++ b/data/application.css
@@ -11,7 +11,19 @@
@define-color music_selection_button_dark_a #3b3b3b;
@define-color music_selection_button_dark_b #1c1c1c;
@define-color music_selection_box_dark_border #3e7b05;
-
+ binding-set UnbindSpace{
+ unbind "space";
+}
+
+GdMainListView{
+ gtk-key-bindings: UnbindSpace;
+}
+GdMainView{
+ gtk-key-bindings: UnbindSpace;
+}
+GtkTreeView{
+ gtk-key-bindings: UnbindSpace;
+}
.cover{
padding-left:24px;
}
diff --git a/data/headerbar.ui.in b/data/headerbar.ui.in
index e60fc65..44b4911 100644
--- a/data/headerbar.ui.in
+++ b/data/headerbar.ui.in
@@ -59,7 +59,7 @@
<child>
<object class="GtkToggleButton" id="search-button">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="valign">center</property>
<property name="sensitive">True</property>
<style>
@@ -81,7 +81,7 @@
<child>
<object class="GtkToggleButton" id="select-button">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="valign">center</property>
<property name="sensitive">True</property>
<style>
@@ -104,7 +104,7 @@
<object class="GtkButton" id="done-button">
<property name="visible">False</property>
<property name="no_show_all">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="label" translatable="yes">Cancel</property>
<property name="valign">center</property>
<property name="sensitive">True</property>
@@ -119,7 +119,7 @@
<child>
<object class="GtkButton" id="back-button">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="valign">center</property>
<property name="sensitive">True</property>
<style>
@@ -151,7 +151,7 @@
<child>
<object class="GtkButton" id="close-button">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
<property name="valign">center</property>
<property name="relief">none</property>
<property name="sensitive">True</property>
diff --git a/gnomemusic/window.py b/gnomemusic/window.py
index a75d0c2..1921ef4 100644
--- a/gnomemusic/window.py
+++ b/gnomemusic/window.py
@@ -34,7 +34,7 @@ from gi.repository import Gtk, Gdk, Gio, GLib, Tracker
from gettext import gettext as _
from gnomemusic.toolbar import Toolbar, ToolbarState
-from gnomemusic.player import Player, SelectionToolbar
+from gnomemusic.player import Player, SelectionToolbar, PlaybackStatus
from gnomemusic.query import Query
import gnomemusic.view as Views
@@ -139,7 +139,8 @@ class Window(Gtk.ApplicationWindow):
self._stack = Stack(
transition_type=StackTransitionType.CROSSFADE,
transition_duration=100,
- visible=True)
+ visible=True,
+ can_focus=False)
if Gtk.get_minor_version() > 8:
self.set_titlebar(self.toolbar.header_bar)
else:
@@ -188,18 +189,31 @@ class Window(Gtk.ApplicationWindow):
def _on_key_press(self, widget, event):
modifiers = Gtk.accelerator_get_default_mod_mask()
-
- if (event.keyval == Gdk.KEY_f and
- (event.state & modifiers) == Gdk.ModifierType.CONTROL_MASK):
- self.toolbar.searchbar.toggle_bar()
- elif (event.keyval == Gdk.KEY_Escape and (event.state & modifiers) == 0):
- self.toolbar.searchbar.show_bar(False)
- if self.toolbar._selectionMode:
- self.toolbar.set_selection_mode(False)
- elif (event.state & modifiers) == 0 and \
- event.keyval in range(33, 126) and \
- not self.toolbar.searchbar.get_reveal_child():
- self.toolbar.searchbar.show_bar(True)
+ event_and_modifiers = (event.state & modifiers)
+ if event_and_modifiers != 0:
+ # Open search bar on Ctrl + F
+ if (event.keyval == Gdk.KEY_f and
+ event_and_modifiers == Gdk.ModifierType.CONTROL_MASK):
+ self.toolbar.searchbar.toggle_bar()
+ else:
+ # Close search bar after Esc is pressed
+ if event.keyval == Gdk.KEY_Escape:
+ self.toolbar.searchbar.show_bar(False)
+ # Also disable selection
+ if self.toolbar._selectionMode:
+ self.toolbar.set_selection_mode(False)
+
+ # Open search bar when typing printable chars if it not opened
+ # Make sure we skip unprintable chars and don't grab space press
+ # (this is used for play/pause)
+ if not self.toolbar.searchbar.get_reveal_child() and not event.keyval == Gdk.KEY_space:
+ if (event_and_modifiers == Gdk.ModifierType.SHIFT_MASK or
+ event_and_modifiers == 0) and \
+ GLib.unichar_isprint(chr(Gdk.keyval_to_unicode(event.keyval))):
+ self.toolbar.searchbar.show_bar(True)
+ else:
+ if not self.toolbar.searchbar.get_reveal_child() and event.keyval == Gdk.KEY_space:
+ self.player.play_pause()
def _notify_mode_disconnect(self, data=None):
self._stack.disconnect(self._on_notify_model_id)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]