Linux: Text in Stringgadget markieren?

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
LordK
Beiträge: 28
Registriert: 01.03.2006 21:18

Linux: Text in Stringgadget markieren?

Beitrag von LordK »

Hi Leute,

wie kann ich unter Linux den gesamten Text im Stringgadget markieren, wenn der benutzer in das Feld klickt bzw. mit TAB rein geht?

Unter Windows hab ichs schon gefunden, aber unter Linux fehl mir noch jeglicher Bezug zu einer API.

Wäre für eine kleine Hilfe dankbar :D

Gruß

LordK
LordK
Beiträge: 28
Registriert: 01.03.2006 21:18

Beitrag von LordK »

Also ich bin jetzt mal ne ganze Ecke weiter. Hab herausgefunden, dass auf der Purearea ein Link zur GTK API gibt ;)

Dort habe ich dann auch die Funktion gtk_editable_select_region_() gefunden mit der man das realisieren kann. Jetzt hab ich dummerweise noch ein anderes Problem, dass ich aber nicht ganz verstehe weil es wohl irgendwie willkürlich ist.

Ich hab folgendes kleines Testprog geschrieben mit dem sich der Fehler bei mir zumindest nachstellen läßt.

Das Problem liegt darin, wann das Feld den Fokus bekommt wann es diesen wieder verliert. Das komische ist, bei 4 Feldern geht es nicht und beim 5. geht es auf einmal.

Einfach mal selbst stehen. Unterschieden wird scheinbar auch noch, ob das Feld mit TAB oder mit der Maus verlassen wird. Wenn ich das 5. Feld mit TAB verlasse krieg ich den Request, wenn ich es mit der Maus verlasse (einfach in eine anderes Feld klicke) passiert nichts. Bei den restlichen 4 Felder ist es egal, da passiert generell nichts...

Code: Alles auswählen

;- Window Constants
;
Enumeration
  #mainWindow
EndEnumeration

;- Gadget Constants
;
Enumeration
  #feld1Text
  #feld1
  #feld2Text
  #feld2
  #feld3Text
  #feld3
  #feld4Text
  #feld4
  #feld5Text
  #feld5
EndEnumeration

  If OpenWindow(#mainWindow, 343, 44, 403, 200,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Focus Test")
    
    If CreateGadgetList(WindowID())
      TextGadget(#feld1Text, 30, 30, 170, 20, "Feld1:")
      StringGadget(#feld1, 30, 50, 340, 20, "")
      
      TextGadget(#feld2Text, 30, 80, 70, 20, "Feld2:")
      StringGadget(#feld2, 30, 100, 70, 20,"20")
      
      TextGadget(#feld3Text, 120, 80, 70, 20, "Feld3:")
      StringGadget(#feld3, 120, 100, 70, 20,"20")
            
      TextGadget(#feld4Text, 210, 80, 70, 20, "Feld4:")
      StringGadget(#feld4, 210, 100, 70, 20,"0")
      
      TextGadget(#feld5Text, 300, 80, 70, 20, "Feld5:")
      StringGadget(#feld5, 300, 100, 70, 20,"2500")
      
      ActivateGadget(#feld1)
     
    EndIf
  EndIf
  
  Repeat
    
    WaitWindowEvent = WaitWindowEvent()
    EventGadgetID   = EventGadgetID()
    
    Select WaitWindowEvent
      
      Case #PB_Event_Gadget
      
        Select EventType()
          Case #PB_EventType_Focus 

            ;MessageRequester("FOCUS","GOT")
            gtk_editable_select_region_(GadgetID(EventGadgetID), 0,Len(GetGadgetText(EventGadgetID)))
          Case #PB_EventType_LostFocus
            MessageRequester("FOCUS","LOST")
            gtk_editable_select_region_(GadgetID(EventGadgetID), 0,0)
        EndSelect
        
      Case #PB_Event_CloseWindow
        Quit = 1
        
    EndSelect
    
  Until Quit = 1
PB 3.94 unter OSS (Open Suse) 10.1

Kann da mal einer nachprüfen?

Danke & Gruß

LordK
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Bei mir ist genau dasselbe Spiel. Nur wenn man per Tab aus dem 5. Feld wechselt, gibts ne Meldung.

Ubuntu 6.06
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
LordK
Beiträge: 28
Registriert: 01.03.2006 21:18

Beitrag von LordK »

Ich hoffe mal, dass das alles mit PB4 für Linux gefixt wird. So macht das doch echt kein spaß :cry:

Und vor allem das PB 4 für Linux zügig kommt.

Hat jemand vielleicht ne Umgehungslösung für mich oder sonst eine Idee wie ich das realisieren könnte?
Antworten