summaryrefslogtreecommitdiff
path: root/vcl/unx/generic/gdi/dtint.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx/generic/gdi/dtint.cxx')
-rw-r--r--vcl/unx/generic/gdi/dtint.cxx139
1 files changed, 139 insertions, 0 deletions
diff --git a/vcl/unx/generic/gdi/dtint.cxx b/vcl/unx/generic/gdi/dtint.cxx
new file mode 100644
index 000000000000..d14389cd0438
--- /dev/null
+++ b/vcl/unx/generic/gdi/dtint.cxx
@@ -0,0 +1,139 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_vcl.hxx"
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <dlfcn.h>
+
+#include "osl/file.h"
+#include "osl/process.h"
+#include "osl/security.h"
+
+#include "vcl/svapp.hxx"
+
+#include "unx/salunx.h"
+#include <X11/Xatom.h>
+#ifdef USE_CDE
+#include "unx/cdeint.hxx"
+#endif
+#include "unx/dtint.hxx"
+#include "unx/saldisp.hxx"
+#include "unx/saldata.hxx"
+#include "unx/wmadaptor.hxx"
+
+#include "dtsetenum.hxx"
+
+#include <set>
+#include <stdio.h>
+
+// NETBSD has no RTLD_GLOBAL
+#ifndef RTLD_GLOBAL
+#define DLOPEN_MODE (RTLD_LAZY)
+#else
+#define DLOPEN_MODE (RTLD_GLOBAL | RTLD_LAZY)
+#endif
+
+
+using namespace rtl;
+using namespace vcl_sal;
+
+String DtIntegrator::aHomeDir;
+
+DtIntegrator::DtIntegrator() :
+ meType( DtGeneric ),
+ mnSystemLookCommandProcess( -1 )
+{
+ mpSalDisplay = GetX11SalData()->GetDisplay();
+ mpDisplay = mpSalDisplay->GetDisplay();
+ OUString aDir;
+ oslSecurity aCur = osl_getCurrentSecurity();
+ if( aCur )
+ {
+ osl_getHomeDir( aCur, &aDir.pData );
+ osl_freeSecurityHandle( aCur );
+ OUString aSysDir;
+ osl_getSystemPathFromFileURL( aDir.pData, &aSysDir.pData );
+ aHomeDir = aSysDir;
+ }
+}
+
+DtIntegrator::~DtIntegrator()
+{
+}
+
+DtIntegrator* DtIntegrator::CreateDtIntegrator()
+{
+ /*
+ * #i22061# override desktop detection
+ * if environment variable OOO_FORCE_DESKTOP is set
+ * to one of "cde" "kde" "gnome" then autodetection
+ * is overridden.
+ */
+ static const char* pOverride = getenv( "OOO_FORCE_DESKTOP" );
+ if( pOverride && *pOverride )
+ {
+ OString aOver( pOverride );
+
+#if USE_CDE
+ if( aOver.equalsIgnoreAsciiCase( "cde" ) )
+ return new CDEIntegrator();
+#endif
+ if( aOver.equalsIgnoreAsciiCase( "none" ) )
+ return new DtIntegrator();
+ }
+
+#ifdef USE_CDE
+ void* pLibrary = NULL;
+
+ // check dt type
+ // CDE
+ SalDisplay* pSalDisplay = GetX11SalData()->GetDisplay();
+ Display* pDisplay = pSalDisplay->GetDisplay();
+ Atom nDtAtom = XInternAtom( pDisplay, "_DT_WM_READY", True );
+ if( nDtAtom && ( pLibrary = dlopen( "/usr/dt/lib/libDtSvc.so", DLOPEN_MODE ) ) )
+ {
+ dlclose( pLibrary );
+ return new CDEIntegrator();
+ }
+#endif
+
+ // default: generic implementation
+ return new DtIntegrator();
+}
+
+void DtIntegrator::GetSystemLook( AllSettings& rSettings )
+{
+ // #i48001# set a default blink rate
+ StyleSettings aStyleSettings = rSettings.GetStyleSettings();
+ aStyleSettings.SetCursorBlinkTime( 500 );
+ rSettings.SetStyleSettings( aStyleSettings );
+}