static void menu_frame_render(ObMenuFrame *self);
static void menu_frame_update(ObMenuFrame *self);
-static Window createWindow(Window parent, unsigned long mask,
+static Window createWindow(Window parent, gulong mask,
XSetWindowAttributes *attrib)
{
return XCreateWindow(ob_display, parent, 0, 0, 1, 1, 0,
if (dx || dy) {
ObMenuFrame *f;
- for (f = self; f; f = f->parent)
+ /* move the current menu frame to fit, but dont touch parents yet */
+ menu_frame_move(self, self->area.x + dx, self->area.y + dy);
+ if (!config_menu_xorstyle)
+ dy = 0; /* if we want to be like xor, move parents in y- *
+ * and x-direction, otherwise just in x-dir */
+ for (f = self->parent; f; f = f->parent)
menu_frame_move(f, f->area.x + dx, f->area.y + dy);
for (f = self->child; f; f = f->child)
menu_frame_move(f, f->area.x + dx, f->area.y + dy);
- XWarpPointer(ob_display, None, None, 0, 0, 0, 0, dx, dy);
+ if (config_menu_warppointer)
+ XWarpPointer(ob_display, None, None, 0, 0, 0, 0, dx, dy);
}
}
menu_frame_render(self);
}
-void menu_frame_show(ObMenuFrame *self, ObMenuFrame *parent)
+gboolean menu_frame_show(ObMenuFrame *self, ObMenuFrame *parent)
{
GList *it;
if (g_list_find(menu_frame_visible, self))
- return;
+ return TRUE;
if (menu_frame_visible == NULL) {
/* no menus shown yet */
if (!grab_pointer(TRUE, OB_CURSOR_NONE))
- return;
+ return FALSE;
if (!grab_keyboard(TRUE)) {
grab_pointer(FALSE, OB_CURSOR_NONE);
- return;
+ return FALSE;
}
}
menu_frame_move_on_screen(self);
XMapWindow(ob_display, self->window);
+
+ return TRUE;
}
void menu_frame_hide(ObMenuFrame *self)