mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-23 10:34:07 +00:00
(xlwMenuResources): New resource.
(find_next_selectable): Return current item when the menu is not poped up. Rename `inactive_gc' to `disabled_gc'. Use lighter/darker color for disabled menu items instead of using stipple. Use stipple only when better color can not be determined automatically.
This commit is contained in:
parent
2ad9976665
commit
8b71a9ca6f
@ -1,3 +1,19 @@
|
||||
2002-05-06 Pavel Jan,Bm(Bk <Pavel@Janik.cz>
|
||||
|
||||
* xlwmenu.c (xlwMenuResources): New resource.
|
||||
(find_next_selectable): Return current item when the menu is not
|
||||
poped up.
|
||||
Rename `inactive_gc' to `disabled_gc'.
|
||||
Use lighter/darker color for disabled menu items instead of using
|
||||
stipple. Use stipple only when better color can not be
|
||||
determined automatically.
|
||||
|
||||
* xlwmenu.h (XtNdisabledForeground, XtCDisabledForeground):
|
||||
New resource names.
|
||||
|
||||
* xlwmenuP.h (_XlwMenu_part): Add new member `disabled_foreground'.
|
||||
Rename `inactive_gc' to `disabled_gc'.
|
||||
|
||||
2002-04-29 Pavel Jan,Bm(Bk <Pavel@Janik.cz>
|
||||
|
||||
* xlwmenu.c <XtNmargin, XtNverticalSpacing, XmNshadowThickness>:
|
||||
|
@ -139,6 +139,8 @@ xlwMenuResources[] =
|
||||
offset(menu.font),XtRString, "XtDefaultFont"},
|
||||
{XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
|
||||
offset(menu.foreground), XtRString, "XtDefaultForeground"},
|
||||
{XtNdisabledForeground, XtCDisabledForeground, XtRPixel, sizeof(Pixel),
|
||||
offset(menu.disabled_foreground), XtRString, (XtPointer)NULL},
|
||||
{XtNbuttonForeground, XtCButtonForeground, XtRPixel, sizeof(Pixel),
|
||||
offset(menu.button_foreground), XtRString, "XtDefaultForeground"},
|
||||
{XtNmargin, XtCMargin, XtRDimension, sizeof(Dimension),
|
||||
@ -997,7 +999,7 @@ display_menu_item (mw, val, ws, where, highlighted_p, horizontal_p,
|
||||
if (val->enabled)
|
||||
text_gc = mw->menu.foreground_gc;
|
||||
else
|
||||
text_gc = mw->menu.inactive_gc;
|
||||
text_gc = mw->menu.disabled_gc;
|
||||
deco_gc = mw->menu.foreground_gc;
|
||||
|
||||
if (separator_p)
|
||||
@ -1453,6 +1455,8 @@ make_drawing_gcs (mw)
|
||||
XlwMenuWidget mw;
|
||||
{
|
||||
XGCValues xgcv;
|
||||
XColor temp;
|
||||
int delta;
|
||||
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
xgcv.foreground = mw->menu.foreground;
|
||||
@ -1469,13 +1473,47 @@ make_drawing_gcs (mw)
|
||||
&xgcv);
|
||||
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
xgcv.foreground = mw->menu.foreground;
|
||||
xgcv.background = mw->core.background_pixel;
|
||||
xgcv.fill_style = FillStippled;
|
||||
xgcv.stipple = mw->menu.gray_pixmap;
|
||||
mw->menu.inactive_gc = XtGetGC ((Widget)mw,
|
||||
(GCFont | GCForeground | GCBackground
|
||||
| GCFillStyle | GCStipple), &xgcv);
|
||||
|
||||
#define BRIGHTNESS(color) (((color) & 0xff) + (((color) >> 8) & 0xff) + (((color) >> 16) & 0xff))
|
||||
|
||||
/* Allocate color for disabled menu-items. */
|
||||
if (BRIGHTNESS(mw->menu.foreground) < BRIGHTNESS(mw->core.background_pixel))
|
||||
{
|
||||
delta = 2.3;
|
||||
temp.pixel = mw->menu.foreground;
|
||||
}
|
||||
else
|
||||
{
|
||||
delta = 1.2;
|
||||
temp.pixel = mw->core.background_pixel;
|
||||
}
|
||||
|
||||
x_alloc_lighter_color_for_widget ((Widget) mw, XtDisplay ((Widget) mw),
|
||||
mw->core.colormap,
|
||||
&temp.pixel,
|
||||
delta,
|
||||
0x8000);
|
||||
mw->menu.disabled_foreground = temp.pixel;
|
||||
|
||||
if (mw->menu.foreground == mw->menu.disabled_foreground
|
||||
|| mw->core.background_pixel == mw->menu.disabled_foreground)
|
||||
{
|
||||
/* Too few colors, use stipple. */
|
||||
xgcv.foreground = mw->menu.foreground;
|
||||
xgcv.fill_style = FillStippled;
|
||||
xgcv.stipple = mw->menu.gray_pixmap;
|
||||
mw->menu.disabled_gc = XtGetGC ((Widget)mw,
|
||||
(GCFont | GCForeground | GCBackground
|
||||
| GCFillStyle | GCStipple), &xgcv);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Many colors available, use disabled pixel. */
|
||||
xgcv.foreground = mw->menu.disabled_foreground;
|
||||
mw->menu.disabled_gc = XtGetGC ((Widget)mw,
|
||||
(GCFont | GCForeground | GCBackground), &xgcv);
|
||||
}
|
||||
|
||||
xgcv.font = mw->menu.font->fid;
|
||||
xgcv.foreground = mw->menu.button_foreground;
|
||||
@ -1500,13 +1538,13 @@ release_drawing_gcs (mw)
|
||||
{
|
||||
XtReleaseGC ((Widget) mw, mw->menu.foreground_gc);
|
||||
XtReleaseGC ((Widget) mw, mw->menu.button_gc);
|
||||
XtReleaseGC ((Widget) mw, mw->menu.inactive_gc);
|
||||
XtReleaseGC ((Widget) mw, mw->menu.disabled_gc);
|
||||
XtReleaseGC ((Widget) mw, mw->menu.inactive_button_gc);
|
||||
XtReleaseGC ((Widget) mw, mw->menu.background_gc);
|
||||
/* let's get some segvs if we try to use these... */
|
||||
mw->menu.foreground_gc = (GC) -1;
|
||||
mw->menu.button_gc = (GC) -1;
|
||||
mw->menu.inactive_gc = (GC) -1;
|
||||
mw->menu.disabled_gc = (GC) -1;
|
||||
mw->menu.inactive_button_gc = (GC) -1;
|
||||
mw->menu.background_gc = (GC) -1;
|
||||
}
|
||||
@ -2050,6 +2088,8 @@ find_next_selectable (mw, item)
|
||||
|
||||
if (current == item)
|
||||
{
|
||||
if (mw->menu.old_depth < 2)
|
||||
return current;
|
||||
current = mw->menu.old_stack [mw->menu.old_depth - 2]->contents;
|
||||
|
||||
while (lw_separator_p (current->name, &separator, 0) || !current->enabled)
|
||||
|
Loading…
Reference in New Issue
Block a user