define DEBUG, NDEBUG, and G_DISABLE_ASSERTS
authorDana Jansens <danakj@orodu.net>
Wed, 1 Oct 2003 17:28:12 +0000 (17:28 +0000)
committerDana Jansens <danakj@orodu.net>
Wed, 1 Oct 2003 17:28:12 +0000 (17:28 +0000)
m4/openbox.m4
openbox/action.c
openbox/menu.c

index 7c19ab4..db592e9 100644 (file)
@@ -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
index f7389cb..5f60019 100644 (file)
@@ -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;
index 5efacc2..1585a56 100644 (file)
@@ -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);