summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--m4/openbox.m48
-rw-r--r--openbox/action.c14
-rw-r--r--openbox/menu.c8
3 files changed, 23 insertions, 7 deletions
diff --git a/m4/openbox.m4 b/m4/openbox.m4
index 7c19ab4b..db592e91 100644
--- a/m4/openbox.m4
+++ b/m4/openbox.m4
@@ -61,12 +61,18 @@ AC_DEFUN([OB_COMPILER_FLAGS],
FLAGS=""
+ if test "$DEBUG" = "yes"; then
+ FLAGS="-DDEBUG"
+ else
+ FLAGS="-DNDEBUG -DG_DISABLE_ASSERT"
+ fi
+
# Check what compiler we are using
AC_MSG_CHECKING([for GNU CC])
if test "$GCC" = "yes"; then
AC_MSG_RESULT([yes])
if test "$DEBUG" = "yes"; then
- FLAGS="-g -fno-inline"
+ FLAGS="$FLAGS -g -fno-inline"
FLAGS="$FLAGS -Wall -Wsign-compare -Waggregate-return"
FLAGS="$FLAGS -Wcast-qual -Wbad-function-cast -Wpointer-arith"
# for Python.h
diff --git a/openbox/action.c b/openbox/action.c
index f7389cb3..5f60019e 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -798,6 +798,13 @@ ActionString actionstrings[] =
}
};
+/* only key bindings can be interactive. thus saith the xor.
+ because of how the mouse is grabbed, mouse events dont even get
+ read during interactive events, so no dice! >:) */
+#define INTERACTIVE_LIMIT(a, uact) \
+ if (uact != OB_USER_ACTION_KEYBOARD_KEY) \
+ a->data.any.interactive = FALSE;
+
ObAction *action_from_string(const gchar *name, ObUserAction uact)
{
ObAction *a = NULL;
@@ -810,11 +817,7 @@ ObAction *action_from_string(const gchar *name, ObUserAction uact)
a = action_new(actionstrings[i].func);
if (actionstrings[i].setup)
actionstrings[i].setup(&a, uact);
- /* only key bindings can be interactive. thus saith the xor.
- because of how the mouse is grabbed, mouse events dont even get
- read during interactive events, so no dice! >:) */
- if (uact != OB_USER_ACTION_KEYBOARD_KEY)
- a->data.any.interactive = FALSE;
+ INTERACTIVE_LIMIT(a, uact);
break;
}
if (!exist)
@@ -889,6 +892,7 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node,
act->data.cycle.dialog = parse_bool(doc, n);
}
}
+ INTERACTIVE_LIMIT(act, uact);
g_free(actname);
}
return act;
diff --git a/openbox/menu.c b/openbox/menu.c
index 5efacc2a..1585a56d 100644
--- a/openbox/menu.c
+++ b/openbox/menu.c
@@ -290,7 +290,13 @@ void menu_show(gchar *name, gint x, gint y, ObClient *client)
menu_frame_hide_all();
frame = menu_frame_new(self, client);
- menu_frame_move(frame, x - ob_rr_theme->bwidth, y - ob_rr_theme->bwidth);
+ if (client && x < 0 && y < 0)
+ menu_frame_move(frame,
+ client->frame->area.x + client->frame->size.left,
+ client->frame->area.y + client->frame->size.top);
+ else
+ menu_frame_move(frame,
+ x - ob_rr_theme->bwidth, y - ob_rr_theme->bwidth);
menu_frame_show(frame, NULL);
if (frame->entries)
menu_frame_select_next(frame);