【问题标题】:Question about Modal Dialog in Gtk application关于 Gtk 应用程序中模态对话框的问题
【发布时间】:2011-03-04 20:04:39
【问题描述】:

在 Gtk 应用程序中,有 1 个主循环用于监听事件(例如鼠标点击、键盘等)。当弹出模式对话框时,主循环被阻塞,直到用户在对话框中单击“确定”,对吗? (即当用户点击主窗口时什么都不会发生)。对吗?

我的问题是,firefox 如何进行其模态对话框,以便它可以: 1. 当 1 有 2 个 Firefox 窗口时 2. 其中一个有模态对话框 3. 另一个还在互动

如果两个窗口共享同一个 gtk 主循环,这怎么可能?请帮助我理解这一点。

谢谢。

【问题讨论】:

    标签: linux gtk gtk2


    【解决方案1】:

    firefox 的警告窗口是模态的。当您在 firefox 中打开一个新窗口时,它会生成另一个 firefox 进程,因此您有两个进程、两个窗口、两个独立的主循环。

    【讨论】:

    • 没有。我在ubuntu上试过这个。当我有 1 个 Firefox 然后转到“新窗口”时,它仍然显示它使用 1 个进程(来自“ps -ef”输出)。
    • 在模态行为的情况下,拥有两个进程而不是拥有自己循环的两个线程有​​什么大区别? Mozilla 选择了多线程方法来完全适合进程(供参考:linux-magazine.com/Online/News/…),我敢打赌这与优化有关。请改用ps -AL
    【解决方案2】:

    如果两个窗口共享同一个 GTK 主循环,那么这是不可能的。所以他们没有。要么他们有两个主循环,要么他们通过每次点击一个主窗口时弹出对话框来伪造一个模态对话框。

    【讨论】:

    • 如何为每个窗口分配一个新的 GTK 主循环?
    • 对不起,没做过。查看 GLib 文档中的 g_main_whatever 函数 (not gtk_main)
    猜你喜欢
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    相关资源
    最近更新 更多