commit faa55a8baef09d85de91a678d33a4cd3bc8207f6
parent 3c8359687128b4e0b6827323ba4c4ffab3fc5a28
Author: Sander van Dijk <sander@wmii.de>
Date: Mon, 23 Jan 2006 16:07:44 +0100
small changes to wmiimenu behavior, improving predictability
Diffstat:
1 file changed, 5 insertions(+), 22 deletions(-)
diff --git a/cmd/wmiimenu.c b/cmd/wmiimenu.c
@@ -448,26 +448,20 @@ handle_kpress(XKeyEvent * e)
return;
if(sel->prev) {
sel = sel->prev;
- set_text(sel->file->name);
} else
return;
break;
case XK_Tab:
if(!sel)
return;
- if(strncmp(text,sel->file->name,strlen(sel->file->name))!=0) {
- set_text(sel->file->name);
- break;
- } /*
- * if this didn't happen, we should continue with
- * XK_Right behavior, so no "break;" here
- */
+ set_text(sel->file->name);
+ update_items(files[M_COMMAND]->content);
+ break;
case XK_Right:
if(!sel)
return;
if(sel->next) {
sel = sel->next;
- set_text(sel->file->name);
} else
return;
break;
@@ -500,20 +494,9 @@ handle_kpress(XKeyEvent * e)
size_t i = len;
if(i) {
int prev_nitems;
- update_items(text); /*
- * make sure nitems is in sync with text;
- * this may not be the case when the user
- * has been using XK_Left or XK_Right
- */
- do {
+ do
text[--i] = 0;
- prev_nitems = nitems; /*
- * since update_items changes nitems,
- * nitems == update_items(text) is
- * always true; hence prev_nitems
- */
- }
- while(nitems && i && prev_nitems == update_items(text));
+ while((prev_nitems = nitems) && i && prev_nitems == update_items(text));
}
set_text(text);
update_items(files[M_COMMAND]->content);