From 0653df2501e343592055c7baae0882e02a9bf98a Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Mon, 7 Jul 2003 14:21:56 +0000 Subject: [PATCH] Added code for better mouse click detection in various native controls. wxChoice and wxSpinCtrl look better, wxListBox doesn't. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@21745 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/choice.cpp | 10 ++++++++++ src/gtk/listbox.cpp | 2 ++ src/gtk/spinctrl.cpp | 6 +++++- src/gtk1/choice.cpp | 10 ++++++++++ src/gtk1/listbox.cpp | 2 ++ src/gtk1/spinctrl.cpp | 6 +++++- 6 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/gtk/choice.cpp b/src/gtk/choice.cpp index 9b3b464160..0505b4457f 100644 --- a/src/gtk/choice.cpp +++ b/src/gtk/choice.cpp @@ -479,5 +479,15 @@ wxSize wxChoice::DoGetBestSize() const return ret; } +bool wxChoice::IsOwnGtkWindow( GdkWindow *window ) +{ +#ifdef __WXGTK20__ + return GTK_BUTTON(m_widget)->event_window; +#else + return (window == m_widget->window); +#endif +} + + #endif // wxUSE_CHOICE diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp index 46808ec081..d2ee834d40 100644 --- a/src/gtk/listbox.cpp +++ b/src/gtk/listbox.cpp @@ -957,6 +957,8 @@ GtkWidget *wxListBox::GetConnectWidget() bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) { + if (m_widget->window == window) return TRUE; + if (GTK_WIDGET(m_list)->window == window) return TRUE; GList *child = m_list->children; diff --git a/src/gtk/spinctrl.cpp b/src/gtk/spinctrl.cpp index f04242957b..44261082c2 100644 --- a/src/gtk/spinctrl.cpp +++ b/src/gtk/spinctrl.cpp @@ -282,7 +282,11 @@ void wxSpinCtrl::OnChar( wxKeyEvent &event ) bool wxSpinCtrl::IsOwnGtkWindow( GdkWindow *window ) { - return GTK_SPIN_BUTTON(m_widget)->panel == window; + if (GTK_SPIN_BUTTON(m_widget)->entry.text_area == window) return TRUE; + + if (GTK_SPIN_BUTTON(m_widget)->panel == window) return TRUE; + + return FALSE; } void wxSpinCtrl::ApplyWidgetStyle() diff --git a/src/gtk1/choice.cpp b/src/gtk1/choice.cpp index 9b3b464160..0505b4457f 100644 --- a/src/gtk1/choice.cpp +++ b/src/gtk1/choice.cpp @@ -479,5 +479,15 @@ wxSize wxChoice::DoGetBestSize() const return ret; } +bool wxChoice::IsOwnGtkWindow( GdkWindow *window ) +{ +#ifdef __WXGTK20__ + return GTK_BUTTON(m_widget)->event_window; +#else + return (window == m_widget->window); +#endif +} + + #endif // wxUSE_CHOICE diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index 46808ec081..d2ee834d40 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -957,6 +957,8 @@ GtkWidget *wxListBox::GetConnectWidget() bool wxListBox::IsOwnGtkWindow( GdkWindow *window ) { + if (m_widget->window == window) return TRUE; + if (GTK_WIDGET(m_list)->window == window) return TRUE; GList *child = m_list->children; diff --git a/src/gtk1/spinctrl.cpp b/src/gtk1/spinctrl.cpp index f04242957b..44261082c2 100644 --- a/src/gtk1/spinctrl.cpp +++ b/src/gtk1/spinctrl.cpp @@ -282,7 +282,11 @@ void wxSpinCtrl::OnChar( wxKeyEvent &event ) bool wxSpinCtrl::IsOwnGtkWindow( GdkWindow *window ) { - return GTK_SPIN_BUTTON(m_widget)->panel == window; + if (GTK_SPIN_BUTTON(m_widget)->entry.text_area == window) return TRUE; + + if (GTK_SPIN_BUTTON(m_widget)->panel == window) return TRUE; + + return FALSE; } void wxSpinCtrl::ApplyWidgetStyle()