From 92a84fe0502dad453c7bece109ac85cbb3ca89ae Mon Sep 17 00:00:00 2001 From: kojima Date: Tue, 26 Oct 2004 08:00:19 +0000 Subject: [PATCH] fixed crash bug with alt-tab + run-dialog (or internal windows in general) --- ChangeLog | 4 ++++ src/switchpanel.c | 47 +++++++++++++++++++++++++++-------------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 06e36a5c..da907390 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Changes since version 0.91.0: +............................. +- fixed crash with info panel and alt-tabbing + Changes since version 0.90.0: ............................. diff --git a/src/switchpanel.c b/src/switchpanel.c index 8f727b4c..650a19cc 100644 --- a/src/switchpanel.c +++ b/src/switchpanel.c @@ -360,32 +360,39 @@ drawTitle(WSwitchPanel *panel, int index, char *title) int width= WMWidgetWidth(panel->win); int x; - ntitle= ShrinkString(panel->font, title, width-2*BORDER_SPACE); + if (title) + ntitle= ShrinkString(panel->font, title, width-2*BORDER_SPACE); + else + ntitle= NULL; if (panel->bg) { - if (strcmp(ntitle, title)!=0) - x= BORDER_SPACE; - else - { - int w= WMWidthOfString(panel->font, ntitle, strlen(ntitle)); - - x= BORDER_SPACE+(index-panel->firstVisible)*ICON_TILE_SIZE + ICON_TILE_SIZE/2 - w/2; - if (x < BORDER_SPACE) + if (ntitle) { + if (strcmp(ntitle, title)!=0) x= BORDER_SPACE; - else if (x + w > width-BORDER_SPACE) - x= width-BORDER_SPACE-w; - } - + else + { + int w= WMWidthOfString(panel->font, ntitle, strlen(ntitle)); + + x= BORDER_SPACE+(index-panel->firstVisible)*ICON_TILE_SIZE + ICON_TILE_SIZE/2 - w/2; + if (x < BORDER_SPACE) + x= BORDER_SPACE; + else if (x + w > width-BORDER_SPACE) + x= width-BORDER_SPACE-w; + } + } XClearWindow(dpy, WMWidgetXID(panel->win)); - WMDrawString(panel->scr->wmscreen, - WMWidgetXID(panel->win), - panel->white, panel->font, - x, WMWidgetHeight(panel->win) - BORDER_SPACE - LABEL_HEIGHT + WMFontHeight(panel->font)/2, - ntitle, strlen(ntitle)); + if (ntitle) + WMDrawString(panel->scr->wmscreen, + WMWidgetXID(panel->win), + panel->white, panel->font, + x, WMWidgetHeight(panel->win) - BORDER_SPACE - LABEL_HEIGHT + WMFontHeight(panel->font)/2, + ntitle, strlen(ntitle)); } else { - WMSetLabelText(panel->label, ntitle); + if (ntitle) + WMSetLabelText(panel->label, ntitle); } - free(ntitle); + if (ntitle) + free(ntitle); } -- 2.11.4.GIT