@@ -37,6 +37,7 @@ public class Maya.View.AgendaEventRow : Gtk.ListBoxRow {
3737 public Gtk . Revealer revealer { public get ; private set ; }
3838
3939 private Gtk . GestureMultiPress click_gesture;
40+ private Gtk . GestureLongPress long_press_gesture;
4041
4142 private Gtk . Image event_image;
4243 private Gtk . Label name_label;
@@ -258,21 +259,43 @@ public class Maya.View.AgendaEventRow : Gtk.ListBoxRow {
258259 });
259260
260261 click_gesture = new Gtk .GestureMultiPress (this ) {
261- button = Gdk . BUTTON_SECONDARY ,
262- propagation_phase = BUBBLE
262+ button = 0
263263 };
264- click_gesture. released. connect (on_button_press);
264+ click_gesture. pressed. connect ((n_press, x, y) = > {
265+ var sequence = click_gesture. get_current_sequence ();
266+ var event = click_gesture. get_last_event (sequence);
267+
268+ if (event. triggers_context_menu ()) {
269+ var menu = new Maya .EventMenu (calevent);
270+ menu. attach_to_widget (this , null );
271+
272+ menu. popup_at_pointer (event);
273+
274+ click_gesture. set_state (CLAIMED );
275+ click_gesture. reset ();
276+ }
277+ });
278+
279+ long_press_gesture = new Gtk .GestureLongPress (this ) {
280+ touch_only = true
281+ };
282+ long_press_gesture. pressed. connect ((x, y) = > {
283+ var sequence = long_press_gesture. get_current_sequence ();
284+ var event = long_press_gesture. get_last_event (sequence);
285+
286+ var menu = new Maya .EventMenu (calevent);
287+ menu. attach_to_widget (this , null );
288+
289+ menu. popup_at_pointer (event);
290+
291+ long_press_gesture. set_state (CLAIMED );
292+ long_press_gesture. reset ();
293+ });
265294
266295 // Fill in the information
267296 update (calevent);
268297 }
269298
270- private void on_button_press (int n_press , double x , double y ) {
271- var menu = new Maya .EventMenu (calevent);
272- menu. attach_to_widget (this , null );
273- menu. popup_at_pointer ();
274- }
275-
276299 /**
277300 * Updates the event to match the given event.
278301 */
0 commit comments