Small patches in the end, but it took me ages to find out that I need the change from the PATCH 1/2 to make the PATCH 2/2 work.
I'm gonna make "Shift+Click" work for multiple selection next week.
Vratislav Podzimek (2): DiskOverview needs to grab focus if clicked Select all disks when Ctrl+A is pressed (#864707)
pyanaconda/ui/gui/spokes/storage.glade | 2 ++ pyanaconda/ui/gui/spokes/storage.py | 13 +++++++++++-- widgets/src/DiskOverview.c | 1 + 3 files changed, 14 insertions(+), 2 deletions(-)
Otherwise it cannot react on key presses/releases and so its parent widget etc. Anybody expected Gtk does that by default if widget has 'can_focus' set to True?
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com --- widgets/src/DiskOverview.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/widgets/src/DiskOverview.c b/widgets/src/DiskOverview.c index e3c39f4..b5e22c8 100644 --- a/widgets/src/DiskOverview.c +++ b/widgets/src/DiskOverview.c @@ -250,6 +250,7 @@ gboolean anaconda_disk_overview_clicked(AnacondaDiskOverview *widget, GdkEvent * /* This handler runs for mouse presses and key releases. For key releases, it only * runs for activate-type keys (enter, space, etc.). */ + gtk_widget_grab_focus(GTK_WIDGET(widget)); if (event->type != GDK_BUTTON_PRESS && event->type != GDK_KEY_RELEASE) return FALSE; else if (event->type == GDK_KEY_RELEASE &&
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com --- pyanaconda/ui/gui/spokes/storage.glade | 2 ++ pyanaconda/ui/gui/spokes/storage.py | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/storage.glade b/pyanaconda/ui/gui/spokes/storage.glade index 0d042c3..832a11a 100644 --- a/pyanaconda/ui/gui/spokes/storage.glade +++ b/pyanaconda/ui/gui/spokes/storage.glade @@ -868,10 +868,12 @@ <object class="GtkBox" id="local_disks_box"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="events">GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property> <property name="margin_left">6</property> <property name="margin_right">6</property> <property name="hexpand">True</property> <property name="spacing">30</property> + <signal name="key-release-event" handler="on_disks_key_released" swapped="no"/> <child> <placeholder/> </child> diff --git a/pyanaconda/ui/gui/spokes/storage.py b/pyanaconda/ui/gui/spokes/storage.py index 17634d7..92ce296 100644 --- a/pyanaconda/ui/gui/spokes/storage.py +++ b/pyanaconda/ui/gui/spokes/storage.py @@ -38,8 +38,9 @@
"""
-from gi.repository import Gdk, GLib, Gtk -from gi.repository import AnacondaWidgets +# pylint: disable-msg=E0611 +from gi.repository import Gdk, GLib, Gtk, AnacondaWidgets + from pyanaconda.ui.communication import hubQ from pyanaconda.ui.lib.disks import getDisks, isLocalDisk, size_str from pyanaconda.ui.gui import GUIObject @@ -857,3 +858,11 @@ class StorageSpoke(NormalSpoke, StorageChecker): rc = dialog.run()
dialog.window.destroy() + + def on_disks_key_released(self, box, event): + # if Ctrl-A was pressed, select all disks + if bool(event.state & Gdk.ModifierType.CONTROL_MASK) and \ + (event.keyval in (Gdk.KEY_a, Gdk.KEY_A)): + for overview in box.get_children(): + overview.set_chosen(True) +
On Fri, 2013-04-19 at 13:30 +0200, Vratislav Podzimek wrote:
Signed-off-by: Vratislav Podzimek vpodzime@redhat.com
pyanaconda/ui/gui/spokes/storage.glade | 2 ++ pyanaconda/ui/gui/spokes/storage.py | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/storage.glade b/pyanaconda/ui/gui/spokes/storage.glade index 0d042c3..832a11a 100644 --- a/pyanaconda/ui/gui/spokes/storage.glade +++ b/pyanaconda/ui/gui/spokes/storage.glade @@ -868,10 +868,12 @@ <object class="GtkBox" id="local_disks_box"> <property name="visible">True</property> <property name="can_focus">False</property>
<property name="events">GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property> <property name="margin_left">6</property> <property name="margin_right">6</property> <property name="hexpand">True</property> <property name="spacing">30</property>
<signal name="key-release-event" handler="on_disks_key_released" swapped="no"/> <child> <placeholder/> </child>
diff --git a/pyanaconda/ui/gui/spokes/storage.py b/pyanaconda/ui/gui/spokes/storage.py index 17634d7..92ce296 100644 --- a/pyanaconda/ui/gui/spokes/storage.py +++ b/pyanaconda/ui/gui/spokes/storage.py @@ -38,8 +38,9 @@
"""
-from gi.repository import Gdk, GLib, Gtk -from gi.repository import AnacondaWidgets +# pylint: disable-msg=E0611 +from gi.repository import Gdk, GLib, Gtk, AnacondaWidgets
from pyanaconda.ui.communication import hubQ from pyanaconda.ui.lib.disks import getDisks, isLocalDisk, size_str from pyanaconda.ui.gui import GUIObject @@ -857,3 +858,11 @@ class StorageSpoke(NormalSpoke, StorageChecker): rc = dialog.run()
dialog.window.destroy()
- def on_disks_key_released(self, box, event):
# if Ctrl-A was pressed, select all disks
if bool(event.state & Gdk.ModifierType.CONTROL_MASK) and \
(event.keyval in (Gdk.KEY_a, Gdk.KEY_A)):
for overview in box.get_children():
overview.set_chosen(True)
This needs to call 'self._update_disk_list()'. Fixed locally.
anaconda-patches@lists.fedorahosted.org