看來,這種行爲來自於差異侏儒如何處理不同的「類型提示」窗口......這使他們變成自己的z-index分組:
https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#GdkWindowTypeHint
的對話框用GDK_WINDOW_TYPE_HINT_DIALOG
創建,而其他窗口很可能是用GDK_WINDOW_TYPE_HINT_NORMAL
創建的。其中,該決定提出的觀點是gtk/toplevel.cpp
和它正在由一個事實,即「額外」的風格標誌包含wxTOPLEVEL_EX_DIALOG
線索:
toplevel.cpp#L594
這些是僅有的兩個呼叫gtk_window_set_type_hint
在wxWidgets的GTK代碼庫,除了在啓動畫面代碼中。因此,在事實之後更改「額外」樣式位不會有幫助。 (「正確的」解決方案是修補wxWidgets,以便在額外樣式中調整wxTOPLEVEL_EX_DIALOG
將對窗口類型提示進行適當調整。)
如果不通過其構造函數運行,則不能使用wxDialog類調用非虛方法wxDialog::Create
,這臺額外的樣式來wxTOPLEVEL_EX_DIALOG
,然後直接進入到頂級窗口創建:
dialog.cpp#L54
所以我想你必須嘗試這個選項,如果你的避風港,其工作原理暫時未顯示對話框:
#ifdef __WXGTK__
gtk_window_set_type_hint(
GTK_WINDOW(iShouldBeUsingQtDialog->GetHandle()),
GDK_WINDOW_TYPE_HINT_NORMAL);
#endif
...如果你已經所示的對話框,你需要使用這個,它的工作:
#ifdef __WXGTK__
gdk_window_set_type_hint(
iShouldBeUsingQtDialog->GetHandle()->window,
GDK_WINDOW_TYPE_HINT_NORMAL);
#endif
兩種情況會要求你添加一個包含文件到您的源:
#ifdef __WXGTK__
#include "gtk/gtkwindow.h"
#endif
...你必須更新你的版本才能找到GTK包含的內容。在G ++的命令行上,我嘗試了這一點,它的工作原理如下:
pkg-config --cflags --libs gtk+-2.0
謝謝。這是一次勇敢的努力,但徒勞無功:沒有一個窗戶有這種選擇。 :-( –
Forsooth,福克沒有徒勞地編碼。更新! – HostileFork
好主...我沒有*期待任何人去爲這個微不足道的事情努力。即使它不起作用,我也會將此標記爲可接受的結果,但我很高興地向您報告,確實如此 - 您已經確定了這一點。 :-D謝謝! –