X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/78cd9c69eb3f4c158fe10ce49325d57ec05d1306..e9717bd5d8ff2e3ff91d99d44850b1d2485f5edf:/src/gtk/window.cpp diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index fb3d2024fd..eb36d67c61 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -1858,10 +1858,8 @@ gtk_window_focus_out_callback( GtkWidget *widget, // Disable default focus handling for custom windows // since the default GTK+ handler issues a repaint if ( has_wxwindow ) - { return TRUE; } - } // continue with normal processing return FALSE; @@ -2004,9 +2002,10 @@ gtk_scrollbar_event_after(GtkRange* range, GdkEvent* event, wxWindow* win) const int orient = wxWindow::OrientFromScrollDir( win->ScrollDirFromRange(range)); - wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBRELEASE, win->GetScrollPos(orient), orient); - event.SetEventObject(win); - win->GTKProcessEvent(event); + wxScrollWinEvent evt(wxEVT_SCROLLWIN_THUMBRELEASE, + win->GetScrollPos(orient), orient); + evt.SetEventObject(win); + win->GTKProcessEvent(evt); } } @@ -2101,23 +2100,23 @@ void gtk_window_size_callback( GtkWidget *WXUNUSED(widget), // "grab_broken" //----------------------------------------------------------------------------- -#ifdef __WXGTK210__ -static void -gtk_window_grab_broken( GtkWidget *m_widget, +#if GTK_CHECK_VERSION(2, 8, 0) +static gboolean +gtk_window_grab_broken( GtkWidget*, GdkEventGrabBroken *event, wxWindow *win ) { // Mouse capture has been lost involuntarily, notify the application - if( !event->keyboard && win && wxWindow::GetCapture() == win ) + if(!event->keyboard && wxWindow::GetCapture() == win) { wxMouseCaptureLostEvent evt( win->GetId() ); evt.SetEventObject( win ); win->GetEventHandler()->ProcessEvent( evt ); } + return false; } #endif - } // extern "C" // ---------------------------------------------------------------------------- @@ -2531,7 +2530,7 @@ void wxWindowGTK::PostCreation() // Catch native resize events g_signal_connect (m_wxwindow, "size_allocate", G_CALLBACK (gtk_window_size_callback), this); -#ifdef __WXGTK210__ +#if GTK_CHECK_VERSION(2, 8, 0) if (!gtk_check_version(2,8,0)) { // Make sure we can notify the app when mouse capture is lost @@ -2543,7 +2542,7 @@ void wxWindowGTK::PostCreation() if ( connect_widget != m_wxwindow ) { -#ifdef __WXGTK210__ +#if GTK_CHECK_VERSION(2, 8, 0) if (!gtk_check_version(2,8,0)) { // Make sure we can notify app code when mouse capture is lost @@ -2841,7 +2840,7 @@ void wxWindowGTK::OnInternalIdle() } } - if (wxUpdateUIEvent::CanUpdate(this)) + if (wxUpdateUIEvent::CanUpdate(this) && IsShown()) UpdateWindowUI(wxUPDATE_UI_FROMIDLE); } @@ -2899,7 +2898,7 @@ void wxWindowGTK::DoGetPosition( int *x, int *y ) const int dx = 0; int dy = 0; - if (m_parent && m_parent->m_wxwindow) + if (!IsTopLevel() && m_parent && m_parent->m_wxwindow) { GtkPizza *pizza = GTK_PIZZA(m_parent->m_wxwindow); dx = gtk_pizza_get_xoffset( pizza ); @@ -3051,9 +3050,7 @@ int wxWindowGTK::GetCharHeight() const wxFont font = GetFont(); wxCHECK_MSG( font.Ok(), 12, wxT("invalid font") ); - PangoContext *context = NULL; - if (m_widget) - context = gtk_widget_get_pango_context( m_widget ); + PangoContext* context = gtk_widget_get_pango_context(m_widget); if (!context) return 0; @@ -3079,9 +3076,7 @@ int wxWindowGTK::GetCharWidth() const wxFont font = GetFont(); wxCHECK_MSG( font.Ok(), 8, wxT("invalid font") ); - PangoContext *context = NULL; - if (m_widget) - context = gtk_widget_get_pango_context( m_widget ); + PangoContext* context = gtk_widget_get_pango_context(m_widget); if (!context) return 0; @@ -3186,19 +3181,19 @@ void wxWindowGTK::SetFocus() // this control, whatever the flags are if (!GTK_WIDGET_CAN_FOCUS(m_wxwindow)) GTK_WIDGET_SET_FLAGS(m_wxwindow, GTK_CAN_FOCUS); - + if (!GTK_WIDGET_HAS_FOCUS (m_wxwindow)) { gtk_widget_grab_focus (m_wxwindow); } } - else if (m_widget) + else { // wxWindow::SetFocus() should really set the focus to // this control, whatever the flags are if (!GTK_WIDGET_CAN_FOCUS(m_widget)) GTK_WIDGET_SET_FLAGS(m_widget, GTK_CAN_FOCUS); - + if (GTK_IS_CONTAINER(m_widget)) { if (GTK_IS_RADIO_BUTTON(m_widget)) @@ -3778,7 +3773,6 @@ void wxWindowGTK::GtkSendPaintEvents() nc_paint_event.SetEventObject( this ); GetEventHandler()->ProcessEvent( nc_paint_event ); - wxPaintEvent paint_event( GetId() ); paint_event.SetEventObject( this ); GetEventHandler()->ProcessEvent( paint_event );