[Done] 5.20 - PB_EventType_Change Bug oder Feature

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

[Done] 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von _JON_ »

Hallo Leute,

mir gerade aufgefallen das mit PB 5.20 beta 3, die SetGadgetText() Funktion nun ein #PB_EventType_Change auslöst.
Ich finde es natürlich blöd, weil ich nun meine sorglos erstellten Programme einfrieren :evil:

Kann ja sein das es einen Grund hat, was mein Ihr?

Code: Alles auswählen

OpenWindow(0, 0, 0, 230, 120, "Eventtypes Beispiel...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
StringGadget(1, 10,  10, 250, 20, "")
  
Repeat
  Event = WaitWindowEvent()
  Select Event
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1 
          Select EventType()
            Case #PB_EventType_Change
              Debug "EventType_Change"
              text.s = GetGadgetText(1)
              SetGadgetText(1, UCase(text))
          EndSelect
      EndSelect
       
  EndSelect
Until Event = #PB_Event_CloseWindow
Zuletzt geändert von _JON_ am 01.07.2013 11:15, insgesamt 1-mal geändert.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von ts-soft »

Hab das mal im englischem Forum als Bug gemeldet, aber mit etwas "besserem" Beispiel :wink:
http://www.purebasic.fr/english/viewtop ... 62#p416162

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von Kiffi »

_JON_ hat geschrieben:mir gerade aufgefallen das mit PB 5.20 beta 3, die SetGadgetText() Funktion nun ein #PB_EventType_Change auslöst.
das ist prinzipiell auch korrekt so. Wenn man den Inhalt eine
StringGadgets ändert, wird ein Change-Event gefeuert.
Ältere PB-Versionen machen das auch so.

Allerdings darf es dann nicht zu einer Endlos-Schleife kommen,
wenn man wie in Deinem Fall per SetGadgeText() einen Text
einträgt, der bereits im StringGadget() steht (also keine
Änderung stattfindet).

Grüße ... Kiffi
Hygge
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von ts-soft »

Kiffi hat geschrieben:das ist prinzipiell auch korrekt so. Wenn man den Inhalt eine
StringGadgets ändert, wird ein Change-Event gefeuert.
Ältere PB-Versionen machen das auch so.
Guck Dir das Beispiel im engl. Bugforum an, das ist etwas besser.
Ein durch den Code gesetzter Gadgettext hat in älteren PB Versionen
niemals ein Change gefeuert, das ist jetzt neu und ich finde das auch
nicht gut. Change sollte nur bei Änderung durch den Anwender o. ä. erfolgen.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
_JON_
Beiträge: 389
Registriert: 30.03.2010 15:24

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von _JON_ »

Danke Thomas :allright:

@Kiffi
Ja Ich kenne es von anderen Sprachen, das mich sich auch um selbst ausgelöste Events kümmern muss.
Aber das ist sehr unpraktisch und passt nicht zu PB.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von Kiffi »

*_Change ist *_Change. Dabei ist es meiner Meinung nach unerheblich,
ob vom Code aus oder vom Anwender ausgelöst wurde.

Insofern wäre auch das Verhalten von PB in früheren Versionen nicht korrekt.

Das Event sollte im Code von _JON_ beim Eintippen eines kleinen 'a' genau
zweimal ausgelöst werden. Beim Eintippen eines grossen 'A' einmal.

BTW: Ein Resize-Event (des Fensters) wird auch gefeuert, wenn es nicht
durch den Benutzer ausgelöst wird (z.B. beim Öffnen des Fensters).

Grüße ... Kiffi
Hygge
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von ts-soft »

Man kann dann aber auf ein Change nicht mehr mit SetGadgetText reagieren, ohne eine Endloss-Schleife zu erzeugen.
Fred hat geschrieben:No, program set value shouldn't fire a change event, it's a bug.
http://www.purebasic.fr/english/viewtop ... 70#p416170
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von Kiffi »

ts-soft hat geschrieben:Man kann dann aber auf ein Change nicht mehr mit SetGadgetText reagieren, ohne eine Endloss-Schleife zu erzeugen.
Kiffi hat geschrieben:Das Event sollte im Code von _JON_ beim Eintippen eines kleinen 'a' genau
zweimal ausgelöst werden. Beim Eintippen eines grossen 'A' einmal.
das ist keine Endlos-Schleife
Fred hat geschrieben:No, program set value shouldn't fire a change event, it's a bug.
dann kannste das mit dem Resize-Event auch gleich im Bug-Forum posten ;-)

Grüße ... Kiffi
Hygge
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von ts-soft »

Kiffi hat geschrieben:dann kannste das mit dem Resize-Event auch gleich im Bug-Forum posten ;-)
Wenn ich ein Gadget Resize gibt es dabei auch kein Event! Lediglich unter Windows gibt es beim
erstellen eines Gadgets ein Resize Event, was aber auch keine Endlosschleifen erzeugen kann :wink:

PS: Das SpinGadget läßt sich jetzt eigentlich gar nicht mehr nutzen :mrgreen:

Das entfernen dieses Events, z.B. durch WindowEvent(), was jetzt bei dem SpinGadget wieder erforderlich ist,
halte ich für unmöglich, zu mal, jeder selbst nach einem SetGadgetText ein PostEvent() feuern kann, wenn
es wirklich benötigt sein sollte. Da es bisher niemand vermisst hat, halte ich das aber auch nicht für wirklich
wichtig :mrgreen:
Zuletzt geändert von ts-soft am 27.06.2013 20:23, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10621
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: 5.20 - PB_EventType_Change Bug oder Feature

Beitrag von Kiffi »

was hast Du eigentlich mit Deiner Endlosschleife?

In der aktuellen Version gibt es eine Endlosschleife im Code von _JON_. Das ist ein Bug und muss behoben werden.

In früheren Versionen wird ein Event zu wenig gefeuert. Das ist ebensowenig korrekt. Da sich aber alle mittlerweile daran gewöhnt haben, soll es plötzlich ein korrektes Verhalten sein?

Im übrigen dokumentierst Du mit Deinem 'besseren' Beispiel im englischen Forum nicht den aktuellen Bug. Wenn Du ständig einen anderen Wert in das TextGadget schreibst, wird korrekterweise das Change-Event gefeuert. Erst durch die Änderung von Josh wird der Fehler der aktuellen Version deutlich.

Grüße ... Kiffi
Hygge
Antworten