From 1a547a566eba5943f9e4d9987baf4aee80846dd1 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Sun, 10 Sep 2017 16:07:49 +0100 Subject: hidpi+gtk3: move setting the opengl slide viewport MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit to when the window size is set, and adjust to gtk3 hidpi scaling factor Change-Id: Id9bd0defd0b6ae640ac57f88133d954202d4bcc3 Reviewed-on: https://gerrit.libreoffice.org/42143 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- vcl/source/opengl/OpenGLContext.cxx | 11 +++++++++-- vcl/unx/gtk3/gtk3gtkinst.cxx | 13 +++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) (limited to 'vcl') diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index d2a5fc8a963b..d5ade0408fc5 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -333,14 +333,21 @@ void OpenGLContext::restoreDefaultFramebuffer() void OpenGLContext::setWinPosAndSize(const Point &rPos, const Size& rSize) { - if(m_xWindow) + if (m_xWindow) m_xWindow->SetPosSizePixel(rPos, rSize); - if( m_pChildWindow ) + if (m_pChildWindow) m_pChildWindow->SetPosSizePixel(rPos, rSize); GLWindow& rGLWin = getModifiableOpenGLWindow(); rGLWin.Width = rSize.Width(); rGLWin.Height = rSize.Height(); + adjustToNewSize(); +} + +void OpenGLContext::adjustToNewSize() +{ + const GLWindow& rGLWin = getOpenGLWindow(); + glViewport(0, 0, rGLWin.Width, rGLWin.Height); } void OpenGLContext::setWinSize(const Size& rSize) diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 2e76077521fc..72b71c9d7519 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -978,6 +978,19 @@ private: } #endif + virtual void adjustToNewSize() override + { +#if GTK_CHECK_VERSION(3,16,0) + if (m_pGLArea) + { + int scale = gtk_widget_get_scale_factor(m_pGLArea); + int width = m_aGLWin.Width * scale; + int height = m_aGLWin.Height * scale; + glViewport(0, 0, width, height); + } +#endif + } + virtual void makeCurrent() override { if (isCurrent()) -- cgit