--- WindowMaker-0.91.0/src/window.c.vns 2005-05-18 15:51:45 +0400 +++ WindowMaker-0.91.0/src/window.c 2005-05-18 15:55:55 +0400 @@ -1293,7 +1293,10 @@ wwin->frame = wFrameWindowCreate(scr, window_level, x, y, width, height, - &wPreferences.window_title_clearance, foo, + &wPreferences.window_title_clearance, + &wPreferences.window_title_min_height, + &wPreferences.window_title_max_height, + foo, scr->window_title_texture, scr->resizebar_texture, scr->window_title_color, @@ -1630,7 +1633,10 @@ wwin->frame = wFrameWindowCreate(scr, WMFloatingLevel, wwin->frame_x, wwin->frame_y, width, height, - &wPreferences.window_title_clearance, foo, + &wPreferences.window_title_clearance, + &wPreferences.window_title_min_height, + &wPreferences.window_title_max_height, + foo, scr->window_title_texture, scr->resizebar_texture, scr->window_title_color, --- WindowMaker-0.91.0/src/defaults.c.vns 2005-05-18 15:51:45 +0400 +++ WindowMaker-0.91.0/src/defaults.c 2005-05-18 15:51:45 +0400 @@ -376,6 +376,8 @@ }; +#define NUM2STRING_(x) #x +#define NUM2STRING(x) NUM2STRING_(x) WDefaultEntry optionList[] = { /* dynamic options */ @@ -601,9 +603,21 @@ {"WindowTitleExtendSpace", DEF_WINDOW_TITLE_EXTEND_SPACE, NULL, &wPreferences.window_title_clearance, getInt, setClearance }, + {"WindowTitleMinHeight", "0", NULL, + &wPreferences.window_title_min_height, getInt, setClearance + }, + {"WindowTitleMaxHeight", NUM2STRING(INT_MAX), NULL, + &wPreferences.window_title_max_height, getInt, setClearance + }, {"MenuTitleExtendSpace", DEF_MENU_TITLE_EXTEND_SPACE, NULL, &wPreferences.menu_title_clearance, getInt, setClearance }, + {"MenuTitleMinHeight", "0", NULL, + &wPreferences.menu_title_min_height, getInt, setClearance + }, + {"MenuTitleMaxHeight", NUM2STRING(INT_MAX), NULL, + &wPreferences.menu_title_max_height, getInt, setClearance + }, {"MenuTextExtendSpace", DEF_MENU_TEXT_EXTEND_SPACE, NULL, &wPreferences.menu_text_clearance, getInt, setClearance }, --- WindowMaker-0.91.0/src/WindowMaker.h.vns 2005-05-18 15:51:45 +0400 +++ WindowMaker-0.91.0/src/WindowMaker.h 2005-05-18 15:51:45 +0400 @@ -371,7 +371,11 @@ signed char title_justification; /* titlebar text alignment */ int window_title_clearance; + int window_title_min_height; + int window_title_max_height; int menu_title_clearance; + int menu_title_min_height; + int menu_title_max_height; int menu_text_clearance; char multi_byte_text; --- WindowMaker-0.91.0/src/framewin.c.vns 2005-05-18 15:51:45 +0400 +++ WindowMaker-0.91.0/src/framewin.c 2005-05-18 15:54:16 +0400 @@ -63,7 +63,8 @@ WFrameWindow* wFrameWindowCreate(WScreen *scr, int wlevel, int x, int y, - int width, int height, int *clearance, int flags, + int width, int height, int *clearance, + int *title_min, int *title_max, int flags, WTexture **title_texture, WTexture **resize_texture, WMColor **color, WMFont **font) { @@ -80,6 +81,8 @@ fwin->resizebar_texture = resize_texture; fwin->title_color = color; fwin->title_clearance = clearance; + fwin->title_min_height = title_min; + fwin->title_max_height = title_max; fwin->font = font; #ifdef KEEP_XKB_LOCK_STATUS fwin->languagemode = XkbGroup1Index; @@ -130,7 +133,11 @@ height = fwin->core->height - fwin->top_width - fwin->bottom_width; if (flags & WFF_TITLEBAR) - theight = WMFontHeight(*fwin->font) + (*fwin->title_clearance + TITLEBAR_EXTEND_SPACE) * 2; + { + theight = WMFontHeight(*fwin->font) + (*fwin->title_clearance + TITLEBAR_EXTEND_SPACE) * 2; + if(theight > *fwin->title_max_height) theight = *fwin->title_max_height; + if(theight < *fwin->title_min_height) theight = *fwin->title_min_height; + } else theight = 0; @@ -490,6 +497,8 @@ int theight; theight = WMFontHeight(*fwin->font) + (*fwin->title_clearance + TITLEBAR_EXTEND_SPACE) * 2; + if(theight > *fwin->title_max_height) theight = *fwin->title_max_height; + if(theight < *fwin->title_min_height) theight = *fwin->title_min_height; x = 0; w = fwin->core->width + 1; @@ -1097,8 +1106,11 @@ break; } + y = *fwin->title_clearance + TITLEBAR_EXTEND_SPACE; h = WMFontHeight(*fwin->font); + if(y*2 + h > *fwin->title_max_height) y = (*fwin->title_max_height - h)/2; + if(y*2 + h < *fwin->title_min_height) y = (*fwin->title_min_height - h)/2; /* We use a w+2 buffer to have an extra pixel on the left and * another one on the right. This is because for some odd reason, --- WindowMaker-0.91.0/src/menu.c.vns 2005-05-18 15:51:45 +0400 +++ WindowMaker-0.91.0/src/menu.c 2005-05-18 15:51:45 +0400 @@ -180,7 +180,10 @@ menu->flags.titled = 1; } menu->frame = - wFrameWindowCreate(screen, tmp, 8, 2, 1, 1, &wPreferences.menu_title_clearance, flags, + wFrameWindowCreate(screen, tmp, 8, 2, 1, 1, &wPreferences.menu_title_clearance, + &wPreferences.menu_title_min_height, + &wPreferences.menu_title_max_height, + flags, screen->menu_title_texture, NULL, screen->menu_title_color, &screen->menu_title_font); --- WindowMaker-0.91.0/src/framewin.h.vns 2004-10-15 01:24:06 +0400 +++ WindowMaker-0.91.0/src/framewin.h 2005-05-18 15:56:27 +0400 @@ -59,6 +59,8 @@ short top_width; int *title_clearance; + int *title_min_height; + int *title_max_height; short bottom_width; short resizebar_corner_width; @@ -149,7 +151,8 @@ WFrameWindow* wFrameWindowCreate(WScreen *scr, int wlevel, int x, int y, - int width, int height, int *clearance, int flags, + int width, int height, int *clearance, + int *title_min, int *title_max, int flags, union WTexture **title_texture, union WTexture **resize_texture, WMColor **color, WMFont **font); --- WindowMaker-0.91.0/src/moveres.c.vns 2004-10-24 23:36:09 +0400 +++ WindowMaker-0.91.0/src/moveres.c 2005-05-18 15:51:45 +0400 @@ -497,6 +497,8 @@ if (HAS_TITLEBAR(wwin) && !wwin->flags.shaded) { h = WMFontHeight(wwin->screen_ptr->title_font) + (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2; + if(h > wPreferences.window_title_max_height) h = wPreferences.window_title_max_height; + if(h < wPreferences.window_title_min_height) h = wPreferences.window_title_min_height; } if (HAS_RESIZEBAR(wwin) && !wwin->flags.shaded) { /* Can't use wwin-frame->bottom_width because, in some cases --- WindowMaker-0.91.0/src/placement.c.vns 2004-10-23 03:58:59 +0400 +++ WindowMaker-0.91.0/src/placement.c 2005-05-18 15:57:35 +0400 @@ -594,6 +594,9 @@ { WScreen *scr = wwin->screen_ptr; int h = WMFontHeight(scr->title_font) + (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2; + if(h > wPreferences.window_title_max_height) h = wPreferences.window_title_max_height; + if(h < wPreferences.window_title_min_height) h = wPreferences.window_title_min_height; + WArea usableArea = wGetUsableAreaForHead(scr, wGetHeadForPointerLocation(scr), NULL, True);