Hier mal eine Frage an die Linuxgemeinde :
Ich habe ein StringGadget, dessen Inhalt selektiert werden soll, wenn es den Fokus erhält.
Wenn ich gtk_editable_select_region_() in der Haupt Event Schleife aufrufe, funktioniert es.
Wenn ich das ganze aber in eine Prozedur verfrachte und mit BindGadgetEvent() automatisch
aufrufen lassen möchte, klappt es nicht mehr. Weiss jemand wie ich das mit BindGadgetEvent()
hinbekomme ?
Unter Windows hatte ich ähnliches Problem, dort half es aus dem SendMessage_() ein PostMessage_()
Aufruf zu machen, evt. ist es hier das gleiche, nur kenne ich die ganze API Geschichte nicht wirklich ...
Code: Alles auswählen
; Funktioniert !
OpenWindow(0, 0, 0, 200, 100, "Autoselect text", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(1, 10, 10, 20, 20, "A")
StringGadget(2, 50, 40, 100, 20, "Test")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget() = 2
If EventType() = #PB_EventType_Focus
gtk_editable_select_region_(GadgetID(2), 0, Len(GetGadgetText(2)))
EndIf
EndIf
EndSelect
ForEver
Code: Alles auswählen
; Soll funktionieren ! (leider macht es nichts)
Procedure.i MyStringEvent()
Gadget = EventGadget()
Select EventType()
Case #PB_EventType_Focus
gtk_editable_select_region_(GadgetID(Gadget), 0, Len(GetGadgetText(Gadget)))
EndSelect
EndProcedure
OpenWindow(0, 0, 0, 200, 100, "Autoselect text", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(1, 10, 10, 20, 20, "A")
StringGadget(2, 50, 40, 100, 20, "Test")
BindGadgetEvent(2, @MyStringEvent(), #PB_EventType_Focus)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver