Re: Nesting gtk_main ?

On Mon, 01 Feb 2010 11:27:12 +0100
Martin Vejnár <avakar ratatanek cz> wrote:
> On 1/31/2010 7:22 PM, Tadej Borovšak wrote:
> > 2010/1/31 Martin Vejnár<avakar ratatanek cz>:
> >> On 1/30/2010 10:30 PM, jcupitt gmail com wrote:
> >>> A single gtk_main will run multiple independent windows. You only
> >>> need to nest them if you want a modal dialog.
> >>
> >> What should you do if you want to run two dialog boxes at the same
> >> time?
> >
> > If you don't want them to interfere with the rest of the GUI, you
> > simply don't use gtk_dialog_run(). Instead, you show dialogs using
> > gtk_widget_show() and all windows will run without interference.
> > After all, gtk_dialog_run() is merely a convenience method that
> > makes it easy to use dialogs that need urgent user intervention. If
> > you don't need this kind of functionality from dialog, simply
> > showing it will also work.
> So I should connect the appropriate signals, call gtk_widget_show and 
> perform actions (those which I would normally perform below 
> gtk_dialog_run) in the signal handlers, right?

More or less.  You will need to ensure that when the window is finished
with you have called gtk_object_destroy() or gtk_widget_destroy().  I
suggest you also read the documentation, which has an example:
> How do I make the dialog's parent ignore user input? Event if I call 
> gtk_window_set_transient_for(dialog, parent), the parent remains
> clickable.

If you want this, then why not call gtk_dialog_run() and have a
blocking dialog?  However, if you have a special reason why you want to
do it without a recursive call to gtk_main(), then use
gtk_window_set_modal() as well as gtk_window_set_transient(). As a
further sophistication you can set the parent insensitive with
gtk_widget_set_sensitive(), but if you do that you will need to set the
parent sensitive again when the dialog is finished with (say by
connecting a callback to the destroy and/or hide signal).


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]