Browse Source

Add circular option in section [tags] ; Make user able to turn off the 'tag_prev on first tag send to last tag' effect

David Delassus 12 years ago
parent
commit
eecde8774c
5 changed files with 12 additions and 6 deletions
  1. 2 0
      src/config.c
  2. 1 1
      src/parse_api.c
  3. 5 5
      src/tag.c
  4. 2 0
      src/wmfs.h
  5. 2 0
      wmfsrc

+ 2 - 0
src/config.c

@@ -192,6 +192,8 @@ config_tag(void)
      ks = fetch_section(sec, "tag");
      n = fetch_section_count(ks);
 
+     W->tag_circular = fetch_opt_first(sec, "1", "circular").boolean;
+
      /* [mouse] */
      if((mb = fetch_section(sec, "mouse")))
      {

+ 1 - 1
src/parse_api.c

@@ -42,7 +42,7 @@ string_to_opt(char *s)
      ret.fnum = strtod(s, NULL);
 
      ret.boolean = (!strcmp(s, "true")
-                   || !strcmp(s, "true")
+                   || !strcmp(s, "True")
                    || !strcmp(s, "TRUE")
                    || !strcmp(s, "1"));
 

+ 5 - 5
src/tag.c

@@ -169,8 +169,8 @@ uicb_tag_next(Uicb cmd)
      struct tag *t;
 
      if((t = TAILQ_NEXT(W->screen->seltag, next)))
-          tag_screen(W->screen, t);
-     else if( /* CIRCULAR OPTION */ 1)
+               tag_screen(W->screen, t);
+     else if(W->tag_circular)
           tag_screen(W->screen, TAILQ_FIRST(&W->screen->tags));
 }
 
@@ -182,7 +182,7 @@ uicb_tag_prev(Uicb cmd)
 
      if((t = TAILQ_PREV(W->screen->seltag, tsub, next)))
           tag_screen(W->screen, t);
-     else if( /* CIRCULAR OPTION */ 1)
+     else if(W->tag_circular)
           tag_screen(W->screen, TAILQ_LAST(&W->screen->tags, tsub));
 }
 
@@ -214,7 +214,7 @@ uicb_tag_move_client_next(Uicb cmd)
 
      if((t = TAILQ_NEXT(W->screen->seltag, next)))
           tag_client(t, W->client);
-     else if( /* CIRCULAR OPTION */ 1)
+     else if(W->tag_circular)
           tag_client(TAILQ_FIRST(&W->screen->tags), W->client);
 }
 
@@ -229,7 +229,7 @@ uicb_tag_move_client_prev(Uicb cmd)
 
      if((t = TAILQ_PREV(W->screen->seltag, tsub, next)))
           tag_client(t, W->client);
-     else if( /* CIRCULAR OPTION */ 1)
+     else if(W->tag_circular)
           tag_client(TAILQ_LAST(&W->screen->tags, tsub), W->client);
 }
 

+ 2 - 0
src/wmfs.h

@@ -354,6 +354,8 @@ struct wmfs
 #define CFOCUS_CLICK 0x02
      Flags cfocus; /* Focus configuration, can be set to 0, CFOCUS_ENTER or CFOCUS_CLICK*/
 
+     bool tag_circular;
+
      /* Log file */
      FILE *log;
 

+ 2 - 0
wmfsrc

@@ -91,6 +91,8 @@
 
 [tags]
 
+  circular = false
+
   # Use no screen option or screen = -1 to set tag on each screen
   [tag]
       screen = -1