summaryrefslogtreecommitdiffstats
path: root/src/ui/uxmanager.cpp
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2010-01-12 09:59:58 +0000
committerJon A. Cruz <jon@joncruz.org>2010-01-12 09:59:58 +0000
commit36c2b2febc6c0c11991849232c907d5573600935 (patch)
treecc2d14a07b4903b2b51a1d3298e7d0062c3278f6 /src/ui/uxmanager.cpp
parentEnabling now that some have confirmed proper functionality on 64-bit. (diff)
downloadinkscape-36c2b2febc6c0c11991849232c907d5573600935.tar.gz
inkscape-36c2b2febc6c0c11991849232c907d5573600935.zip
Initial cut of disabling floating windows on window managers with problems.
(bzr r8971)
Diffstat (limited to 'src/ui/uxmanager.cpp')
-rw-r--r--src/ui/uxmanager.cpp30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/ui/uxmanager.cpp b/src/ui/uxmanager.cpp
index 2153606c1..ddc28a858 100644
--- a/src/ui/uxmanager.cpp
+++ b/src/ui/uxmanager.cpp
@@ -20,9 +20,18 @@
#include "widgets/toolbox.h"
#include "widgets/desktop-widget.h"
+#ifdef GDK_WINDOWING_X11
+#include <gdk/gdkx.h>
+#endif // GDK_WINDOWING_X11
+
using std::map;
using std::vector;
+
+gchar const* KDE_WINDOW_MANAGER_NAME = "KWin";
+gchar const* UNKOWN_WINDOW_MANAGER_NAME = "unknown";
+
+
static vector<SPDesktop*> desktops;
static vector<SPDesktopWidget*> dtws;
static map<SPDesktop*, vector<GtkWidget*> > trackedBoxes;
@@ -43,19 +52,38 @@ UXManager* UXManager::getInstance()
}
-UXManager::UXManager()
+UXManager::UXManager() :
+ floatwindowIssues(false)
{
ege::TagSet tags;
tags.setLang("en");
tags.addTag(ege::Tag("General"));
tags.addTag(ege::Tag("Icons"));
+
+#ifdef GDK_WINDOWING_X11
+ char const* wmName = gdk_x11_screen_get_window_manager_name( gdk_screen_get_default() );
+ //g_message("Window manager is [%s]", wmName);
+
+ //if (g_ascii_strcasecmp( wmName, UNKOWN_WINDOW_MANAGER_NAME ) == 0) {
+ if (g_ascii_strcasecmp( wmName, KDE_WINDOW_MANAGER_NAME ) == 0) {
+ floatwindowIssues = true;
+ }
+#elif GDK_WINDOWING_WIN32
+ floatwindowIssues = true;
+#endif // GDK_WINDOWING_WIN32
}
UXManager::~UXManager()
{
}
+
+bool UXManager::isFloatWindowProblem() const
+{
+ return floatwindowIssues;
+}
+
void UXManager::setTask(SPDesktop* dt, gint val)
{
for (vector<SPDesktopWidget*>::iterator it = dtws.begin(); it != dtws.end(); ++it) {