Layout: Get the selected screen before toggle resizhint.

This commit is contained in:
Martin Duquesnoy
2009-08-19 23:16:10 +02:00
parent 93f2fe49fa
commit 020e2c88c7
8 changed files with 104 additions and 69 deletions

View File

@@ -355,6 +355,7 @@ conf_tag_section(char *src)
for(i = 0; i < get_size_sec(src, "tag"); ++i)
{
/* printf("%d -> %s\n", i, (cfgtmp = get_nsec(src, "tag", i)));*/
cfgtmp = get_nsec(src, "tag", i);
j = get_opt(cfgtmp, "-1", "screen").num;
@@ -530,6 +531,10 @@ init_conf(void)
func_list = emalloc(LEN(tmp_func_list), sizeof(func_name_list_t));
memcpy(func_list, tmp_func_list, LEN(tmp_func_list) * sizeof(func_name_list_t));
printf("-> %s\n", erase_sec_content(" [pwet] tagada = prout hihi=tralalère [uh] wpwer [/uh] [uh] pwefvbg [/uh] [/pwet] "));
return;
conf_misc_section(get_sec(file, "misc"));
conf_bar_section(get_sec(file, "bar"));
conf_root_section(get_sec(file, "root"));

View File

@@ -68,7 +68,7 @@ char*
get_sec(char *src, char *name)
{
char *ret, *p;
char *secn;
char **sec;
if(!src)
return NULL;
@@ -76,16 +76,15 @@ get_sec(char *src, char *name)
if(!name)
return src;
secn = emalloc((strlen(name) + 2), sizeof(char));
sprintf(secn, "%c%s%c", SEC_DEL_S, name, SEC_DEL_E);
sec = secname(name);
ret = _strdup(src);
if((p = strstr(erase_delim_content(src), secn)))
if((p = strstr(erase_delim_content(src), sec[SecStart])))
{
ret += strlen(ret) - strlen(p) + strlen(secn) + 1;
ret += strlen(ret) - strlen(p) + strlen(sec[SecStart]) + 1;
if((p = strstr(erase_delim_content(ret), secn)))
if((p = strstr(erase_delim_content(ret), sec[SecEnd])))
*(ret + (strlen(ret) - strlen(p))) = '\0';
else
ret = NULL;
@@ -93,7 +92,7 @@ get_sec(char *src, char *name)
else
ret = NULL;
free(secn);
free(sec);
return ret;
}

View File

@@ -50,6 +50,8 @@
/* Comment character */
#define COMMENT_CHAR '#'
enum { SecStart, SecEnd, SecLast };
typedef struct
{
long int num;
@@ -65,6 +67,7 @@ char *erase_sec_content(char *buf);
char *opt_srch(char *buf, char *opt);
opt_type str_to_opt(char *str);
char *clean_value(char *str);
char **secname(char *name);
/* confparse.c */
char *file_to_str(char *path);

View File

@@ -67,6 +67,7 @@ erase_sec_content(char *buf)
{
int i, j;
char *p, *str, *name, *ret;
char *sname;
if(!buf || !(str = erase_delim_content(buf)))
return NULL;
@@ -79,7 +80,11 @@ erase_sec_content(char *buf)
for(j = 0; str[i] && str[i - 1] != SEC_DEL_E; name[j++] = str[i++]);
name[j] = '\0';
if((p = strstr(str + i, name)))
sname = emalloc(strlen(name) + 1, sizeof(char));
sprintf(sname, "[/%s]", name);
if((p = strstr(str + i, sname)))
for(++i; i < strlen(ret) - strlen(p); ret[i++] = ' ');
else
return ret;
@@ -154,3 +159,25 @@ clean_value(char *str)
return p;
}
char**
secname(char *name)
{
char **ret = NULL;
if(!name)
return NULL;
ret = emalloc(SecLast, sizeof(char*));
/* Len of name + '[' + ']' */
ret[SecStart] = emalloc(strlen(name) + 2, sizeof(char));
/* Len of name + '[' + '/' + ']' */
ret[SecEnd] = emalloc(strlen(name) + 3, sizeof(char));
sprintf(ret[SecStart], "%c%s%c", SEC_DEL_S, name, SEC_DEL_E);
sprintf(ret[SecEnd], "%c/%s%c", SEC_DEL_S, name, SEC_DEL_E);
return ret;
}

View File

@@ -734,6 +734,8 @@ uicb_togglemax(uicb_t cmd)
void
uicb_toggle_resizehint(uicb_t cmd)
{
screen_get_sel();
tags[selscreen][seltag[selscreen]].resizehint = !tags[selscreen][seltag[selscreen]].resizehint;
tags[selscreen][seltag[selscreen]].layout.func(selscreen);

View File

@@ -102,7 +102,6 @@ _strdup(const char *str)
{
char *ret = emalloc(strlen(str) + 1, sizeof(char));
memset(ret, strlen(str) + 1, 0);
strcpy(ret, str);
return ret;