Add wxGTKCairoDCImpl::SetSize() helper

Avoid repeating gdk_window_get_{width,height}() calls in several places.
This commit is contained in:
Vadim Zeitlin 2018-01-25 14:40:10 +01:00
parent a1cb2eb12a
commit 0be81cb34b
2 changed files with 12 additions and 8 deletions

View File

@ -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);
};

View File

@ -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);