]> Dogcows Code - chaz/openbox/blobdiff - openbox/event.c
don't activate on raise
[chaz/openbox] / openbox / event.c
index 12ecdac0398bbc5d7b6ecf2f78c9e8ff19448a93..a75d264af2942214bcf9f00b0c2455f3dde9bb80 100644 (file)
@@ -36,7 +36,6 @@
 #include "propwin.h"
 #include "mouse.h"
 #include "mainloop.h"
-#include "framerender.h"
 #include "focus.h"
 #include "focus_cycle.h"
 #include "moveresize.h"
@@ -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 */
@@ -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,13 +1418,13 @@ 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);
 
                     /* send a synthetic ConfigureNotify, cuz this is supposed
                        to be like a ConfigureRequest. */
-                    client_reconfigure(client);
+                    client_reconfigure(client, TRUE);
                 } else
                     ob_debug_type(OB_DEBUG_APP_BUGS,
                                   "_NET_RESTACK_WINDOW sent for window %s "
@@ -1481,25 +1471,15 @@ static void event_handle_client(ObClient *client, XEvent *e)
 
         msgtype = e->xproperty.atom;
         if (msgtype == XA_WM_NORMAL_HINTS) {
-            gint x, y, w, h, lw, lh;
-
             ob_debug("Update NORMAL hints\n");
             client_update_normal_hints(client);
             /* 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 */
-            RECT_TO_DIMS(client->area, x, y, w, h);
-            client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
-            if (!RECT_EQUAL_DIMS(client->area, x, y, w, h)) {
-                gulong ignore_start;
-
-                ob_debug("Configuring client 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);
-            }
+            /* 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);
         } else if (msgtype == XA_WM_TRANSIENT_FOR) {
@@ -1549,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
     }
This page took 0.024839 seconds and 4 git commands to generate.