4
4
gi .require_version ("Gdk" , "4.0" )
5
5
6
6
from gi .repository import Gdk , Gio , Gtk
7
- from gettext import gettext as _
8
7
import workbench
9
8
10
9
window = workbench .window
19
18
stack_picture_1 .set_file (Gio .File .new_for_uri (workbench .resolve ("image1.png" )))
20
19
stack_picture_2 .set_file (Gio .File .new_for_uri (workbench .resolve ("image2.png" )))
21
20
22
- ctrl_pressed = False
23
-
24
21
25
22
def on_key_pressed (_self , keyval , _keycode , _state ):
26
23
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" )
29
25
30
26
31
27
def on_key_released (_self , keyval , _keycode , _state ):
32
28
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" ))
43
29
ctrl_button .remove_css_class ("suggested-action" )
44
30
45
31
46
32
def 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 ():
48
39
case Gdk .BUTTON_PRIMARY :
49
- primary_button .add_css_class ("suggested-action" )
40
+ primary_button .add_css_class (css_class )
50
41
51
42
case Gdk .BUTTON_MIDDLE :
52
- middle_button .add_css_class ("suggested-action" )
43
+ middle_button .add_css_class (css_class )
53
44
54
45
case Gdk .BUTTON_SECONDARY :
55
- secondary_button .add_css_class ("suggested-action" )
46
+ secondary_button .add_css_class (css_class )
56
47
57
48
58
49
def on_released (_self , _n_press , _x , _y ):
59
- match gesture_click .get_current_button ():
50
+ match _self .get_current_button ():
60
51
case Gdk .BUTTON_PRIMARY :
61
52
primary_button .remove_css_class ("suggested-action" )
53
+ primary_button .remove_css_class ("destructive-action" )
62
54
63
55
case Gdk .BUTTON_MIDDLE :
64
56
middle_button .remove_css_class ("suggested-action" )
57
+ middle_button .remove_css_class ("destructive-action" )
65
58
66
59
case Gdk .BUTTON_SECONDARY :
67
60
secondary_button .remove_css_class ("suggested-action" )
61
+ secondary_button .remove_css_class ("destructive-action" )
68
62
69
63
70
64
def on_swipe (_self , vel_x , _vel_y ):
@@ -80,8 +74,6 @@ def on_swipe(_self, vel_x, _vel_y):
80
74
key_controller .connect ("key-pressed" , on_key_pressed )
81
75
key_controller .connect ("key-released" , on_key_released )
82
76
83
- ctrl_button .connect ("clicked" , on_clicked )
84
-
85
77
# Detect pointer button press and release events
86
78
gesture_click = Gtk .GestureClick (button = 0 )
87
79
window .add_controller (gesture_click )
0 commit comments