On 06/24/2016 10:03 PM, TheDGuy wrote:
On Friday, 24 June 2016 at 16:44:59 UTC, Gerald wrote:
Other then the obvious multi-threaded, using glib.Timeout to trigger
the reversion of the color change could be an option.

http://api.gtkd.org/src/glib/Timeout.html

Thanks! I tried this so far:
    private void letButtonsFlash(){
        foreach(Button btn;bArr){
            btn.setSensitive(false);
        }
        for(int i = 0; i < level; i++){
            Button currentButton = bArr[rndButtonBlink[i]];
            ListG list = currentButton.getStyleContext().listClasses();
            string CSSClassName = to!string(cast(char*)list.next().data);
            currentButton.getStyleContext().addClass(CSSClassName ~
"-flash");
            writeln(CSSClassName);
            Timeout t = new Timeout(&timeout_delay,1,true);
            currentButton.getStyleContext().removeClass(CSSClassName ~
"-flash");

        }
        foreach(Button btn;bArr){
            btn.setSensitive(true);
        }
    }
    bool timeout_delay(){
        Thread.sleep(dur!("seconds")(5));
        return false;
    }

and it is "working" to the extend that at least the CSSClassName gets
written in the console but the UI again just pops up after 5 sec. Could
you give me a tip?


You should change the css class in the timeout_delay function.

It's called by the GTK main loop every time the amount of seconds passed to the constructor has passed. And return true if you want to continue to flash the button, and false to stop.

Also don't sleep in the timeout function, the main loop should take care of that, currently you are blocking the main thread for 5 seconds.

--
Mike Wey

Reply via email to