@@ -31,6 +31,9 @@ public class Header : Gtk.EventBox {
3131 private static GLib . Settings show_weeks;
3232 private static Gtk . CssProvider style_provider;
3333
34+ private Gtk . GestureMultiPress click_gesture;
35+ private Gtk . GestureLongPress long_press_gesture;
36+
3437 static construct {
3538 style_provider = new Gtk .CssProvider ();
3639 style_provider. load_from_resource (" /io/elementary/calendar/Header.css" );
@@ -43,8 +46,6 @@ public class Header : Gtk.EventBox {
4346 }
4447
4548 construct {
46- events |= Gdk . EventMask . BUTTON_PRESS_MASK ;
47-
4849 header_grid = new Gtk .Grid ();
4950 header_grid. insert_column (7 );
5051 header_grid. insert_row (1 );
@@ -85,12 +86,32 @@ public class Header : Gtk.EventBox {
8586 attach_widget = this
8687 };
8788
88- button_press_event. connect ((event) = > {
89- if (event. type == Gdk . EventType . BUTTON_PRESS && event. button == Gdk . BUTTON_SECONDARY ) {
89+ click_gesture = new Gtk .GestureMultiPress (this ) {
90+ button = 0
91+ };
92+ click_gesture. pressed. connect ((n_press, x, y) = > {
93+ var sequence = click_gesture. get_current_sequence ();
94+ var event = click_gesture. get_last_event (sequence);
95+
96+ if (event. triggers_context_menu ()) {
9097 gtk_menu. popup_at_pointer (event);
98+
99+ click_gesture. set_state (CLAIMED );
100+ click_gesture. reset ();
91101 }
102+ });
103+
104+ long_press_gesture = new Gtk .GestureLongPress (this ) {
105+ touch_only = true
106+ };
107+ long_press_gesture. pressed. connect ((x, y) = > {
108+ var sequence = long_press_gesture. get_current_sequence ();
109+ var event = long_press_gesture. get_last_event (sequence);
110+
111+ gtk_menu. popup_at_pointer (event);
92112
93- return false ;
113+ long_press_gesture. set_state (CLAIMED );
114+ long_press_gesture. reset ();
94115 });
95116 }
96117
0 commit comments