44gi .require_version ("Gdk" , "4.0" )
55
66from gi .repository import Gdk , Gio , Gtk
7- from gettext import gettext as _
87import workbench
98
109window = workbench .window
1918stack_picture_1 .set_file (Gio .File .new_for_uri (workbench .resolve ("image1.png" )))
2019stack_picture_2 .set_file (Gio .File .new_for_uri (workbench .resolve ("image2.png" )))
2120
22- ctrl_pressed = False
23-
2421
2522def on_key_pressed (_self , keyval , _keycode , _state ):
2623 if keyval == Gdk .KEY_Control_L or keyval == Gdk .KEY_Control_R :
27- global ctrl_pressed
28- ctrl_pressed = True
24+ ctrl_button .add_css_class ("suggested-action" )
2925
3026
3127def on_key_released (_self , keyval , _keycode , _state ):
3228 if keyval == Gdk .KEY_Control_L or keyval == Gdk .KEY_Control_R :
33- global ctrl_pressed
34- ctrl_pressed = False
35-
36-
37- def on_clicked (_self ):
38- if ctrl_pressed :
39- ctrl_button .set_label (_ ("Click to Deactivate" ))
40- ctrl_button .add_css_class ("suggested-action" )
41- else :
42- ctrl_button .set_label (_ ("Ctrl + Click to Activate" ))
4329 ctrl_button .remove_css_class ("suggested-action" )
4430
4531
4632def on_pressed (_self , _n_press , _x , _y ):
47- match gesture_click .get_current_button ():
33+ if _self .get_current_event_state () & Gdk .ModifierType .CONTROL_MASK :
34+ css_class = "destructive-action"
35+ else :
36+ css_class = "suggested-action"
37+
38+ match _self .get_current_button ():
4839 case Gdk .BUTTON_PRIMARY :
49- primary_button .add_css_class ("suggested-action" )
40+ primary_button .add_css_class (css_class )
5041
5142 case Gdk .BUTTON_MIDDLE :
52- middle_button .add_css_class ("suggested-action" )
43+ middle_button .add_css_class (css_class )
5344
5445 case Gdk .BUTTON_SECONDARY :
55- secondary_button .add_css_class ("suggested-action" )
46+ secondary_button .add_css_class (css_class )
5647
5748
5849def on_released (_self , _n_press , _x , _y ):
59- match gesture_click .get_current_button ():
50+ match _self .get_current_button ():
6051 case Gdk .BUTTON_PRIMARY :
6152 primary_button .remove_css_class ("suggested-action" )
53+ primary_button .remove_css_class ("destructive-action" )
6254
6355 case Gdk .BUTTON_MIDDLE :
6456 middle_button .remove_css_class ("suggested-action" )
57+ middle_button .remove_css_class ("destructive-action" )
6558
6659 case Gdk .BUTTON_SECONDARY :
6760 secondary_button .remove_css_class ("suggested-action" )
61+ secondary_button .remove_css_class ("destructive-action" )
6862
6963
7064def on_swipe (_self , vel_x , _vel_y ):
@@ -80,8 +74,6 @@ def on_swipe(_self, vel_x, _vel_y):
8074key_controller .connect ("key-pressed" , on_key_pressed )
8175key_controller .connect ("key-released" , on_key_released )
8276
83- ctrl_button .connect ("clicked" , on_clicked )
84-
8577# Detect pointer button press and release events
8678gesture_click = Gtk .GestureClick (button = 0 )
8779window .add_controller (gesture_click )
0 commit comments