diff --git a/src/ui/uxmanager.cpp b/src/ui/uxmanager.cpp
index 48ff9dca0237c9b3d7740749d6fa4981baeb4265..3c6f85b915ad9b30ef142626768108159fb1740f 100644 (file)
--- a/src/ui/uxmanager.cpp
+++ b/src/ui/uxmanager.cpp
#include "util/ege-tags.h"
#include "widgets/toolbox.h"
#include "widgets/desktop-widget.h"
+#include "preferences.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;
}
-UXManager::UXManager()
+UXManager::UXManager() :
+ floatwindowIssues(false)
{
ege::TagSet tags;
tags.setLang("en");
tags.addTag(ege::Tag("General"));
tags.addTag(ege::Tag("Icons"));
+
+#if defined(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 defined(GDK_WINDOWING_WIN32)
+ floatwindowIssues = true;
+#endif // GDK_WINDOWING_WIN32
}
UXManager::~UXManager()
{
}
+
+bool UXManager::isFloatWindowProblem() const
+{
+ return floatwindowIssues;
+}
+
void UXManager::setTask(SPDesktop* dt, gint val)
{
- GtkOrientation orientation = (val == 0)? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL;
for (vector<SPDesktopWidget*>::iterator it = dtws.begin(); it != dtws.end(); ++it) {
- if ((*it)->desktop == dt) {
- vector<GtkWidget*>& boxes = trackedBoxes[dt];
- for (vector<GtkWidget*>::iterator it2 = boxes.begin(); it2 != boxes.end(); ++it2) {
- gint id = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(*it2), "BarIdValue"));
- if (id != 1) {
- //ToolboxFactory::setOrientation(*it2, orientation);
- }
+ SPDesktopWidget* dtw = *it;
+
+ gboolean notDone = Inkscape::Preferences::get()->getBool("/options/workarounds/dynamicnotdone", false);
+
+ if (dtw->desktop == dt) {
+ switch (val) {
+ default:
+ case 0:
+ dtw->setToolboxPosition("ToolToolbar", GTK_POS_LEFT);
+ dtw->setToolboxPosition("CommandsToolbar", GTK_POS_TOP);
+ if (notDone) {
+ dtw->setToolboxPosition("AuxToolbar", GTK_POS_TOP);
+ }
+ dtw->setToolboxPosition("SnapToolbar", GTK_POS_TOP);
+ break;
+ case 1:
+ dtw->setToolboxPosition("ToolToolbar", GTK_POS_TOP);
+ dtw->setToolboxPosition("CommandsToolbar", GTK_POS_LEFT);
+ if (notDone) {
+ dtw->setToolboxPosition("AuxToolbar", GTK_POS_TOP);
+ }
+ dtw->setToolboxPosition("SnapToolbar", GTK_POS_RIGHT);
+ break;
+ case 2:
+ dtw->setToolboxPosition("ToolToolbar", GTK_POS_LEFT);
+ dtw->setToolboxPosition("CommandsToolbar", GTK_POS_RIGHT);
+ dtw->setToolboxPosition("SnapToolbar", GTK_POS_RIGHT);
+ if (notDone) {
+ dtw->setToolboxPosition("AuxToolbar", GTK_POS_RIGHT);
+ }
}
- break;
}
}
}
for (vector<GtkWidget*>::const_iterator it = toolboxes.begin(); it != toolboxes.end(); ++it ) {
GtkWidget* toolbox = *it;
- ToolboxFactory::setToolboxDesktop( toolbox, desktop );
+ ToolboxFactory::setToolboxDesktop( toolbox, desktop );
vector<GtkWidget*>& tracked = trackedBoxes[desktop];
if (find(tracked.begin(), tracked.end(), toolbox) == tracked.end()) {
tracked.push_back(toolbox);