On 06/30/2016 08:53 AM, TheDGuy wrote:
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;
    }

Is the complete source available some ware?

--
Mike Wey

Reply via email to