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