Francesco Montorsi wrote:
[...]
>>> My switch-page handler in fact performs some code which should be 
>>> executed only on user-actions, not on selection changes by GTK.
>>
>>
>> from the docs about "switch-page":
>>     "Emitted when the user or a function changes the current page"
>>
>>  a.) "switch-page" maybe isnt exactly where all that logic belongs ?
> 
> yes, I know; but which event handler can I put that logic, then ?
> There's a documented "select-page" signal but docs say almost nothing 
> about it... so I don't know how it differs from "switch-page"
> 
> 
>>  b.) maybe your code actually _knows_ that it is in the process of 
>> manually
>>      setting the page of the notebook and should just behave 
>> accordingly ?
> 
> the only thing I can think to is to set a flag just before calling 
> gtk_notebook_set_current_page:
> 
> bSkipNextSwitchEvent = true;
> gtk_notebook_set_current_page(...);
> 
> static void my_page_change_callback(...)
> {
>     if (bSkipNextSwitchEvent)
>         return;
> }
> 
> However I think that's rather unsafe as the user could interfere with 
> that and I fear that some user-generated events could be lost that way...
> 

Impossible:

{
   bSkipNextSwitchEvent = TRUE;
   gtk_notebook_set_current_page (<this will recurse into 
my_page_change_callback>);
     my_page_change_callback () { if (bSkipNextSwitchEvent) return; }
   bSkipNextSwitchEvent = FALSE;

   /* rest of your code... */
   return;
   /* Events can only be recieved by gtk+ after this line */
}

If you are executing code - you are not reading a socket from the X
server and you are not recieving events - once you return to the
mainloop another event or other GSource can be processed.

Cheers,
                -Tristan
_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to