#include <string>
using std::string;
-#include "i18n.hh"
#include "blackbox.hh"
-#include "Basemenu.hh"
-#include "Clientmenu.hh"
-#include "GCCache.hh"
-#include "Image.hh"
-#include "Rootmenu.hh"
-#include "Screen.hh"
-#include "Slit.hh"
-#include "Toolbar.hh"
-#include "Util.hh"
-#include "Window.hh"
-#include "Workspace.hh"
-#include "Workspacemenu.hh"
-#include "XAtom.hh"
+#include "basemenu.hh"
+#include "clientmenu.hh"
+#include "gccache.hh"
+#include "image.hh"
+#include "rootmenu.hh"
+#include "screen.hh"
+#include "slit.hh"
+#include "toolbar.hh"
+#include "util.hh"
+#include "window.hh"
+#include "workspace.hh"
+#include "workspacemenu.hh"
+#include "xatom.hh"
Blackbox *blackbox;
if (! rc) rc = "~/.openbox/rc";
rc_file = expandTilde(rc);
config.setFile(rc_file);
- if (! menu) menu = "~/.openbox/menu";
- menu_file = expandTilde(menu);
+
+ string rcmenu;
+ if (! menu) {
+ //have to come up with something better than this
+ config.load();
+ if (! config.getValue("session.menuFile", rcmenu))
+ rcmenu = "~/.openbox/menu";
+ } else {
+ rcmenu = menu;
+ }
+ menu_file = expandTilde(rcmenu.c_str());
no_focus = False;
}
}
}
+ } else if (e->xclient.message_type ==
+ xatom->getAtom(XAtom::openbox_show_root_menu) ||
+ e->xclient.message_type ==
+ xatom->getAtom(XAtom::openbox_show_workspace_menu)) {
+ // find the screen the mouse is on
+ int x, y;
+ ScreenList::iterator it, end = screenList.end();
+ for (it = screenList.begin(); it != end; ++it) {
+ Window w;
+ int i;
+ unsigned int m;
+ if (XQueryPointer(getXDisplay(), (*it)->getRootWindow(),
+ &w, &w, &x, &y, &i, &i, &m))
+ break;
+ }
+ if (it != end) {
+ if (e->xclient.message_type ==
+ xatom->getAtom(XAtom::openbox_show_root_menu))
+ (*it)->showRootMenu(x, y);
+ else
+ (*it)->showWorkspaceMenu(x, y);
+ }
}
}
XShapeEvent *shape_event = (XShapeEvent *) e;
BlackboxWindow *win = searchWindow(e->xany.window);
- if (win)
+ if (win && shape_event->kind == ShapeBounding)
win->shapeEvent(shape_event);
}
#endif // SHAPE