@@ -29,6 +29,9 @@ def __init__(self):
2929 self .set_placeholder_text (placeholder_text )
3030 self .set_can_default (True )
3131
32+ self .set_icon_from_icon_name (Gtk .EntryIconPosition .SECONDARY , "cinnamon-screensaver-view-reveal" )
33+ trackers .con_tracker_get ().connect (self , "icon-press" , self .on_icon_pressed )
34+
3235 self .placeholder_text = placeholder_text
3336 self .current_icon_name = None
3437 self .current_flag_id = 0
@@ -174,6 +177,16 @@ def on_config_changed(self, controller):
174177 def on_icon_pressed (self , entry , icon_pos , event ):
175178 if icon_pos == Gtk .EntryIconPosition .PRIMARY :
176179 self .keyboard_controller .next_group ()
180+ elif icon_pos == Gtk .EntryIconPosition .SECONDARY :
181+ if self .get_input_purpose () == Gtk .InputPurpose .FREE_FORM :
182+ self .set_visibility (False )
183+ self .set_input_purpose (Gtk .InputPurpose .PASSWORD )
184+ self .set_icon_from_icon_name (Gtk .EntryIconPosition .SECONDARY , "cinnamon-screensaver-view-reveal" )
185+ else :
186+ self .set_visibility (True )
187+ self .set_input_purpose (Gtk .InputPurpose .FREE_FORM )
188+ self .set_icon_from_icon_name (Gtk .EntryIconPosition .SECONDARY , "cinnamon-screensaver-view-conceal" )
189+ self .queue_draw ()
177190
178191 def update_layout_icon (self ):
179192 """
@@ -222,10 +235,6 @@ def set_lockscreen_keyboard_layout(self):
222235 self .update_saved_group (new_group )
223236 self .update_layout_icon ()
224237
225- trackers .con_tracker_get ().connect (self ,
226- "icon-press" ,
227- self .on_icon_pressed )
228-
229238 trackers .con_tracker_get ().connect (self ,
230239 "draw" ,
231240 self .on_draw )
0 commit comments