diff --git a/include/wx/gtk/dc.h b/include/wx/gtk/dc.h index 3e3b600f68..3c8619cb8a 100644 --- a/include/wx/gtk/dc.h +++ b/include/wx/gtk/dc.h @@ -35,10 +35,10 @@ public: virtual wxSize GetPPI() const wxOVERRIDE; protected: - int m_width, m_height; + // Set m_width and m_height from the given (valid) GdkWindow. + void InitSize(GdkWindow* window); -private: - bool TryGetWindowSize(wxSize& size, wxSize& sizeMM) const; + int m_width, m_height; wxDECLARE_NO_COPY_CLASS(wxGTKCairoDCImpl); }; diff --git a/src/gtk/dc.cpp b/src/gtk/dc.cpp index ccd61f9b02..79c90e20d2 100644 --- a/src/gtk/dc.cpp +++ b/src/gtk/dc.cpp @@ -55,6 +55,12 @@ wxGTKCairoDCImpl::wxGTKCairoDCImpl(wxDC* owner, wxWindow* window) m_contentScaleFactor = window->GetContentScaleFactor(); } +void wxGTKCairoDCImpl::InitSize(GdkWindow* window) +{ + m_width = gdk_window_get_width(window); + m_height = gdk_window_get_height(window); +} + void wxGTKCairoDCImpl::DoDrawBitmap(const wxBitmap& bitmap, int x, int y, bool useMask) { wxCHECK_RET(IsOk(), "invalid DC"); @@ -343,9 +349,7 @@ wxPaintDCImpl::wxPaintDCImpl(wxPaintDC* owner, wxWindow* window) { cairo_t* cr = window->GTKPaintContext(); wxCHECK_RET(cr, "using wxPaintDC without being in a native paint event"); - GdkWindow* gdkWindow = gtk_widget_get_window(window->m_wxwindow); - m_width = gdk_window_get_width(gdkWindow); - m_height = gdk_window_get_height(gdkWindow); + InitSize(gtk_widget_get_window(window->m_wxwindow)); wxGraphicsContext* gc = wxGraphicsContext::CreateFromNative(cr); gc->EnableOffset(m_contentScaleFactor <= 1); SetGraphicsContext(gc); @@ -356,8 +360,8 @@ wxScreenDCImpl::wxScreenDCImpl(wxScreenDC* owner) : wxGTKCairoDCImpl(owner, 0) { GdkWindow* window = gdk_get_default_root_window(); - m_width = gdk_window_get_width(window); - m_height = gdk_window_get_height(window); + InitSize(window); + cairo_t* cr = gdk_cairo_create(window); wxGraphicsContext* gc = wxGraphicsContext::CreateFromNative(cr); cairo_destroy(cr);