commit 7c7e43b6bf36172eb8b020cf22dc61ced1c9ab40
parent 2aeda38ba5968abdb0247631e59119386d95d3b9
Author: garbeam <garbeam@mmv.wmii.de>
Date: Sat, 17 Dec 2005 15:59:25 +0200
fixed issues in wmiimenu
Diffstat:
4 files changed, 16 insertions(+), 13 deletions(-)
diff --git a/cmd/wm/client.c b/cmd/wm/client.c
@@ -291,7 +291,7 @@ void gravitate(Client * c, unsigned int tabh, unsigned int bw, int invert)
void attach_client(Client * c)
{
Area *a = 0;
- Page *p = pages;
+ Page *p = selpage;
fprintf(stderr, "%s", "before alloc_page\n");
if (!p)
diff --git a/cmd/wm/page.c b/cmd/wm/page.c
@@ -51,6 +51,7 @@ Page *alloc_page()
fprintf(stderr, "%s", "after attaching page\n");
def[WM_SEL_PAGE]->content = new->file[P_PREFIX]->content;
invoke_wm_event(def[WM_EVENT_PAGE_UPDATE]);
+ npages++;
return new;
}
@@ -81,6 +82,7 @@ void destroy_page(Page *p)
free(p);
if (!selpage)
selpage = pages;
+ npages--;
if (selpage)
focus_page(selpage);
@@ -166,7 +168,7 @@ static void toggle_area(void *obj, char *arg)
Page *pageat(unsigned int idx)
{
unsigned int i = 0;
- Page *p = pages;
- for (; p && i != idx; p = p->next);
+ Page *p;
+ for (p = pages; p && i != idx; p = p->next);
return p;
}
diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c
@@ -184,9 +184,10 @@ static void draw_pager()
else
d.rect.y = ir * (rect.height - th) / (rows - 1);
d.rect.height = th;
+ draw_pager_page(p, &d);
if (!p->next)
return;
- draw_pager_page(p, &d);
+ p = p->next;
}
}
}
@@ -213,10 +214,11 @@ static Page *xy_to_pager_page(int x, int y)
else
r.y = ir * (rect.height - th) / (rows - 1);
r.height = th;
- if (!p->next)
- return nil;
if (blitz_ispointinrect(x, y, &r))
return p;
+ if (!p->next)
+ return nil;
+ p = p->next;
}
}
return nil;
@@ -427,7 +429,7 @@ static void new_page(void *obj, char *arg)
Page *p = selpage;
if (p)
hide_page(p);
- alloc_page();
+ selpage = alloc_page();
}
Client *win_to_client(Window w)
diff --git a/cmd/wmiimenu.c b/cmd/wmiimenu.c
@@ -194,7 +194,7 @@ static void update_offsets()
return;
/* calc next offset */
- for (i = offset[OFF_CURR]; i && i->next; i = i->next) {
+ for (i = offset[OFF_CURR]; i; i = i->next) {
w += XTextWidth(font, i->file->content, strlen(i->file->content)) + mrect.height;
if (w > mrect.width)
break;
@@ -207,8 +207,7 @@ static void update_offsets()
if (w > mrect.width)
break;
}
- if (i)
- offset[OFF_PREV] = i->next;
+ offset[OFF_PREV] = i;
}
static size_t update_items(char *pattern)
@@ -314,7 +313,7 @@ static void draw_menu()
if (sel) {
d.bg = blitz_loadcolor(dpy, screen_num, files[M_NORM_BG_COLOR]->content);
d.fg = blitz_loadcolor(dpy, screen_num, files[M_NORM_TEXT_COLOR]->content);
- d.data = offset[OFF_CURR] ? "<" : nil;
+ d.data = offset[OFF_PREV] ? "<" : nil;
d.rect.x = offx;
d.rect.width = seek;
offx += d.rect.width;
@@ -342,7 +341,7 @@ static void draw_menu()
d.bg = blitz_loadcolor(dpy, screen_num, files[M_NORM_BG_COLOR]->content);
d.fg = blitz_loadcolor(dpy, screen_num, files[M_NORM_TEXT_COLOR]->content);
- d.data = i ? ">" : nil;
+ d.data = offset[OFF_NEXT] ? ">" : nil;
d.rect.x = mrect.width - seek;
d.rect.width = seek;
blitz_drawlabelnoborder(dpy, &d);
@@ -473,7 +472,7 @@ static void handle_kpress(XKeyEvent * e)
if (sel == offset[OFF_CURR]->prev) {
offset[OFF_CURR] = offset[OFF_PREV];
update_offsets();
- } else if (sel == offset[OFF_NEXT]->next) {
+ } else if (sel == offset[OFF_NEXT]) {
offset[OFF_CURR] = offset[OFF_NEXT];
update_offsets();
}