]> git.mdlowis.com Git - proto/anvil.git/commitdiff
changed design slightly to prepare for more acme-like behavior for tiling
authorMichael D. Lowis <mike.lowis@gentex.com>
Wed, 18 Mar 2020 20:24:34 +0000 (16:24 -0400)
committerMichael D. Lowis <mike.lowis@gentex.com>
Wed, 18 Mar 2020 20:24:34 +0000 (16:24 -0400)
anvil.h
mons.c
mouse.c

diff --git a/anvil.h b/anvil.h
index f99fff2266cf68d1a7dfd4283595da54c285f3a2..4349b14b18c06e3f1f8488e004b4cc7476d0cc60 100644 (file)
--- a/anvil.h
+++ b/anvil.h
@@ -26,45 +26,38 @@ Management Notes:
 
     TODO: warp mouse pointer to title bars on new windows
     TODO: implement mouse handling for tiling methods
+    TODO: add logic to add/del columns and retile
 
 Mouse Actions:
     Floating:
         Btn Click 1:
         Btn Drag 1: Move Window
         Btn Click 2: Close Window
-        Btn Click 3:
+        Btn Click 3: Shade/Unshade Window
         Btn Click 4: Lower Window
         Btn Click 5: Raise Window
 
     Monocled:
-        Btn Click 1:
-        Btn Drag 1:
+        Btn Click 1: Switch to stacked (maximize client)
+        Btn Drag 1: Move to column
         Btn Click 2: Close Window
-        Btn Click 3: Lower Window
+        Btn Click 3: Next Window
         Btn Click 4:
         Btn Click 5:
 
     Stacked:
-        Btn Click 1:
-        Btn Drag 1:
+        Btn Click 1: Make client bigger
+        Btn Drag 1: Drag titlebar: resize/move in column or move to column. Drag Border: resize columns
         Btn Click 2: Close Window
-        Btn Click 3:
-        Btn Click 4:
-        Btn Click 5:
+        Btn Click 3: Switch to monocled mode
+        Btn Click 4: Maximize Window
+        Btn Click 5: Maximize Window
 
-    Expanded:
-        Btn Click 1:
-        Btn Drag 1:
-        Btn Click 2: Close Window
-        Btn Click 3:
-        Btn Click 4:
-        Btn Click 5:
 * Monocled mode
     * Opening a new window switches to max-stacked and splits the subsequent max window
     * Left click switches to max-stacked
 * Monocled->Stacked Shows focused window max size and titlebars only for everything else
     * opening a new window splits the expanded one since it is max size
-    *
 
 */
 
@@ -100,14 +93,10 @@ typedef struct Client {
     XSizeHints hints;
 } Client;
 
-enum {
-    TILE_MONOCLE,
-    TILE_STACKED
-} TileMode;
-
 typedef struct Column {
     struct Column* next;
-    int mode, width;
+    int mode, width, nclients;
+    Client* focused;
     Client* clients;
 } Column;
 
diff --git a/mons.c b/mons.c
index 22afdb10634abf285f78e6c5eec16f36e100846e..57d7e48fac45ebf8a58e924d3dcaff4a76b6c840 100644 (file)
--- a/mons.c
+++ b/mons.c
@@ -28,7 +28,6 @@ void mons_init(void)
         for (int i = 0; i < 10; i++)
         {
             Column* col = ecalloc(1, sizeof(Column));
-            col->mode = TILE_STACKED,
             col->width = m->w;
             Workspace* wspace = ecalloc(1, sizeof(Workspace));
             wspace->columns = col;
@@ -83,11 +82,11 @@ void mons_addclient(Client* c)
     else
     {
         Column* col = pickcol(mon->cspace->columns, ptrx - mon->x);
-        if (col->mode == TILE_MONOCLE)
+        if (col->focused)
         {
             monocled_add(mon, col, c);
         }
-        else if (col->mode == TILE_STACKED)
+        else
         {
             stacked_add(mon, col, c);
         }
@@ -105,17 +104,13 @@ void mons_delclient(Client* c)
         {
             loc.workspace->floating = delclient(loc.workspace->floating, c);
         }
-        else if (loc.column->mode == TILE_MONOCLE)
+        else if (loc.column->focused)
         {
             monocled_del(loc.monitor, loc.column, loc.client);
         }
-        else if (loc.column->mode == TILE_STACKED)
-        {
-            stacked_del(loc.monitor, loc.column, loc.client);
-        }
         else
         {
-            assert(0);
+            stacked_del(loc.monitor, loc.column, loc.client);
         }
         xfree(c->name);
         XDestroyWindow(X.disp, c->frame);
diff --git a/mouse.c b/mouse.c
index 3b1a93e00f2014d12d93939a7fee1a5d9c728c2f..af0ae571478ca2050cde9d0a94ed67922ae5960c 100644 (file)
--- a/mouse.c
+++ b/mouse.c
@@ -64,11 +64,11 @@ void mouse_click(XButtonEvent* ev, Location* loc)
     {
         float_click(ev, loc);
     }
-    else if (loc->column->mode == TILE_MONOCLE)
+    else if (loc->column->focused)
     {
         monocled_click(ev, loc);
     }
-    else if (loc->column->mode == TILE_STACKED)
+    else
     {
         stacked_click(ev, loc);
     }
@@ -106,11 +106,11 @@ void mouse_drag(XMotionEvent* ev, Location* loc)
     {
         float_drag(ev, loc);
     }
-    else if (loc->column->mode == TILE_MONOCLE)
+    else if (loc->column->focused)
     {
         monocled_drag(ev, loc);
     }
-    else if (loc->column->mode == TILE_STACKED)
+    else
     {
         stacked_drag(ev, loc);
     }