add missing GTK3 implementations of GTKGetWindow()

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@75864 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2014-02-09 19:53:17 +00:00
parent 01ee6284c9
commit 5c8ad94705
7 changed files with 45 additions and 19 deletions

View File

@@ -278,8 +278,8 @@ GtkWidget* wxComboBox::GetConnectWidget()
GdkWindow* wxComboBox::GTKGetWindow(wxArrayGdkWindows& /* windows */) const GdkWindow* wxComboBox::GTKGetWindow(wxArrayGdkWindows& /* windows */) const
{ {
#ifdef __WXGTK3__ #ifdef __WXGTK3__
// no access to internal GdkWindows GdkWindow* wxGTKFindWindow(GtkWidget* widget);
return NULL; return wxGTKFindWindow(GTK_WIDGET(GetEntry()));
#else #else
return gtk_entry_get_text_window(GetEntry()); return gtk_entry_get_text_window(GetEntry());
#endif #endif

View File

@@ -594,7 +594,10 @@ GdkWindow *wxNotebook::GTKGetWindow(wxArrayGdkWindows& windows) const
{ {
windows.push_back(gtk_widget_get_window(m_widget)); windows.push_back(gtk_widget_get_window(m_widget));
#ifdef __WXGTK3__ #ifdef __WXGTK3__
// no access to internal GdkWindows GdkWindow* wxGTKFindWindow(GtkWidget* widget);
GdkWindow* window = wxGTKFindWindow(m_widget);
if (window)
windows.push_back(window);
#else #else
windows.push_back(GTK_NOTEBOOK(m_widget)->event_window); windows.push_back(GTK_NOTEBOOK(m_widget)->event_window);
#endif #endif

View File

@@ -508,8 +508,8 @@ int wxSlider::GetLineSize() const
GdkWindow *wxSlider::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const GdkWindow *wxSlider::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
{ {
#ifdef __WXGTK3__ #ifdef __WXGTK3__
// no access to internal GdkWindows GdkWindow* wxGTKFindWindow(GtkWidget* widget);
return NULL; return wxGTKFindWindow(m_scale);
#else #else
return GTK_RANGE(m_scale)->event_window; return GTK_RANGE(m_scale)->event_window;
#endif #endif

View File

@@ -174,12 +174,14 @@ void wxSpinButton::GtkEnableEvents() const
(gpointer)gtk_value_changed, (void*) this); (gpointer)gtk_value_changed, (void*) this);
} }
GdkWindow *wxSpinButton::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const GdkWindow *wxSpinButton::GTKGetWindow(wxArrayGdkWindows& windows) const
{ {
#ifdef __WXGTK3__ #ifdef __WXGTK3__
// no access to internal GdkWindows void wxGTKFindWindow(GtkWidget* widget, wxArrayGdkWindows& windows);
wxGTKFindWindow(m_widget, windows);
return NULL; return NULL;
#else #else
wxUnusedVar(windows);
return GTK_SPIN_BUTTON(m_widget)->panel; return GTK_SPIN_BUTTON(m_widget)->panel;
#endif #endif
} }

View File

@@ -342,8 +342,8 @@ void wxSpinCtrlGTKBase::OnChar( wxKeyEvent &event )
GdkWindow *wxSpinCtrlGTKBase::GTKGetWindow(wxArrayGdkWindows& windows) const GdkWindow *wxSpinCtrlGTKBase::GTKGetWindow(wxArrayGdkWindows& windows) const
{ {
#ifdef __WXGTK3__ #ifdef __WXGTK3__
// no access to internal GdkWindows void wxGTKFindWindow(GtkWidget* widget, wxArrayGdkWindows& windows);
wxUnusedVar(windows); wxGTKFindWindow(m_widget, windows);
#else #else
GtkSpinButton* spinbutton = GTK_SPIN_BUTTON(m_widget); GtkSpinButton* spinbutton = GTK_SPIN_BUTTON(m_widget);

View File

@@ -1650,16 +1650,8 @@ GdkWindow *wxTextCtrl::GTKGetWindow(wxArrayGdkWindows& WXUNUSED(windows)) const
else else
{ {
#ifdef __WXGTK3__ #ifdef __WXGTK3__
GdkWindow* window = gtk_widget_get_window(m_text); GdkWindow* wxGTKFindWindow(GtkWidget* widget);
for (const GList* p = gdk_window_peek_children(window); p; p = p->next) return wxGTKFindWindow(m_text);
{
window = GDK_WINDOW(p->data);
void* data;
gdk_window_get_user_data(window, &data);
if (data == m_text)
return window;
}
return NULL;
#else #else
return gtk_entry_get_text_window(GTK_ENTRY(m_text)); return gtk_entry_get_text_window(GTK_ENTRY(m_text));
#endif #endif

View File

@@ -4370,6 +4370,35 @@ bool wxWindowGTK::IsTransparentBackgroundSupported(wxString* reason) const
#endif // wxGTK_HAS_COMPOSITING_SUPPORT/!wxGTK_HAS_COMPOSITING_SUPPORT #endif // wxGTK_HAS_COMPOSITING_SUPPORT/!wxGTK_HAS_COMPOSITING_SUPPORT
} }
#ifdef __WXGTK3__
GdkWindow* wxGTKFindWindow(GtkWidget* widget)
{
GdkWindow* window = gtk_widget_get_window(widget);
for (const GList* p = gdk_window_peek_children(window); p; p = p->next)
{
window = GDK_WINDOW(p->data);
void* data;
gdk_window_get_user_data(window, &data);
if (data == widget)
return window;
}
return NULL;
}
void wxGTKFindWindow(GtkWidget* widget, wxArrayGdkWindows& windows)
{
GdkWindow* window = gtk_widget_get_window(widget);
for (const GList* p = gdk_window_peek_children(window); p; p = p->next)
{
window = GDK_WINDOW(p->data);
void* data;
gdk_window_get_user_data(window, &data);
if (data == widget)
windows.push_back(window);
}
}
#endif // __WXGTK3__
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Pop-up menu stuff // Pop-up menu stuff
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------