]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
Clients Menus and Slits are all 'ObWindow's now.
[chaz/openbox] / openbox / action.c
index 1740d1b131fddd29d14bab4ab1feb9561288ca7f..6206ccf4ac0288afa4cf0911d1d6d41a6fa723d5 100644 (file)
@@ -1,12 +1,10 @@
 #include "client.h"
-#include "grab.h"
 #include "focus.h"
 #include "moveresize.h"
 #include "menu.h"
 #include "prop.h"
 #include "stacking.h"
 #include "frame.h"
-#include "framerender.h"
 #include "screen.h"
 #include "action.h"
 #include "dispatch.h"
@@ -224,14 +222,14 @@ void action_focusraise(union ActionData *data)
 {
     if (data->client.c) {
         client_focus(data->client.c);
-        stacking_raise(data->client.c);
+        stacking_raise(CLIENT_AS_WINDOW(data->client.c));
     }
 }
 
 void action_raise(union ActionData *data)
 {
     if (data->client.c)
-        stacking_raise(data->client.c);
+        stacking_raise(CLIENT_AS_WINDOW(data->client.c));
 }
 
 void action_unshaderaise(union ActionData *data)
@@ -240,7 +238,7 @@ void action_unshaderaise(union ActionData *data)
         if (data->client.c->shaded)
             client_shade(data->client.c, FALSE);
         else
-            stacking_raise(data->client.c);
+            stacking_raise(CLIENT_AS_WINDOW(data->client.c));
     }
 }
 
@@ -248,7 +246,7 @@ void action_shadelower(union ActionData *data)
 {
     if (data->client.c) {
         if (data->client.c->shaded)
-            stacking_lower(data->client.c);
+            stacking_lower(CLIENT_AS_WINDOW(data->client.c));
         else
             client_shade(data->client.c, TRUE);
     }
@@ -257,7 +255,7 @@ void action_shadelower(union ActionData *data)
 void action_lower(union ActionData *data)
 {
     if (data->client.c)
-        stacking_lower(data->client.c);
+        stacking_lower(CLIENT_AS_WINDOW(data->client.c));
 }
 
 void action_close(union ActionData *data)
@@ -524,32 +522,48 @@ static guint translate_row_col(guint r, guint c)
     case Orientation_Horz:
         switch (screen_desktop_layout.start_corner) {
         case Corner_TopLeft:
-            return r * screen_desktop_layout.columns + c;
+            return r % screen_desktop_layout.rows *
+                screen_desktop_layout.columns +
+                c % screen_desktop_layout.columns;
         case Corner_BottomLeft:
-            return (screen_desktop_layout.rows - 1 - r) *
-                screen_desktop_layout.columns + c;
+            return (screen_desktop_layout.rows - 1 -
+                    r % screen_desktop_layout.rows) *
+                screen_desktop_layout.columns +
+                c % screen_desktop_layout.columns;
         case Corner_TopRight:
-            return r * screen_desktop_layout.columns +
-                (screen_desktop_layout.columns - 1 - c);
+            return r % screen_desktop_layout.rows *
+                screen_desktop_layout.columns +
+                (screen_desktop_layout.columns - 1 -
+                 c % screen_desktop_layout.columns);
         case Corner_BottomRight:
-            return (screen_desktop_layout.rows - 1 - r) *
+            return (screen_desktop_layout.rows - 1 -
+                    r % screen_desktop_layout.rows) *
                 screen_desktop_layout.columns +
-                (screen_desktop_layout.columns - 1 - c);
+                (screen_desktop_layout.columns - 1 -
+                 c % screen_desktop_layout.columns);
         }
     case Orientation_Vert:
         switch (screen_desktop_layout.start_corner) {
         case Corner_TopLeft:
-            return c * screen_desktop_layout.rows + r;
+            return c % screen_desktop_layout.columns *
+                screen_desktop_layout.rows +
+                r % screen_desktop_layout.rows;
         case Corner_BottomLeft:
-            return c * screen_desktop_layout.rows +
-                (screen_desktop_layout.rows - 1 - r);
+            return c % screen_desktop_layout.columns *
+                screen_desktop_layout.rows +
+                (screen_desktop_layout.rows - 1 -
+                 r % screen_desktop_layout.rows);
         case Corner_TopRight:
-            return (screen_desktop_layout.columns - 1 - c) *
-                screen_desktop_layout.rows + r;
+            return (screen_desktop_layout.columns - 1 -
+                    c % screen_desktop_layout.columns) *
+                screen_desktop_layout.rows +
+                r % screen_desktop_layout.rows;
         case Corner_BottomRight:
-            return (screen_desktop_layout.columns - 1 - c) *
+            return (screen_desktop_layout.columns - 1 -
+                    c % screen_desktop_layout.columns) *
                 screen_desktop_layout.rows +
-                (screen_desktop_layout.rows - 1 - r);
+                (screen_desktop_layout.rows - 1 -
+                 r % screen_desktop_layout.rows);
         }
     }
     g_assert_not_reached();
@@ -562,13 +576,13 @@ void action_next_desktop_column(union ActionData *data)
 
     cur_row_col(&r, &c);
     ++c;
+    if (c >= screen_desktop_layout.columns)
+        c = 0;
     d = translate_row_col(r, c);
     if (d >= screen_num_desktops) {
         if (!data->nextprevdesktop.wrap) return;
-        c = 0;
-    }
-    if (d >= screen_num_desktops)
         ++c;
+    }
     d = translate_row_col(r, c);
     if (d < screen_num_desktops)
         screen_set_desktop(d);
@@ -580,13 +594,13 @@ void action_previous_desktop_column(union ActionData *data)
 
     cur_row_col(&r, &c);
     --c;
+    if (c >= screen_desktop_layout.columns)
+        c = screen_desktop_layout.columns - 1;
     d = translate_row_col(r, c);
     if (d >= screen_num_desktops) {
         if (!data->nextprevdesktop.wrap) return;
-        c = screen_desktop_layout.columns - 1;
-    }
-    if (d >= screen_num_desktops)
         --c;
+    }
     d = translate_row_col(r, c);
     if (d < screen_num_desktops)
         screen_set_desktop(d);
@@ -598,13 +612,13 @@ void action_next_desktop_row(union ActionData *data)
 
     cur_row_col(&r, &c);
     ++r;
+    if (r >= screen_desktop_layout.rows)
+        r = 0;
     d = translate_row_col(r, c);
     if (d >= screen_num_desktops) {
         if (!data->nextprevdesktop.wrap) return;
-        r = 0;
-    }
-    if (d >= screen_num_desktops)
         ++r;
+    }
     d = translate_row_col(r, c);
     if (d < screen_num_desktops)
         screen_set_desktop(d);
@@ -616,13 +630,13 @@ void action_previous_desktop_row(union ActionData *data)
 
     cur_row_col(&r, &c);
     --r;
+    if (r >= screen_desktop_layout.rows)
+        r = screen_desktop_layout.rows - 1;
     d = translate_row_col(r, c);
     if (d >= screen_num_desktops) {
         if (!data->nextprevdesktop.wrap) return;
-        c = screen_desktop_layout.rows - 1;
-    }
-    if (d >= screen_num_desktops)
         --r;
+    }
     d = translate_row_col(r, c);
     if (d < screen_num_desktops)
         screen_set_desktop(d);
@@ -667,49 +681,11 @@ void action_showmenu(union ActionData *data)
     }
 }
 
-static void popup_cycle(Client *c, gboolean hide)
-{
-    XSetWindowAttributes attrib;
-    static Window coords = None;
-
-    if (coords == None) {
-        attrib.override_redirect = TRUE;
-        coords = XCreateWindow(ob_display, ob_root,
-                               0, 0, 1, 1, 0, render_depth, InputOutput,
-                               render_visual, CWOverrideRedirect, &attrib);
-        g_assert(coords != None);
-
-        grab_pointer(TRUE, None);
-
-        XMapWindow(ob_display, coords);
-    }
-
-    if (hide) {
-        XDestroyWindow(ob_display, coords);
-        coords = None;
-
-        grab_pointer(FALSE, None);
-    } else {
-        Rect *a;
-        Size s;
-
-        a = screen_area(c->desktop);
-
-        framerender_size_popup_label(c->title, &s);
-        XMoveResizeWindow(ob_display, coords,
-                          a->x + (a->width - s.width) / 2,
-                          a->y + (a->height - s.height) / 2,
-                          s.width, s.height);
-        framerender_popup_label(coords, &s, c->title);
-    }
-}
-
 void action_cycle_windows(union ActionData *data)
 {
     Client *c;
     
     c = focus_cycle(data->cycle.forward, data->cycle.linear, data->cycle.final,
                     data->cycle.cancel);
-    popup_cycle(c, !c || data->cycle.final || data->cycle.cancel);
 }
 
This page took 0.025316 seconds and 4 git commands to generate.