diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 49d0626adc..8235a38288 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -3146,7 +3146,12 @@ void wxWindowGTK::DoClientToScreen( int *x, int *y ) const { wxCHECK_RET( (m_widget != NULL), wxT("invalid window") ); - if (!m_isGtkPositionValid && !IsTopLevel() && m_parent) + GtkWidget* widget = m_widget; + if (m_wxwindow) + widget = m_wxwindow; + GdkWindow* source = gtk_widget_get_window(widget); + + if ((!m_isGtkPositionValid || source == NULL) && !IsTopLevel() && m_parent) { m_parent->DoClientToScreen(x, y); int xx, yy; @@ -3178,12 +3183,6 @@ void wxWindowGTK::DoClientToScreen( int *x, int *y ) const return; } - GdkWindow *source = NULL; - if (m_wxwindow) - source = gtk_widget_get_window(m_wxwindow); - else - source = gtk_widget_get_window(m_widget); - wxCHECK_RET(source, "ClientToScreen failed on unrealized window"); int org_x = 0; @@ -3217,7 +3216,12 @@ void wxWindowGTK::DoScreenToClient( int *x, int *y ) const { wxCHECK_RET( (m_widget != NULL), wxT("invalid window") ); - if (!m_isGtkPositionValid && !IsTopLevel() && m_parent) + GtkWidget* widget = m_widget; + if (m_wxwindow) + widget = m_wxwindow; + GdkWindow* source = gtk_widget_get_window(widget); + + if ((!m_isGtkPositionValid || source == NULL) && !IsTopLevel() && m_parent) { m_parent->DoScreenToClient(x, y); int xx, yy; @@ -3249,12 +3253,6 @@ void wxWindowGTK::DoScreenToClient( int *x, int *y ) const return; } - GdkWindow *source = NULL; - if (m_wxwindow) - source = gtk_widget_get_window(m_wxwindow); - else - source = gtk_widget_get_window(m_widget); - wxCHECK_RET(source, "ScreenToClient failed on unrealized window"); int org_x = 0;