@@ -15,29 +15,17 @@ const secondary_button = workbench.builder.get_object("secondary_button");
1515stack_picture_1 . file  =  Gio . File . new_for_uri ( workbench . resolve ( "image1.png" ) ) ; 
1616stack_picture_2 . file  =  Gio . File . new_for_uri ( workbench . resolve ( "image2.png" ) ) ; 
1717
18- let  ctrl_pressed  =  false ; 
19- 
2018// Key controller to detect when the Ctrl key is pressed and released 
2119const  key_controller  =  new  Gtk . EventControllerKey ( ) ; 
2220window . add_controller ( key_controller ) ; 
2321key_controller . connect ( "key-pressed" ,  ( _self ,  keyval ,  _keycode ,  _state )  =>  { 
2422  if  ( keyval  ===  Gdk . KEY_Control_L  ||  keyval  ===  Gdk . KEY_Control_R )  { 
25-     ctrl_pressed   =   true ; 
23+     ctrl_button . add_css_class ( "suggested-action" ) ; 
2624  } 
2725} ) ; 
2826
2927key_controller . connect ( "key-released" ,  ( _self ,  keyval ,  _keycode ,  _state )  =>  { 
3028  if  ( keyval  ===  Gdk . KEY_Control_L  ||  keyval  ===  Gdk . KEY_Control_R )  { 
31-     ctrl_pressed  =  false ; 
32-   } 
33- } ) ; 
34- 
35- ctrl_button . connect ( "clicked" ,  ( )  =>  { 
36-   if  ( ctrl_pressed )  { 
37-     ctrl_button . label  =  _ ( "Click to Deactivate" ) ; 
38-     ctrl_button . add_css_class ( "suggested-action" ) ; 
39-   }  else  { 
40-     ctrl_button . label  =  _ ( "Ctrl + Click to Activate" ) ; 
4129    ctrl_button . remove_css_class ( "suggested-action" ) ; 
4230  } 
4331} ) ; 
@@ -48,33 +36,41 @@ const gesture_click = new Gtk.GestureClick({ button: 0 });
4836window . add_controller ( gesture_click ) ; 
4937
5038gesture_click . connect ( "pressed" ,  ( _self ,  _n_press ,  _x ,  _y )  =>  { 
51-   switch  ( gesture_click . get_current_button ( ) )  { 
39+   let  css_class  =  "suggested-action" ; 
40+   if  ( _self . get_current_event_state ( )  &  Gdk . ModifierType . CONTROL_MASK )  { 
41+     css_class  =  "destructive-action" ; 
42+   } 
43+ 
44+   switch  ( _self . get_current_button ( ) )  { 
5245    case  Gdk . BUTTON_PRIMARY :
53-       primary_button . add_css_class ( "suggested-action" ) ; 
46+       primary_button . add_css_class ( css_class ) ; 
5447      break ; 
5548
5649    case  Gdk . BUTTON_MIDDLE :
57-       middle_button . add_css_class ( "suggested-action" ) ; 
50+       middle_button . add_css_class ( css_class ) ; 
5851      break ; 
5952
6053    case  Gdk . BUTTON_SECONDARY :
61-       secondary_button . add_css_class ( "suggested-action" ) ; 
54+       secondary_button . add_css_class ( css_class ) ; 
6255      break ; 
6356  } 
6457} ) ; 
6558
6659gesture_click . connect ( "released" ,  ( _self ,  _n_press ,  _x ,  _y )  =>  { 
67-   switch  ( gesture_click . get_current_button ( ) )  { 
60+   switch  ( _self . get_current_button ( ) )  { 
6861    case  Gdk . BUTTON_PRIMARY :
6962      primary_button . remove_css_class ( "suggested-action" ) ; 
63+       primary_button . remove_css_class ( "destructive-action" ) ; 
7064      break ; 
7165
7266    case  Gdk . BUTTON_MIDDLE :
7367      middle_button . remove_css_class ( "suggested-action" ) ; 
68+       middle_button . remove_css_class ( "destructive-action" ) ; 
7469      break ; 
7570
7671    case  Gdk . BUTTON_SECONDARY :
7772      secondary_button . remove_css_class ( "suggested-action" ) ; 
73+       secondary_button . remove_css_class ( "destructive-action" ) ; 
7874      break ; 
7975  } 
8076} ) ; 
0 commit comments