GTKD - CSS class color "flash" delay

Mike Wey via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jun 30 13:11:17 PDT 2016


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


More information about the Digitalmars-d-learn mailing list