From d967cc35fd0c77d9f3dd0b3d0c7df850db6ec274 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 18 Feb 2016 11:25:26 +0000 Subject: Resolves: tdf#97904 opengl stuff isn't implemented for gtk3 Change-Id: I1abbceebadf320f28955f54058b2d0ebfc79b9bc --- cui/source/options/optgdlg.cxx | 10 ++++++++++ include/vcl/svapp.hxx | 6 ++++++ vcl/inc/svdata.hxx | 1 + vcl/inc/unx/salinst.h | 2 +- vcl/source/app/svapp.cxx | 9 +++++++++ vcl/source/app/svmain.cxx | 5 +++++ vcl/unx/generic/app/salinst.cxx | 9 +++++++++ vcl/unx/gtk/gtkinst.cxx | 8 ++++++++ vcl/unx/kde4/KDESalInstance.cxx | 8 ++++++++ vcl/unx/kde4/KDESalInstance.hxx | 2 +- 10 files changed, 58 insertions(+), 2 deletions(-) diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx index 8e2bd660b9dc..f4d4d5cc771b 100644 --- a/cui/source/options/optgdlg.cxx +++ b/cui/source/options/optgdlg.cxx @@ -629,6 +629,14 @@ OfaViewTabPage::OfaViewTabPage(vcl::Window* pParent, const SfxItemSet& rSet) get(m_pMousePosLB, "mousepos"); get(m_pMouseMiddleLB, "mousemiddle"); + if (Application::GetToolkitName() == "gtk3") + { + m_pUseOpenGL->Hide(); + m_pForceOpenGL->Hide(); + m_pOpenGLStatusEnabled->Hide(); + m_pOpenGLStatusDisabled->Hide(); + } + #if defined( UNX ) m_pFontAntiAliasing->SetToggleHdl( LINK( this, OfaViewTabPage, OnAntialiasingToggled ) ); #else @@ -969,6 +977,8 @@ void OfaViewTabPage::Reset( const SfxItemSet* ) void OfaViewTabPage::UpdateOGLStatus() { + if (Application::GetToolkitName() == "gtk3") + return; // Easier than a custom translation string. bool bEnabled = OpenGLWrapper::isVCLOpenGLEnabled(); m_pOpenGLStatusEnabled->Show(bEnabled); diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx index dcb805739721..c4e06cbf5d8d 100644 --- a/include/vcl/svapp.hxx +++ b/include/vcl/svapp.hxx @@ -981,6 +981,12 @@ public: */ static OUString GetDisplayName(); + /** Get the toolkit's name. e.g. gtk3 + + @returns The toolkit name. + */ + static OUString GetToolkitName(); + /** Get the number of screens available for the display. @returns The number of screens available. diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index 628f45dcff8b..42df79e8d4b3 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -113,6 +113,7 @@ struct ImplSVAppData OUString* mpAppName; // Application name OUString* mpAppFileName; // Abs. Application FileName OUString* mpDisplayName; // Application Display Name + OUString* mpToolkitName; // Toolkit Name Help* mpHelp; // Application help PopupMenu* mpActivePopupMenu; // Actives Popup-Menu (in Execute) ImplIdleMgr* mpIdleMgr; // Idle-Manager diff --git a/vcl/inc/unx/salinst.h b/vcl/inc/unx/salinst.h index ac90ca2718c9..85d7ff6bc704 100644 --- a/vcl/inc/unx/salinst.h +++ b/vcl/inc/unx/salinst.h @@ -45,7 +45,7 @@ protected: SalXLib *mpXLib; public: - X11SalInstance( SalYieldMutex* pMutex ) : SalGenericInstance( pMutex ), mpXLib(NULL) {} + explicit X11SalInstance(SalYieldMutex* pMutex); virtual ~X11SalInstance(); virtual SalFrame* CreateChildFrame( SystemParentData* pParent, SalFrameStyleFlags nStyle ) override; diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index 2ed5292eb121..10ad44198332 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -1399,6 +1399,15 @@ void Application::SetDialogScaleX( short nScale ) pSVData->maGDIData.mnAppFontX += (pSVData->maGDIData.mnAppFontX*nScale)/100; } +OUString Application::GetToolkitName() +{ + ImplSVData* pSVData = ImplGetSVData(); + if ( pSVData->maAppData.mpToolkitName ) + return *(pSVData->maAppData.mpToolkitName); + else + return OUString(); +} + void Application::SetDefDialogParent( vcl::Window* pWindow ) { ImplGetSVData()->maWinData.mpDefDialogParent = pWindow; diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index c7bcb9191dcb..1546bc39af6c 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -504,6 +504,11 @@ void DeInitVCL() delete pSVData->maAppData.mpDisplayName; pSVData->maAppData.mpDisplayName = nullptr; } + if ( pSVData->maAppData.mpToolkitName ) + { + delete pSVData->maAppData.mpToolkitName; + pSVData->maAppData.mpToolkitName = nullptr; + } if ( pSVData->maAppData.mpEventListeners ) { delete pSVData->maAppData.mpEventListeners; diff --git a/vcl/unx/generic/app/salinst.cxx b/vcl/unx/generic/app/salinst.cxx index 0ead21f1f7b6..c94f8007fd98 100644 --- a/vcl/unx/generic/app/salinst.cxx +++ b/vcl/unx/generic/app/salinst.cxx @@ -65,6 +65,15 @@ extern "C" } } +X11SalInstance::X11SalInstance(SalYieldMutex* pMutex) + : SalGenericInstance(pMutex) + , mpXLib(nullptr) +{ + ImplSVData* pSVData = ImplGetSVData(); + delete pSVData->maAppData.mpToolkitName; + pSVData->maAppData.mpToolkitName = new OUString("x11"); +} + X11SalInstance::~X11SalInstance() { // close session management diff --git a/vcl/unx/gtk/gtkinst.cxx b/vcl/unx/gtk/gtkinst.cxx index a1b752289137..a37102e0f30f 100644 --- a/vcl/unx/gtk/gtkinst.cxx +++ b/vcl/unx/gtk/gtkinst.cxx @@ -186,6 +186,14 @@ void GtkInstance::EnsureInit() InitAtkBridge(); + ImplSVData* pSVData = ImplGetSVData(); + delete pSVData->maAppData.mpToolkitName; +#if GTK_CHECK_VERSION(3,0,0) + pSVData->maAppData.mpToolkitName = new OUString("gtk3"); +#else + pSVData->maAppData.mpToolkitName = new OUString("gtk2"); +#endif + bNeedsInit = false; } diff --git a/vcl/unx/kde4/KDESalInstance.cxx b/vcl/unx/kde4/KDESalInstance.cxx index e28fb2d70328..86c9d8f2e50f 100644 --- a/vcl/unx/kde4/KDESalInstance.cxx +++ b/vcl/unx/kde4/KDESalInstance.cxx @@ -26,6 +26,14 @@ using namespace com::sun::star; +KDESalInstance::KDESalInstance(SalYieldMutex* pMutex) + : X11SalInstance(pMutex) +{ + ImplSVData* pSVData = ImplGetSVData(); + delete pSVData->maAppData.mpToolkitName; + pSVData->maAppData.mpToolkitName = new OUString("kde4"); +} + SalFrame* KDESalInstance::CreateFrame( SalFrame *pParent, SalFrameStyleFlags nState ) { return new KDESalFrame( pParent, nState ); diff --git a/vcl/unx/kde4/KDESalInstance.hxx b/vcl/unx/kde4/KDESalInstance.hxx index 8eabb3be8981..aaa8d2f46d5b 100644 --- a/vcl/unx/kde4/KDESalInstance.hxx +++ b/vcl/unx/kde4/KDESalInstance.hxx @@ -27,7 +27,7 @@ class SalFrame; class KDESalInstance : public X11SalInstance { public: - explicit KDESalInstance( SalYieldMutex* pMutex ) : X11SalInstance( pMutex ) {} + explicit KDESalInstance(SalYieldMutex* pMutex); virtual ~KDESalInstance() {} virtual SalFrame* CreateFrame( SalFrame* pParent, SalFrameStyleFlags nStyle ) override; -- cgit v1.2.3