From 96ec154837699bd8687d1067deec4f6e593d99c9 Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Thu, 23 Jan 2014 06:27:32 +0100
Subject: [PATCH] Optimized WinConf / WinConfDB structure, removed redundant
 .draw.

---
 src/client/wincontrol.c |  7 +++----
 src/client/wincontrol.h | 17 ++++++-----------
 2 files changed, 9 insertions(+), 15 deletions(-)

diff --git a/src/client/wincontrol.c b/src/client/wincontrol.c
index 275fc9c..fcf3e86 100644
--- a/src/client/wincontrol.c
+++ b/src/client/wincontrol.c
@@ -124,7 +124,7 @@ extern void init_win_from_winconf(char id)
 {
     char * err = "get_drawfunc_by_char() returns NULL to init_win_from_file().";
     struct WinConf * winconf = get_winconf_by_id(id);
-    void * f = get_drawfunc_by_char(winconf->draw);
+    void * f = get_drawfunc_by_char(winconf->id);
     exit_err(NULL == f, err);
     init_win(&winconf->win, winconf->title, winconf->height, winconf->width, f);
 }
@@ -179,7 +179,6 @@ extern uint8_t read_winconf_from_file(char * line, uint32_t linemax, FILE * file
     }
     struct WinConf winconf;
     winconf.id = (char) test;
-    winconf.draw = winconf.id;
     try_fgetc(file, f_name);
     try_fgets(line, linemax + 1, file, f_name);
     winconf.title = try_malloc(strlen(line), f_name);
@@ -233,7 +232,7 @@ extern void write_winconf_of_id_to_file(FILE * file, char c, char * delim)
         size = 7;
     }
     char line[size];
-    sprintf(line, "%c\n", wc->draw);
+    sprintf(line, "%c\n", wc->id);
     try_fwrite(line, sizeof(char), strlen(line), file, f_name);
     sprintf(line, "%s\n", wc->title);
     try_fwrite(line, sizeof(char), strlen(line), file, f_name);
@@ -387,7 +386,7 @@ extern void toggle_winconfig()
     else
     {
         wcp->view     = 0;
-        win->draw     = get_drawfunc_by_char(wcp->draw);
+        win->draw     = get_drawfunc_by_char(wcp->id);
         win->center   = wcp->center;
     }
 }
diff --git a/src/client/wincontrol.h b/src/client/wincontrol.h
index 67c72bc..8290379 100644
--- a/src/client/wincontrol.h
+++ b/src/client/wincontrol.h
@@ -18,29 +18,24 @@ struct WinConfDB
 {
     struct WinConf * winconfs;
     char * ids;
-    char active; /* id of window selected as active */
     char * order; /* order of visible windows (identified by IDs) */
+    char active; /* id of window selected as active */
 };
 
-/* Stores a window's configuration (like geometry, keybindings) and a pointer to
- * the respective Win struct itself.
- */
+/* Window's configuration (like geometry, keybindings) and the Win itself. */
 struct WinConf
 {
-    char id; /* Unique identifier of WinConf, doubles aas identifier for .win */
-             /* and the char following "Win_" in the respective conffile name.*/
     struct Win * win;    /* Window / Win struct configured by this WinConf. */
     struct KeyBindingDB kb; /* Window-specific keybindings. */
-    uint8_t view; /* 0: use .draw as Win.draw; 1/2: use draw_winconf()_(1/2). */
+    struct yx_uint16 center; /* Designated Win.center */
     int16_t height;      /* Designated height to pass to init_win(). */
     int16_t width;       /* Designated width to pass to init_win(). */
     uint8_t height_type; /* 0: read .height/.width as size in positive cells; */
     uint8_t width_type;  /* 1: as negative diff in cells to the screen size.  */
+    uint8_t view; /* 0: use .draw as Win.draw; 1/2: use draw_winconf()_(1/2). */
+    char id; /* Identifier of WinConf, also identifies Win.draw function. */
     char * title; /* Designated title to pass to init_win(). */
-    char draw;    /* Identifier of designated Win.draw; passed to init_win() */
-                  /* and reset after toggling Win.draw via toggle_winconf(). */
-    struct yx_uint16 center; /* Designated Win.center; to be reset after  */
-};                           /* toggling Win.center via toggle_winconf(). */
+};
 
 
 
-- 
2.30.2