mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 12:28:22 +01:00
Options for limiting window/menu title height
(Window|Menu)Title(Min|Max)Height defaults options allow to set minimum and maximum titlebar height. For example, to force all titlebars to 24 pixels execute following commands: $ wdwrite WindowMaker WindowTitleMinHeight 24 $ wdwrite WindowMaker WindowTitleMaxHeight 24 $ wdwrite WindowMaker MenuTitleMinHeight 24 $ wdwrite WindowMaker MenuTitleMaxHeight 24 Signed-off-by: Alexey I. Froloff <raorn@altlinux.org>
This commit is contained in:
committed by
Carlos R. Mafra
parent
99aad55425
commit
e819818eeb
17
NEWS
17
NEWS
@@ -2,7 +2,22 @@
|
|||||||
NEWS for veteran Window Maker users
|
NEWS for veteran Window Maker users
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
||||||
--- 0.94.0-crm
|
--- 0.95.X
|
||||||
|
|
||||||
|
Options to limit the window/menu title height
|
||||||
|
---------------------------------------------
|
||||||
|
|
||||||
|
You can now set the minimum and maximum titlebar heights.
|
||||||
|
For example, to force all titlebars to 24 pixels execute
|
||||||
|
the following commands:
|
||||||
|
|
||||||
|
$ wdwrite WindowMaker WindowTitleMinHeight 24
|
||||||
|
$ wdwrite WindowMaker WindowTitleMaxHeight 24
|
||||||
|
$ wdwrite WindowMaker MenuTitleMinHeight 24
|
||||||
|
$ wdwrite WindowMaker MenuTitleMaxHeight 24
|
||||||
|
|
||||||
|
|
||||||
|
--- 0.95.2
|
||||||
|
|
||||||
New Resizing functionality
|
New Resizing functionality
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|||||||
@@ -338,7 +338,11 @@ typedef struct WPreferences {
|
|||||||
char open_transients_with_parent; /* open transient window in same workspace as parent */
|
char open_transients_with_parent; /* open transient window in same workspace as parent */
|
||||||
signed char title_justification; /* titlebar text alignment */
|
signed char title_justification; /* titlebar text alignment */
|
||||||
int window_title_clearance;
|
int window_title_clearance;
|
||||||
|
int window_title_min_height;
|
||||||
|
int window_title_max_height;
|
||||||
int menu_title_clearance;
|
int menu_title_clearance;
|
||||||
|
int menu_title_min_height;
|
||||||
|
int menu_title_max_height;
|
||||||
int menu_text_clearance;
|
int menu_text_clearance;
|
||||||
char multi_byte_text;
|
char multi_byte_text;
|
||||||
#ifdef KEEP_XKB_LOCK_STATUS
|
#ifdef KEEP_XKB_LOCK_STATUS
|
||||||
|
|||||||
@@ -329,6 +329,9 @@ WDefaultEntry staticOptionList[] = {
|
|||||||
&wPreferences.disable_miniwindows, getBool, NULL, NULL, NULL}
|
&wPreferences.disable_miniwindows, getBool, NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define NUM2STRING_(x) #x
|
||||||
|
#define NUM2STRING(x) NUM2STRING_(x)
|
||||||
|
|
||||||
WDefaultEntry optionList[] = {
|
WDefaultEntry optionList[] = {
|
||||||
|
|
||||||
/* dynamic options */
|
/* dynamic options */
|
||||||
@@ -469,8 +472,16 @@ WDefaultEntry optionList[] = {
|
|||||||
NULL, getFont, setWinTitleFont, NULL, NULL},
|
NULL, getFont, setWinTitleFont, NULL, NULL},
|
||||||
{"WindowTitleExtendSpace", DEF_WINDOW_TITLE_EXTEND_SPACE, NULL,
|
{"WindowTitleExtendSpace", DEF_WINDOW_TITLE_EXTEND_SPACE, NULL,
|
||||||
&wPreferences.window_title_clearance, getInt, setClearance, NULL, NULL},
|
&wPreferences.window_title_clearance, getInt, setClearance, NULL, NULL},
|
||||||
|
{"WindowTitleMinHeight", "0", NULL,
|
||||||
|
&wPreferences.window_title_min_height, getInt, setClearance, NULL, NULL},
|
||||||
|
{"WindowTitleMaxHeight", NUM2STRING(INT_MAX), NULL,
|
||||||
|
&wPreferences.window_title_max_height, getInt, setClearance, NULL, NULL},
|
||||||
{"MenuTitleExtendSpace", DEF_MENU_TITLE_EXTEND_SPACE, NULL,
|
{"MenuTitleExtendSpace", DEF_MENU_TITLE_EXTEND_SPACE, NULL,
|
||||||
&wPreferences.menu_title_clearance, getInt, setClearance, NULL, NULL},
|
&wPreferences.menu_title_clearance, getInt, setClearance, NULL, NULL},
|
||||||
|
{"MenuTitleMinHeight", "0", NULL,
|
||||||
|
&wPreferences.menu_title_min_height, getInt, setClearance, NULL, NULL},
|
||||||
|
{"MenuTitleMaxHeight", NUM2STRING(INT_MAX), NULL,
|
||||||
|
&wPreferences.menu_title_max_height, getInt, setClearance, NULL, NULL},
|
||||||
{"MenuTextExtendSpace", DEF_MENU_TEXT_EXTEND_SPACE, NULL,
|
{"MenuTextExtendSpace", DEF_MENU_TEXT_EXTEND_SPACE, NULL,
|
||||||
&wPreferences.menu_text_clearance, getInt, setClearance, NULL, NULL},
|
&wPreferences.menu_text_clearance, getInt, setClearance, NULL, NULL},
|
||||||
{"MenuTitleFont", DEF_MENU_TITLE_FONT, NULL,
|
{"MenuTitleFont", DEF_MENU_TITLE_FONT, NULL,
|
||||||
|
|||||||
@@ -59,7 +59,8 @@ static void paintButton(WCoreWindow * button, WTexture * texture,
|
|||||||
static void updateTitlebar(WFrameWindow * fwin);
|
static void updateTitlebar(WFrameWindow * fwin);
|
||||||
|
|
||||||
WFrameWindow *wFrameWindowCreate(WScreen * scr, int wlevel, int x, int y,
|
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,
|
WTexture ** title_texture, WTexture ** resize_texture,
|
||||||
WMColor ** color, WMFont ** font)
|
WMColor ** color, WMFont ** font)
|
||||||
{
|
{
|
||||||
@@ -76,6 +77,8 @@ WFrameWindow *wFrameWindowCreate(WScreen * scr, int wlevel, int x, int y,
|
|||||||
fwin->resizebar_texture = resize_texture;
|
fwin->resizebar_texture = resize_texture;
|
||||||
fwin->title_color = color;
|
fwin->title_color = color;
|
||||||
fwin->title_clearance = clearance;
|
fwin->title_clearance = clearance;
|
||||||
|
fwin->title_min_height = title_min;
|
||||||
|
fwin->title_max_height = title_max;
|
||||||
fwin->font = font;
|
fwin->font = font;
|
||||||
#ifdef KEEP_XKB_LOCK_STATUS
|
#ifdef KEEP_XKB_LOCK_STATUS
|
||||||
fwin->languagemode = XkbGroup1Index;
|
fwin->languagemode = XkbGroup1Index;
|
||||||
@@ -121,9 +124,15 @@ void wFrameWindowUpdateBorders(WFrameWindow * fwin, int flags)
|
|||||||
else
|
else
|
||||||
height = fwin->core->height - fwin->top_width - fwin->bottom_width;
|
height = fwin->core->height - fwin->top_width - fwin->bottom_width;
|
||||||
|
|
||||||
if (flags & WFF_TITLEBAR)
|
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;
|
||||||
else
|
|
||||||
|
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;
|
theight = 0;
|
||||||
|
|
||||||
if (wPreferences.new_style == TS_NEW) {
|
if (wPreferences.new_style == TS_NEW) {
|
||||||
@@ -462,6 +471,12 @@ static void updateTitlebar(WFrameWindow * fwin)
|
|||||||
|
|
||||||
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;
|
||||||
|
|
||||||
x = 0;
|
x = 0;
|
||||||
w = fwin->core->width + 1;
|
w = fwin->core->width + 1;
|
||||||
|
|
||||||
@@ -1018,6 +1033,12 @@ void wFrameWindowPaint(WFrameWindow * fwin)
|
|||||||
y = *fwin->title_clearance + TITLEBAR_EXTEND_SPACE;
|
y = *fwin->title_clearance + TITLEBAR_EXTEND_SPACE;
|
||||||
h = WMFontHeight(*fwin->font);
|
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
|
/* 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,
|
* another one on the right. This is because for some odd reason,
|
||||||
* sometimes when using AA fonts (when libfreetype2 is compiled
|
* sometimes when using AA fonts (when libfreetype2 is compiled
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ typedef struct WFrameWindow {
|
|||||||
|
|
||||||
short top_width;
|
short top_width;
|
||||||
int *title_clearance;
|
int *title_clearance;
|
||||||
|
int *title_min_height;
|
||||||
|
int *title_max_height;
|
||||||
short bottom_width;
|
short bottom_width;
|
||||||
|
|
||||||
short resizebar_corner_width;
|
short resizebar_corner_width;
|
||||||
@@ -150,7 +152,8 @@ typedef struct WFrameWindow {
|
|||||||
|
|
||||||
WFrameWindow*
|
WFrameWindow*
|
||||||
wFrameWindowCreate(WScreen *scr, int wlevel, int x, int y,
|
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 **title_texture,
|
||||||
union WTexture **resize_texture,
|
union WTexture **resize_texture,
|
||||||
WMColor **color, WMFont **font);
|
WMColor **color, WMFont **font);
|
||||||
|
|||||||
@@ -160,7 +160,10 @@ WMenu *wMenuCreate(WScreen * screen, char *title, int main_menu)
|
|||||||
menu->flags.titled = 1;
|
menu->flags.titled = 1;
|
||||||
}
|
}
|
||||||
menu->frame =
|
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_texture, NULL,
|
||||||
screen->menu_title_color, &screen->menu_title_font);
|
screen->menu_title_color, &screen->menu_title_font);
|
||||||
|
|
||||||
|
|||||||
@@ -470,6 +470,12 @@ static void drawTransparentFrame(WWindow * wwin, int x, int y, int width, int he
|
|||||||
if (HAS_TITLEBAR(wwin) && !wwin->flags.shaded) {
|
if (HAS_TITLEBAR(wwin) && !wwin->flags.shaded) {
|
||||||
h = WMFontHeight(wwin->screen_ptr->title_font) + (wPreferences.window_title_clearance +
|
h = WMFontHeight(wwin->screen_ptr->title_font) + (wPreferences.window_title_clearance +
|
||||||
TITLEBAR_EXTEND_SPACE) * 2;
|
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) {
|
if (HAS_RESIZEBAR(wwin) && !wwin->flags.shaded) {
|
||||||
/* Can't use wwin-frame->bottom_width because, in some cases
|
/* Can't use wwin-frame->bottom_width because, in some cases
|
||||||
@@ -2219,6 +2225,13 @@ void InteractivePlaceWindow(WWindow * wwin, int *x_ret, int *y_ret, unsigned wid
|
|||||||
if (HAS_TITLEBAR(wwin)) {
|
if (HAS_TITLEBAR(wwin)) {
|
||||||
h = WMFontHeight(scr->title_font) + (wPreferences.window_title_clearance +
|
h = WMFontHeight(scr->title_font) + (wPreferences.window_title_clearance +
|
||||||
TITLEBAR_EXTEND_SPACE) * 2;
|
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;
|
||||||
|
|
||||||
height += h;
|
height += h;
|
||||||
}
|
}
|
||||||
if (HAS_RESIZEBAR(wwin)) {
|
if (HAS_RESIZEBAR(wwin)) {
|
||||||
|
|||||||
@@ -484,6 +484,13 @@ void PlaceWindow(WWindow *wwin, int *x_ret, int *y_ret, unsigned width, unsigned
|
|||||||
WScreen *scr = wwin->screen_ptr;
|
WScreen *scr = wwin->screen_ptr;
|
||||||
int h = WMFontHeight(scr->title_font)
|
int h = WMFontHeight(scr->title_font)
|
||||||
+ (wPreferences.window_title_clearance + TITLEBAR_EXTEND_SPACE) * 2;
|
+ (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),
|
WArea usableArea = wGetUsableAreaForHead(scr, wGetHeadForPointerLocation(scr),
|
||||||
NULL, True);
|
NULL, True);
|
||||||
|
|
||||||
|
|||||||
10
src/window.c
10
src/window.c
@@ -1125,7 +1125,10 @@ WWindow *wManageWindow(WScreen *scr, Window window)
|
|||||||
|
|
||||||
wwin->frame = wFrameWindowCreate(scr, window_level,
|
wwin->frame = wFrameWindowCreate(scr, window_level,
|
||||||
x, y, width, height,
|
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->window_title_texture,
|
||||||
scr->resizebar_texture, scr->window_title_color, &scr->title_font);
|
scr->resizebar_texture, scr->window_title_color, &scr->title_font);
|
||||||
|
|
||||||
@@ -1428,7 +1431,10 @@ WWindow *wManageInternalWindow(WScreen *scr, Window window, Window owner,
|
|||||||
wwin->frame = wFrameWindowCreate(scr, WMFloatingLevel,
|
wwin->frame = wFrameWindowCreate(scr, WMFloatingLevel,
|
||||||
wwin->frame_x, wwin->frame_y,
|
wwin->frame_x, wwin->frame_y,
|
||||||
width, height,
|
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->window_title_texture,
|
||||||
scr->resizebar_texture, scr->window_title_color, &scr->title_font);
|
scr->resizebar_texture, scr->window_title_color, &scr->title_font);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user