]> Dogcows Code - chaz/openbox/blobdiff - openbox/event.c
well.. it compiles..
[chaz/openbox] / openbox / event.c
index 88cccdee41a6357d3c5c2d3ee4eacc79e704bdec..2a12d990781bd6fef6e8b35c12e663b438452cb5 100644 (file)
@@ -22,6 +22,7 @@
 #include "window.h"
 #include "openbox.h"
 #include "dock.h"
+#include "actions.h"
 #include "client.h"
 #include "xerror.h"
 #include "prop.h"
@@ -36,7 +37,6 @@
 #include "propwin.h"
 #include "mouse.h"
 #include "mainloop.h"
-#include "framerender.h"
 #include "focus.h"
 #include "focus_cycle.h"
 #include "moveresize.h"
@@ -809,8 +809,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
            want to deal with them
         */
         if (!(e->xbutton.button == 4 || e->xbutton.button == 5) &&
-            !keyboard_interactively_grabbed() &&
-            !menu_frame_visible)
+            !grab_on_keyboard())
         {
             /* use where the press occured */
             con = frame_context(client, e->xbutton.window, px, py);
@@ -823,23 +822,23 @@ static void event_handle_client(ObClient *client, XEvent *e)
             switch (con) {
             case OB_FRAME_CONTEXT_MAXIMIZE:
                 client->frame->max_press = (e->type == ButtonPress);
-                framerender_frame(client->frame);
+                frame_adjust_state(client->frame);
                 break;
             case OB_FRAME_CONTEXT_CLOSE:
                 client->frame->close_press = (e->type == ButtonPress);
-                framerender_frame(client->frame);
+                frame_adjust_state(client->frame);
                 break;
             case OB_FRAME_CONTEXT_ICONIFY:
                 client->frame->iconify_press = (e->type == ButtonPress);
-                framerender_frame(client->frame);
+                frame_adjust_state(client->frame);
                 break;
             case OB_FRAME_CONTEXT_ALLDESKTOPS:
                 client->frame->desk_press = (e->type == ButtonPress);
-                framerender_frame(client->frame);
+                frame_adjust_state(client->frame);
                 break; 
             case OB_FRAME_CONTEXT_SHADE:
                 client->frame->shade_press = (e->type == ButtonPress);
-                framerender_frame(client->frame);
+                frame_adjust_state(client->frame);
                 break;
             default:
                 /* nothing changes with clicks for any other contexts */
@@ -957,7 +956,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
                           (e->type == EnterNotify ? "Enter" : "Leave"),
                           e->xcrossing.mode,
                           e->xcrossing.detail, (client?client->window:0));
-            if (keyboard_interactively_grabbed())
+            if (grab_on_keyboard())
                 break;
             if (config_focus_follow && config_focus_delay &&
                 /* leave inferior events can happen when the mouse goes onto
@@ -1000,7 +999,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
             frame_adjust_state(client->frame);
             break;
         case OB_FRAME_CONTEXT_FRAME:
-            if (keyboard_interactively_grabbed())
+            if (grab_on_keyboard())
                 break;
             if (e->xcrossing.mode == NotifyGrab ||
                 e->xcrossing.mode == NotifyUngrab ||
@@ -1078,12 +1077,10 @@ static void event_handle_client(ObClient *client, XEvent *e)
                     sibling = WINDOW_AS_CLIENT(win);
             }
 
-            /* activate it rather than just focus it */
             if (!config_focus_under_mouse)
                 ignore_start = event_start_ignore_all_enters();
             stacking_restack_request(client, sibling,
-                                     e->xconfigurerequest.detail,
-                                     TRUE);
+                                     e->xconfigurerequest.detail);
             if (!config_focus_under_mouse)
                 event_end_ignore_all_enters(ignore_start);
 
@@ -1160,7 +1157,6 @@ static void event_handle_client(ObClient *client, XEvent *e)
 
         {
             gint lw,lh;
-            gulong ignore_start;
 
             client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
 
@@ -1179,9 +1175,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
 
             ob_debug("Granting ConfigureRequest x %d y %d w %d h %d\n",
                      x, y, w, h);
-            ignore_start = event_start_ignore_all_enters();
-            client_configure(client, x, y, w, h, FALSE, TRUE);
-            event_end_ignore_all_enters(ignore_start);
+            client_configure(client, x, y, w, h, FALSE, TRUE, TRUE);
         }
         break;
     }
@@ -1264,7 +1258,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
             if ((unsigned)e->xclient.data.l[0] < screen_num_desktops ||
                 (unsigned)e->xclient.data.l[0] == DESKTOP_ALL)
                 client_set_desktop(client, (unsigned)e->xclient.data.l[0],
-                                   FALSE);
+                                   FALSE, FALSE);
         } else if (msgtype == prop_atoms.net_wm_state) {
             gulong ignore_start;
 
@@ -1343,7 +1337,6 @@ static void event_handle_client(ObClient *client, XEvent *e)
                 moveresize_end(TRUE);
         } else if (msgtype == prop_atoms.net_moveresize_window) {
             gint ograv, x, y, w, h;
-            gulong ignore_start;
 
             ograv = client->gravity;
 
@@ -1388,10 +1381,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
 
             client_find_onscreen(client, &x, &y, w, h, FALSE);
 
-            /* ignore enter events caused by these like ob actions do */
-            ignore_start = event_start_ignore_all_enters();
-            client_configure(client, x, y, w, h, FALSE, TRUE);
-            event_end_ignore_all_enters(ignore_start);
+            client_configure(client, x, y, w, h, FALSE, TRUE, FALSE);
 
             client->gravity = ograv;
         } else if (msgtype == prop_atoms.net_restack_window) {
@@ -1428,7 +1418,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
                         ignore_start = event_start_ignore_all_enters();
                     /* just raise, don't activate */
                     stacking_restack_request(client, sibling,
-                                             e->xclient.data.l[2], FALSE);
+                                             e->xclient.data.l[2]);
                     if (!config_focus_under_mouse)
                         event_end_ignore_all_enters(ignore_start);
 
@@ -1486,6 +1476,9 @@ static void event_handle_client(ObClient *client, XEvent *e)
             /* normal hints can make a window non-resizable */
             client_setup_decor_and_functions(client, FALSE);
 
+            /* make sure the client's sizes are within its bounds, but only
+               reconfigure the window if it needs to. emacs will update its
+               normal hints every time it receives a conigurenotify */
             client_reconfigure(client, FALSE);
         } else if (msgtype == XA_WM_HINTS) {
             client_update_wmhints(client);
@@ -1536,7 +1529,7 @@ static void event_handle_client(ObClient *client, XEvent *e)
 #ifdef SHAPE
         if (extensions_shape && e->type == extensions_shape_event_basep) {
             client->shaped = ((XShapeEvent*)e)->shaped;
-            frame_adjust_shape(client->frame);
+            frame_adjust_area(client->frame, FALSE, TRUE, FALSE);
         }
 #endif
     }
@@ -1799,9 +1792,7 @@ static void event_handle_user_input(ObClient *client, XEvent *e)
 
     /* if the keyboard interactive action uses the event then dont
        use it for bindings. likewise is moveresize uses the event. */
-    if (!keyboard_process_interactive_grab(e, &client) &&
-        !(moveresize_in_progress && moveresize_event(e)))
-    {
+    if (!actions_interactive_input_event(e) && !moveresize_event(e)) {
         if (moveresize_in_progress)
             /* make further actions work on the client being
                moved/resized */
@@ -1906,9 +1897,9 @@ static gboolean is_enter_focus_event_ignored(XEvent *e)
 
 void event_cancel_all_key_grabs()
 {
-    if (keyboard_interactively_grabbed()) {
-        keyboard_interactive_cancel();
-        ob_debug("KILLED interactive event\n");
+    if (actions_interactive_act_running()) {
+        actions_interactive_cancel_act();
+        ob_debug("KILLED interactive action\n");
     }
     else if (menu_frame_visible) {
         menu_frame_hide_all();
This page took 0.028253 seconds and 4 git commands to generate.