From 84c0505899bb3bdcc73b4881fee19e5893a691e1 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 26 Feb 2007 17:01:29 +0000 Subject: [PATCH] make MrEd for X work when traditional X11 fonts are unavailable (but when Xft fonts are available) svn: r5692 --- src/wxxt/src/XWidgets/xwLabel.c | 6 ++++-- src/wxxt/src/XWidgets/xwLabel.w | 6 ++++-- src/wxxt/src/XWidgets/xwMenu.c | 4 ++-- src/wxxt/src/XWidgets/xwMultiList.c | 2 +- src/wxxt/src/XWidgets/xwSlider2.c | 3 +-- src/wxxt/src/XWidgets/xwSlider2.w | 3 +-- src/wxxt/src/XWidgets/xwTabString.c | 12 +++++++----- src/wxxt/src/XWidgets/xwTabString.h | 6 +++--- src/wxxt/src/XWidgets/xwToggle.c | 6 +++--- src/wxxt/src/XWidgets/xwToggle.w | 4 ++-- src/wxxt/src/x/wbuild/src/generatedoc.c | 1 + 11 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/wxxt/src/XWidgets/xwLabel.c b/src/wxxt/src/XWidgets/xwLabel.c index 05a134dcca..e459a123a3 100644 --- a/src/wxxt/src/XWidgets/xwLabel.c +++ b/src/wxxt/src/XWidgets/xwLabel.c @@ -70,8 +70,10 @@ static void make_gc(self)Widget self; values.background = ((XfwfLabelWidget)self)->xfwfLabel.text_bg; if (!((XfwfLabelWidget)self)->xfwfLabel.xfont) { values.foreground = ((XfwfLabelWidget)self)->xfwfLabel.foreground; - values.font = ((XfwfLabelWidget)self)->xfwfLabel.font->fid; - fnt = GCFont; + if (((XfwfLabelWidget)self)->xfwfLabel.font) { + values.font = ((XfwfLabelWidget)self)->xfwfLabel.font->fid; + fnt = GCFont; + } } else { if (((XfwfLabelWidget)self)->xfwfLabel.pixmap) values.foreground = ((XfwfLabelWidget)self)->xfwfLabel.foreground; diff --git a/src/wxxt/src/XWidgets/xwLabel.w b/src/wxxt/src/XWidgets/xwLabel.w index 3a464439e6..44d78b524b 100644 --- a/src/wxxt/src/XWidgets/xwLabel.w +++ b/src/wxxt/src/XWidgets/xwLabel.w @@ -404,8 +404,10 @@ text. values.background = $text_bg; if (!$xfont) { values.foreground = $foreground; - values.font = $font->fid; - fnt = GCFont; + if ($font) { + values.font = $font->fid; + fnt = GCFont; + } } else { if ($pixmap) values.foreground = $foreground; diff --git a/src/wxxt/src/XWidgets/xwMenu.c b/src/wxxt/src/XWidgets/xwMenu.c index 7818fabc57..00879e355a 100644 --- a/src/wxxt/src/XWidgets/xwMenu.c +++ b/src/wxxt/src/XWidgets/xwMenu.c @@ -1084,7 +1084,7 @@ static void DrawTextItem(MenuWidget mw, menu_state *ms, menu_item *item, label, strlen(label), NULL, mw->menu.font, wxEXT_FONT(mw->menu.xft_font), (on ? -1 : (item->enabled || item->type==MENU_TEXT)), - 1, NULL); + 1, NULL, 1); } if (wxUseMenuHiliteBorder()) { @@ -1133,7 +1133,7 @@ static void DrawButtonItem(MenuWidget mw, menu_state *ms, menu_item *item, mw->menu.xft_font), key, strlen(key), NULL, mw->menu.font, wxEXT_FONT(mw->menu.xft_font), - (on ? -1 : item->enabled), 1, NULL); + (on ? -1 : item->enabled), 1, NULL, 1); } } diff --git a/src/wxxt/src/XWidgets/xwMultiList.c b/src/wxxt/src/XWidgets/xwMultiList.c index 19e807515f..0688ce2bc4 100644 --- a/src/wxxt/src/XWidgets/xwMultiList.c +++ b/src/wxxt/src/XWidgets/xwMultiList.c @@ -869,7 +869,7 @@ int row,column; strlen(MultiListItemString(item)), MultiListTabs(mlw), NULL, MultiListXftFont(mlw), xmode, - 0, NULL); + 0, NULL, 0); } } /* End RedrawRowColumn */ diff --git a/src/wxxt/src/XWidgets/xwSlider2.c b/src/wxxt/src/XWidgets/xwSlider2.c index cc0bf67d98..81a01304f3 100644 --- a/src/wxxt/src/XWidgets/xwSlider2.c +++ b/src/wxxt/src/XWidgets/xwSlider2.c @@ -124,8 +124,7 @@ static void create_gc(self)Widget self; if (((XfwfSlider2Widget)self)->xfwfLabel.gc != NULL) XtReleaseGC(self, ((XfwfSlider2Widget)self)->xfwfLabel.gc); values.background = ((XfwfSlider2Widget)self)->xfwfSlider2.thumbColor; values.foreground = ((XfwfSlider2Widget)self)->xfwfLabel.foreground; - values.font = ((XfwfSlider2Widget)self)->xfwfLabel.font->fid; - mask = GCFont | GCBackground | GCForeground; + mask = GCBackground | GCForeground; ((XfwfSlider2Widget)self)->xfwfLabel.gc = XtGetGC(self, mask, &values); } /*ARGSUSED*/ diff --git a/src/wxxt/src/XWidgets/xwSlider2.w b/src/wxxt/src/XWidgets/xwSlider2.w index 3c058865f5..0cc4dd2c01 100644 --- a/src/wxxt/src/XWidgets/xwSlider2.w +++ b/src/wxxt/src/XWidgets/xwSlider2.w @@ -602,8 +602,7 @@ position of the thumb. if ($gc != NULL) XtReleaseGC($, $gc); values.background = $thumbColor; values.foreground = $foreground; - values.font = $font->fid; - mask = GCFont | GCBackground | GCForeground; + mask = GCBackground | GCForeground; $gc = XtGetGC($, mask, &values); } diff --git a/src/wxxt/src/XWidgets/xwTabString.c b/src/wxxt/src/XWidgets/xwTabString.c index 1c4dd99e4d..c9bc33e74b 100644 --- a/src/wxxt/src/XWidgets/xwTabString.c +++ b/src/wxxt/src/XWidgets/xwTabString.c @@ -176,7 +176,7 @@ static int xdoDraw(measure, font, * counterpart. */ static void -doDrawImageString(display, drawable, gc, x, y, string, length, tabs, font, xfont, line, image, xon, clip) +doDrawImageString(display, drawable, gc, x, y, string, length, tabs, font, xfont, line, image, xon, clip, doamps) Display *display; Drawable drawable; GC gc; @@ -191,6 +191,7 @@ doDrawImageString(display, drawable, gc, x, y, string, length, tabs, font, xfont int image; int xon; Region clip; + int doamps; { register char *p, *ep, *ap; register int tx, tab; @@ -242,7 +243,7 @@ doDrawImageString(display, drawable, gc, x, y, string, length, tabs, font, xfont ep = strnchr(p, '\t', length); else ep = NULL; - if (font) + if (doamps) ap = strnchr(p, '&', length); else ap = NULL; @@ -312,11 +313,11 @@ XfwfDrawImageString(display, drawable, gc, x, y, string, length, tabs, fnt, xfnt int xon; Region clip; { - doDrawImageString(display, drawable, gc, x, y, string, length, tabs, fnt, xfnt, 1, 1, xon, clip); + doDrawImageString(display, drawable, gc, x, y, string, length, tabs, fnt, xfnt, 1, 1, xon, clip, 1); } void -XfwfDrawString(display, drawable, gc, x, y, string, length, tabs, fnt, xfnt, xon, line, clip) +XfwfDrawString(display, drawable, gc, x, y, string, length, tabs, fnt, xfnt, xon, line, clip, doamps) Display *display; Drawable drawable; GC gc; @@ -330,8 +331,9 @@ XfwfDrawString(display, drawable, gc, x, y, string, length, tabs, fnt, xfnt, xon int line; int xon; Region clip; + int doamps; { - doDrawImageString(display, drawable, gc, x, y, string, length, tabs, fnt, xfnt, line, 0, xon, clip); + doDrawImageString(display, drawable, gc, x, y, string, length, tabs, fnt, xfnt, line, 0, xon, clip, doamps); } /* diff --git a/src/wxxt/src/XWidgets/xwTabString.h b/src/wxxt/src/XWidgets/xwTabString.h index 7149c396c3..76c875e3a2 100644 --- a/src/wxxt/src/XWidgets/xwTabString.h +++ b/src/wxxt/src/XWidgets/xwTabString.h @@ -11,8 +11,8 @@ #ifdef WX_USE_XFT # define wxExtFont XftFont* # define wxEXT_FONT(x) x -# define wx_ASCENT(f, xf) (xf ? xf->ascent : f->ascent) -# define wx_DESCENT(f, xf) (xf ? xf->descent : f->descent) +# define wx_ASCENT(f, xf) (xf ? xf->ascent : (f ? f->ascent : 10)) +# define wx_DESCENT(f, xf) (xf ? xf->descent : (f ? f->descent : 4)) #else # define wxExtFont void* # define wxEXT_FONT(x) NULL @@ -27,7 +27,7 @@ extern void XfwfDrawImageString(Display *display, Drawable drawable, extern void XfwfDrawString(Display *display, Drawable drawable, GC gc, int x, int y, String string, int length, int *tabs, XFontStruct *fnt, wxExtFont f, - int xon, int drawLine, Region clip); + int xon, int drawLine, Region clip, int doamps); extern int * XfwfTablist2Tabs(char *tablist); extern int XfwfTextWidth(Display *display, XFontStruct *font, wxExtFont f, String str, int length, int *tabs); diff --git a/src/wxxt/src/XWidgets/xwToggle.c b/src/wxxt/src/XWidgets/xwToggle.c index c69a3ff374..b413b46a0d 100644 --- a/src/wxxt/src/XWidgets/xwToggle.c +++ b/src/wxxt/src/XWidgets/xwToggle.c @@ -197,7 +197,7 @@ XfwfToggleClassRec xfwfToggleClassRec = { /* num_resources */ 7, /* xrm_class */ NULLQUARK, /* compres_motion */ True , -/* compress_exposure */ XtExposeCompressMultiple , +/* compress_exposure */ XtExposeCompressMaximal , /* compress_enterleave */ True , /* visible_interest */ False , /* destroy */ destroy, @@ -309,8 +309,8 @@ static void initialize(request,self,args,num_args)Widget request;Widget self;Ar if (!((XfwfToggleWidget)self)->xfwfToggle.indicatorSize || ((XfwfToggleWidget)self)->xfwfToggle.indicatorSize > wx_ASCENT(((XfwfToggleWidget)self)->xfwfLabel.font, ((wxExtFont)((XfwfToggleWidget)self)->xfwfLabel.xfont))) ((XfwfToggleWidget)self)->xfwfToggle.indicatorSize = wx_ASCENT(((XfwfToggleWidget)self)->xfwfLabel.font, ((wxExtFont)((XfwfToggleWidget)self)->xfwfLabel.xfont)); } else { - if (!((XfwfToggleWidget)self)->xfwfToggle.indicatorSize || ((XfwfToggleWidget)self)->xfwfToggle.indicatorSize > ((XfwfToggleWidget)self)->xfwfLabel.font->ascent) - ((XfwfToggleWidget)self)->xfwfToggle.indicatorSize = ((XfwfToggleWidget)self)->xfwfLabel.font->ascent + 2; + if (!((XfwfToggleWidget)self)->xfwfToggle.indicatorSize || ((XfwfToggleWidget)self)->xfwfToggle.indicatorSize > (((XfwfToggleWidget)self)->xfwfLabel.font ? ((XfwfToggleWidget)self)->xfwfLabel.font->ascent : 10)) + ((XfwfToggleWidget)self)->xfwfToggle.indicatorSize = (((XfwfToggleWidget)self)->xfwfLabel.font ? ((XfwfToggleWidget)self)->xfwfLabel.font->ascent : 10) + 2; } ((XfwfToggleWidget)self)->xfwfToggle.indicator_gc = NULL; diff --git a/src/wxxt/src/XWidgets/xwToggle.w b/src/wxxt/src/XWidgets/xwToggle.w index 39bad7fdc0..e855dd53e8 100644 --- a/src/wxxt/src/XWidgets/xwToggle.w +++ b/src/wxxt/src/XWidgets/xwToggle.w @@ -131,8 +131,8 @@ increased to make room for the indicators. if (!$indicatorSize || $indicatorSize > wx_ASCENT($font, ((wxExtFont)$xfont))) $indicatorSize = wx_ASCENT($font, ((wxExtFont)$xfont)); } else { - if (!$indicatorSize || $indicatorSize > $font->ascent) - $indicatorSize = $font->ascent + 2; + if (!$indicatorSize || $indicatorSize > ($font ? $font->ascent : 10)) + $indicatorSize = ($font ? $font->ascent : 10) + 2; } $indicator_gc = NULL; diff --git a/src/wxxt/src/x/wbuild/src/generatedoc.c b/src/wxxt/src/x/wbuild/src/generatedoc.c index e24bad381d..6ff8f67c96 100644 --- a/src/wxxt/src/x/wbuild/src/generatedoc.c +++ b/src/wxxt/src/x/wbuild/src/generatedoc.c @@ -798,6 +798,7 @@ inline static void private_methods(FILE *f, tagpair *tag, Class c) macro(f, tag, s); break; default: + break; } } fputs(tclose(t_section), f);