GTKD - CSS class color "flash" delay

TheDGuy via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 29 23:53:56 PDT 2016


On Wednesday, 29 June 2016 at 10:41:21 UTC, TheDGuy wrote:
> I tried to debug a little and what i don't understand is, that 
> i get two times 'blue' on the console, even though yellow and 
> blue lit up but yellow stayed at the flash color:
>
>     private void letButtonsFlash(){
>         foreach(Button btn;bArr){
>             btn.setSensitive(false);
>         }
>         for(int i = 0; i < level; i++){
>             index = i;
>             Button currentButton = bArr[rndButtonBlink[i]]; 
> //Array holds randomized Buttons
>             ListG list = 
> currentButton.getStyleContext().listClasses();
>             string CSSClassName = 
> to!string(cast(char*)list.next().data);
>             
> currentButton.getStyleContext().addClass(CSSClassName ~ 
> "-flash");
>             Timeout t = new Timeout(() => 
> this.timeout_delay(currentButton),1,false);
>         }
>
>         foreach(Button btn;bArr){
>             btn.setSensitive(true);
>         }
>     }
>     bool timeout_delay(Button currentButton){
>         ListG list = 
> currentButton.getStyleContext().listClasses();
>         string CSSClassName = 
> to!string(cast(char*)list.next().data);
>         writeln(CSSClassName); //try to debug
>         
> currentButton.getStyleContext().removeClass(CSSClassName ~ 
> "-flash");
>         return false;
>     }
>
> The reason for the problem that buttons are flashing 
> simultaneously might be, that the Timeout is running in an 
> extra thread and therefore another Timeout is created by the 
> mainthread in the for-loop even though the last one hasn't 
> finished yet.
>
> But what i don't understand is why the last button doesn't go 
> back to the normal CSSClass and that the first button has two 
> timeouts (according to my console debug text)?
>
> It would be very much appreciated if someone who has GTKD 
> installed can try my code:
>
> http://pastebin.com/h0Nx1mL6

Okay, i am quite sure now that this is some kind of bug:

https://picload.org/image/rrrgwpgi/gtkd_timeout.png

     private void letButtonsFlash(){
         foreach(Button btn;bArr){
             btn.setSensitive(false);
         }
         for(int i = 0; i < level; i++){
             index = i;
             Button currentButton = bArr[rndButtonBlink[i]]; 
//Array holds randomized Buttons
             ListG list = 
currentButton.getStyleContext().listClasses();
             string CSSClassName = 
to!string(cast(char*)list.next().data);
             currentButton.getStyleContext().addClass(CSSClassName 
~ "-flash");
             writeln("Creating Timeout for : " ~ CSSClassName);
             Timeout t = new Timeout(() => 
this.timeout_delay(currentButton),1,false);
         }

         foreach(Button btn;bArr){
             btn.setSensitive(true);
         }
     }
     bool timeout_delay(Button currentButton){
         ListG list = 
currentButton.getStyleContext().listClasses();
         string CSSClassName = 
to!string(cast(char*)list.next().data);
         currentButton.getStyleContext().removeClass(CSSClassName 
~ "-flash");
         writeln("Removing flash CSS color for: " ~ CSSClassName);
         return false;
     }


More information about the Digitalmars-d-learn mailing list