X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/50bedb7b44f859e06e23326a89abcac8e98a0a35..9bc95da04ca5541783c9aead91769fcde0651d97:/src/gtk/control.cpp diff --git a/src/gtk/control.cpp b/src/gtk/control.cpp index 06ca9c1de7..0191a2f919 100644 --- a/src/gtk/control.cpp +++ b/src/gtk/control.cpp @@ -21,6 +21,8 @@ #include "wx/fontutil.h" #include "wx/gtk/private.h" +#include "wx/utils.h" +#include "wx/sysopt.h" #include "wx/gtk/private/mnemonics.h" @@ -87,10 +89,34 @@ void wxControl::PostCreation(const wxSize& size) // GetBestSize is called. gtk_widget_ensure_style(m_widget); - ApplyWidgetStyle(); + GTKApplyWidgetStyle(); SetInitialSize(size); } +// ---------------------------------------------------------------------------- +// Work around a GTK+ bug whereby button is insensitive after being +// enabled +// ---------------------------------------------------------------------------- + +// Fix sensitivity due to bug in GTK+ < 2.14 +void wxControl::GTKFixSensitivity(bool onlyIfUnderMouse) +{ + if (gtk_check_version(2,14,0) +#if wxUSE_SYSTEM_OPTIONS + && (wxSystemOptions::GetOptionInt(wxT("gtk.control.disable-sensitivity-fix")) != 1) +#endif + ) + { + wxPoint pt = wxGetMousePosition(); + wxRect rect(ClientToScreen(wxPoint(0, 0)), GetSize()); + if (!onlyIfUnderMouse || rect.Contains(pt)) + { + Hide(); + Show(); + } + } +} + // ---------------------------------------------------------------------------- // wxControl dealing with labels // ---------------------------------------------------------------------------- @@ -294,14 +320,9 @@ wxControl::GetDefaultAttributesFromGTKWidget(wxGtkWidgetNewFromAdj_t widget_new, void wxControl::OnInternalIdle() { - if ( GtkShowFromOnIdle() ) + if ( GTKShowFromOnIdle() ) return; - if ( GTK_WIDGET_REALIZED(m_widget) ) - { - GTKUpdateCursor(); - } - if ( wxUpdateUIEvent::CanUpdate(this) && IsShownOnScreen() ) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); }