@@ -17,27 +17,40 @@ def create(self):
17
17
self .native .connect ("focus-out-event" , self .gtk_focus_out_event )
18
18
self .native .connect ("key-press-event" , self .gtk_key_press_event )
19
19
else : # pragma: no-cover-if-gtk3
20
- pass
20
+ self .native .connect ("changed" , self .gtk_on_change )
21
+
22
+ self .focus_controller = Gtk .EventControllerFocus .new ()
23
+ self .native .add_controller (self .focus_controller )
24
+
25
+ self .focus_controller .connect ("enter" , self .gtk_focus_in_event )
26
+ self .focus_controller .connect ("leave" , self .gtk_focus_out_event )
27
+
28
+ self .key_controller = Gtk .EventControllerKey .new ()
29
+ self .native .add_controller (self .key_controller )
30
+ self .key_controller .connect ("key-pressed" , self .gtk_key_pressed )
21
31
22
32
def gtk_on_change (self , * _args ):
23
- if GTK_VERSION < (4 , 0 , 0 ): # pragma: no-cover-if-gtk4
24
- self .interface ._value_changed ()
25
- else : # pragma: no-cover-if-gtk3
26
- self .interface ._value_changed (self .interface )
33
+ self .interface ._value_changed ()
27
34
28
35
def gtk_focus_in_event (self , * _args ):
29
- if GTK_VERSION < (4 , 0 , 0 ): # pragma: no-cover-if-gtk4
30
- self .interface .on_gain_focus ()
31
- else : # pragma: no-cover-if-gtk3
32
- self .interface .on_gain_focus (self .interface )
36
+ self .interface .on_gain_focus ()
33
37
34
38
def gtk_focus_out_event (self , * _args ):
35
39
self .interface .on_lose_focus ()
36
40
37
- def gtk_key_press_event (self , _ , key_val , * _args ):
38
- key_pressed = toga_key (key_val )
39
- if key_pressed and key_pressed ["key" ] in {Key .ENTER , Key .NUMPAD_ENTER }:
40
- self .interface .on_confirm ()
41
+ if GTK_VERSION < (4 , 0 , 0 ): # pragma: no-cover-if-gtk4
42
+
43
+ def gtk_key_press_event (self , _entry , event ):
44
+ key_pressed = toga_key (event .keyval , event .state )
45
+ if key_pressed and key_pressed ["key" ] in {Key .ENTER , Key .NUMPAD_ENTER }:
46
+ self .interface .on_confirm ()
47
+
48
+ else : # pragma: no-cover-if-gtk3
49
+
50
+ def gtk_key_pressed (self , _controller , keyval , _keycode , state ):
51
+ key_pressed = toga_key (keyval , state )
52
+ if key_pressed and key_pressed ["key" ] in {Key .ENTER , Key .NUMPAD_ENTER }:
53
+ self .interface .on_confirm ()
41
54
42
55
def get_readonly (self ):
43
56
return not self .native .get_property ("editable" )
@@ -81,7 +94,16 @@ def rehint(self):
81
94
)
82
95
self .interface .intrinsic .height = height [1 ]
83
96
else : # pragma: no-cover-if-gtk3
84
- pass
97
+ # print(
98
+ # "REHINT",
99
+ # self,
100
+ # self.native.get_preferred_size()[0].width,
101
+ # self.native.get_preferred_size()[0].height,
102
+ # )
103
+ min_size , size = self .native .get_preferred_size ()
104
+
105
+ self .interface .intrinsic .width = at_least (min_size .width )
106
+ self .interface .intrinsic .height = size .height
85
107
86
108
def set_error (self , error_message ):
87
109
self .native .set_icon_from_icon_name (Gtk .EntryIconPosition .SECONDARY , "error" )
0 commit comments