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