[gnome-boxes] collection-view: Show context menu on right-click
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-boxes] collection-view: Show context menu on right-click
- Date: Fri, 14 Nov 2014 17:42:29 +0000 (UTC)
commit 8d1086709a0ab6b938cc051e6c0dfd55c591279f
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date: Fri Nov 14 14:15:20 2014 +0000
collection-view: Show context menu on right-click
Show ActionsPopover when user right clicks on an item.
https://bugzilla.gnome.org/show_bug.cgi?id=738761
src/collection-view.vala | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
---
diff --git a/src/collection-view.vala b/src/collection-view.vala
index 4bad43f..a49fa01 100644
--- a/src/collection-view.vala
+++ b/src/collection-view.vala
@@ -34,6 +34,7 @@ private class Boxes.CollectionView: Gd.MainView, Boxes.UI {
private Gtk.ListStore store;
private Gtk.TreeModelFilter model_filter;
+ private Boxes.ActionsPopover context_popover;
construct {
category = new Category (_("New and Recent"), Category.Kind.NEW);
@@ -49,6 +50,11 @@ private class Boxes.CollectionView: Gd.MainView, Boxes.UI {
if (!window.selection_mode)
unselect_all (); // Reset selection on exiting selection mode
});
+
+ var icon_view = get_generic_view () as Gtk.IconView;
+ icon_view.button_release_event.connect (on_button_press_event);
+ context_popover = new Boxes.ActionsPopover (window);
+ context_popover.relative_to = icon_view;
}
private void ui_state_changed () {
@@ -360,4 +366,36 @@ private class Boxes.CollectionView: Gd.MainView, Boxes.UI {
});
machine.set_data<uint> ("activity_timeout", activity_timeout);
}
+
+ private bool on_button_press_event (Gdk.EventButton event) {
+ if (event.type != Gdk.EventType.BUTTON_RELEASE || event.button != 3)
+ return false;
+
+ var generic_view = get_generic_view () as Gd.MainViewGeneric;
+ var path = generic_view.get_path_at_pos ((int) event.x, (int) event.y);
+ if (path == null)
+ return false;
+
+ return launch_context_popover_for_path (path);
+ }
+
+ private bool launch_context_popover_for_path (Gtk.TreePath path) {
+ var item = get_item_for_path (path);
+ if (item == null)
+ return false;
+
+ var icon_view = get_generic_view () as Gtk.IconView;
+ Gdk.Rectangle rect;
+ icon_view.get_cell_rect (path, null, out rect);
+
+ context_popover.update_for_item (item);
+ var rectangle = Cairo.RectangleInt () { x = rect.x,
+ y = rect.y,
+ width = rect.width,
+ height = rect.height / 2}; // Show in the middle
+ context_popover.pointing_to = rectangle;
+ context_popover.show ();
+
+ return true;
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]