Re: lesstif (Re: Xaw, Motif, etc. (Re: ptetex3 on suse10))

名前: たけむら
日時: 2005-11-25 22:43:48
IPアドレス: 211.12.18.*

>>39438 遅い返事で申し訳ありません。 > 差し支えなければ,パッチを見せていただけると,次の一歩が踏み出せるのでは > ないかと思いますが,いかがでしょうか. パッチを見て頂くのは、全く差し支えありません。使用して頂いて お役に立てればこれに越したことはありません。ヤミクモにパッチを当てて 訳の判らない状況になるのを避けようと、まずは原因を確かめようとしました。 以下に私が使っている(た)パッチを記載します。ご参考になれば幸いです。 Tex に直接関係のない話題で、長文になりまして申し訳ありません。 1. lesstif-XmString.c_1.119-break.patch 0.93.94 ではこのパッチ相当の修正がないと起動即死でした。 0.93.95 で修正されています。 ===================================================== diff -uNr lesstif-0.93.94-Orig/lib/Xm/XmString.c lesstif-0.93.94/lib/Xm/XmString.c --- lesstif-0.93.94-Orig/lib/Xm/XmString.c Sun Sep 14 03:48:39 2003 +++ lesstif-0.93.94/lib/Xm/XmString.c Thu Jan 22 19:58:02 2004 @@ -3685,6 +3685,7 @@ current_x + xo + ww - 1, current_y + line_descent); } + break; #if USE_XFT case XmFONT_IS_XFT: /* FIX ME need to underline */ diff -uNr lesstif-0.93.94-Orig/lib/Xm-2.1/XmString.c lesstif-0.93.94/lib/Xm-2.1/XmString.c --- lesstif-0.93.94-Orig/lib/Xm-2.1/XmString.c Sun Sep 14 03:48:39 2003 +++ lesstif-0.93.94/lib/Xm-2.1/XmString.c Thu Jan 22 19:59:08 2004 @@ -3685,6 +3685,7 @@ current_x + xo + ww - 1, current_y + line_descent); } + break; #if USE_XFT case XmFONT_IS_XFT: /* FIX ME need to underline */ ==================================================== 2. lesstif-0.94.0-fun-fix.patch 大昔にふなださんが作られたパッチで、upstream に取り込まれていない部分のうち、 bugfix と思われるものです。但し、当てなくても「起動即死」はしませんでした。 =================================================== diff -uNr lesstif-0.94.0/lib/Xm-2.1/DragC.c lesstif-0.94.0-fix/lib/Xm-2.1/DragC.c --- lesstif-0.94.0/lib/Xm-2.1/DragC.c Sun Aug 29 04:22:43 2004 +++ lesstif-0.94.0-fix/lib/Xm-2.1/DragC.c Thu Feb 24 11:57:56 2005 @@ -1111,7 +1111,7 @@ { DC_Operation(dc) = XmDROP_LINK; } - else if (DC_DragOperations(dc) && XmDROP_COPY) + else if (DC_DragOperations(dc) & XmDROP_COPY) /* Bug Fix by fun */ { DC_Operation(dc) = XmDROP_COPY; } @@ -2111,7 +2111,7 @@ { DC_Operation(w) = XmDROP_LINK; } - else if (DC_DragOperations(w) && XmDROP_COPY) + else if (DC_DragOperations(w) & XmDROP_COPY) /* Bug Fix by fun */ { DC_Operation(w) = XmDROP_COPY; } diff -uNr lesstif-0.94.0/lib/Xm-2.1/Text.c lesstif-0.94.0-fix/lib/Xm-2.1/Text.c --- lesstif-0.94.0/lib/Xm-2.1/Text.c Fri Oct 22 03:54:00 2004 +++ lesstif-0.94.0-fix/lib/Xm-2.1/Text.c Fri Feb 25 12:59:18 2005 @@ -2711,7 +2711,7 @@ /* FIX ME this can be more efficient */ for (i=0; i<Text_Highlight(w).number && Text_Highlight(w).list[i].position < left; i++) ; /* i points to the entry just beyond "left" */ - for (j=i; j<Text_Highlight(w).number && Text_Highlight(w).list[j].position < right; j++) ; + for (j=i; j<Text_Highlight(w).number && Text_Highlight(w).list[j].position <= right; j++) ; if (i < j-1) { for (k=i+1, l=j; l<Text_Highlight(w).number; k++,l++) diff -uNr lesstif-0.94.0/lib/Xm-2.1/TextIn.c lesstif-0.94.0-fix/lib/Xm-2.1/TextIn.c --- lesstif-0.94.0/lib/Xm-2.1/TextIn.c Fri Oct 22 03:54:00 2004 +++ lesstif-0.94.0-fix/lib/Xm-2.1/TextIn.c Thu Feb 24 22:04:25 2005 @@ -719,7 +719,7 @@ sel = (*Text_Source(w)->GetSelection) (Text_Source(w), &left, &right); if (sel && In_PendingDelete(Text_Input(w)->data) && - Text_CursorPos(w)>=left && Text_CursorPos(w)<=right) + Text_CursorPos(w)>=left && Text_CursorPos(w)<right) /* '<=' by fun */ { cbs.currInsert = Text_CursorPos(w); cbs.startPos = left; diff -uNr lesstif-0.94.0/lib/Xm-2.1/TextOut.c lesstif-0.94.0-fix/lib/Xm-2.1/TextOut.c --- lesstif-0.94.0/lib/Xm-2.1/TextOut.c Fri Oct 22 03:54:00 2004 +++ lesstif-0.94.0-fix/lib/Xm-2.1/TextOut.c Fri Feb 25 20:50:28 2005 @@ -817,7 +817,8 @@ } } - while (np != -1 && np <= next->start - 1) + while (np != -1 && np <= next->start - 1 && hi < mh -1) + /* prevent SEGV by fun. */ { XmTextPosition drawTo = np; #if 0 ========================================== 3. lesstif-0.94.0-xft+fontset_in_fontlist.patch 私の環境では fontlist リソースを利用するのに必要です。 副作用の検討が不足しています。(私の環境では見当たりません。) 当てなくても起動即死はしませんでした。(日本語が化けた。) ================================== --- lesstif-0.94.0/lib/Xm-2.1/TextF.c.font_set Tue Mar 8 19:25:25 2005 +++ lesstif-0.94.0/lib/Xm-2.1/TextF.c Tue Mar 8 19:30:19 2005 @@ -6957,7 +6957,10 @@ */ v->addr = NULL; /* FIX ME or should we pass nothing ? */ } else { - v->addr = (char *)&(tf->text.font); + if ((tf->text.font == NULL) && (tf->text.font_list != NULL)) + v->addr = (XPointer)&(tf->text.font_list); + else + v->addr = (char *)&(tf->text.font); tf->text.check_set_render_table = True; DEBUGOUT(_LtDebug(__FILE__, w, "_XmTextFSetRenderTable rt %p\n", tf->text.font)); ============================== 4. lesstif-0.94.2-cast.patch gcc の warning を減らすために当てました。 抜いても起動即死はしません。 ============================== diff -uNr lesstif-0.94.0-cast/lib/Xm-2.1/DebugUtil.c lesstif-0.94.0/lib/Xm-2.1/DebugUtil.c --- lesstif-0.94.0-cast/lib/Xm-2.1/DebugUtil.c Sun Oct 17 01:52:03 2004 +++ lesstif-0.94.0/lib/Xm-2.1/DebugUtil.c Thu Mar 3 11:58:01 2005 @@ -36,6 +36,8 @@ #include <sys/types.h> #endif #include <unistd.h> +/* for backtrace and backtrace_symbols by BLEND */ +#include <execinfo.h> #include <X11/Intrinsic.h> #include <X11/IntrinsicP.h> diff -uNr lesstif-0.94.0-cast/lib/Xm-2.1/FontList.c lesstif-0.94.0/lib/Xm-2.1/FontList.c --- lesstif-0.94.0-cast/lib/Xm-2.1/FontList.c Sat Dec 4 04:45:36 2004 +++ lesstif-0.94.0/lib/Xm-2.1/FontList.c Thu Mar 3 11:58:35 2005 @@ -793,7 +793,7 @@ && _XmXftDrawCache[i].w == w) { _XmXftDrawCache[i].dpy = NULL; _XmXftDrawCache[i].d = NULL; - _XmXftDrawCache[i].w = NULL; + _XmXftDrawCache[i].w = 0; XftDrawDestroy(d); return; } diff -uNr lesstif-0.94.0-cast/lib/Xm-2.1/Frame.c lesstif-0.94.0/lib/Xm-2.1/Frame.c --- lesstif-0.94.0-cast/lib/Xm-2.1/Frame.c Sun Oct 17 01:52:03 2004 +++ lesstif-0.94.0/lib/Xm-2.1/Frame.c Thu Mar 3 12:13:37 2005 @@ -97,6 +97,8 @@ XtWidgetGeometry *desired, Dimension wd, Dimension ht, Boolean commit); +/* external, from DebugUtil.c by BLEND */ +extern const char * _LtDebugFrameChildType2String(int action); /* * resources for the frame class diff -uNr lesstif-0.94.0-cast/lib/Xm-2.1/RenderTable.c lesstif-0.94.0/lib/Xm-2.1/RenderTable.c --- lesstif-0.94.0-cast/lib/Xm-2.1/RenderTable.c Sun Aug 29 04:22:45 2004 +++ lesstif-0.94.0/lib/Xm-2.1/RenderTable.c Thu Mar 3 11:54:20 2005 @@ -440,9 +440,9 @@ #ifdef USE_XFT if (strcmp(al[i].name, XmNrenditionForeground) == 0) { /* XftColor */ - from.addr = &al[i].value; + from.addr = (XPointer)(&al[i].value); from.size = sizeof(XtPointer); - to.addr = &r->xft_foreground; + to.addr = (XPointer)&r->xft_foreground; to.size = sizeof(XftColor); ok = XtConvertAndStore(w, @@ -451,9 +451,9 @@ } else if (strcmp(al[i].name, XmNrenditionBackground) == 0) { /* XftColor */ - from.addr = &al[i].value; + from.addr = (XPointer)&al[i].value; from.size = sizeof(XtPointer); - to.addr = &r->xft_background; + to.addr = (XPointer)&r->xft_background; to.size = sizeof(XftColor); ok = XtConvertAndStore(w, XmRString, &from, diff -uNr lesstif-0.94.0-cast/lib/Xm-2.1/TextF.c lesstif-0.94.0/lib/Xm-2.1/TextF.c --- lesstif-0.94.0-cast/lib/Xm-2.1/TextF.c Sun Nov 28 19:32:27 2004 +++ lesstif-0.94.0/lib/Xm-2.1/TextF.c Thu Mar 3 12:03:19 2005 @@ -136,6 +136,12 @@ int _XmTextF_FontTextWidth(Widget w, char *s, int l); +/* from FontList.c, by BLEND */ +#ifdef USE_XFT +void _XmXftSetClipRectangles(Widget w, Position x, Position y, + XRectangle *rects, int n); +#endif + enum ModifyTextCursorPosition { CP_Reset, /* Reset cursor position to 0 */ CP_StartOfInsert, /* Leave cursor at start of inserted text */ @@ -933,7 +937,7 @@ height = TextF_XftFont(w)->height; } else { if (w->text.font_list->renditions[0]->type == XmFONT_IS_FONT) { - XFontStruct *fs = w->text.font_list->renditions[0]->font; + XFontStruct *fs = (XFontStruct *)(w->text.font_list->renditions[0]->font); width_erase = 2 * fs->max_bounds.width; height = fs->max_bounds.ascent + fs->max_bounds.descent; diff -uNr lesstif-0.94.0-cast/lib/Xm-2.1/XmString.c lesstif-0.94.0/lib/Xm-2.1/XmString.c --- lesstif-0.94.0-cast/lib/Xm-2.1/XmString.c Thu Oct 21 04:21:48 2004 +++ lesstif-0.94.0/lib/Xm-2.1/XmString.c Thu Mar 3 12:09:00 2005 @@ -4826,7 +4826,9 @@ { /* XXX May not be the safest way to determine that string is Unicode */ if (strncasecmp(context->charset, "iso10646", 8) == 0) { - int size = (_ucstrlen(context->text) + 1) * 2; + /* Is this OK ? static int _ucstrlen(const unicode_t * uch); + while (char *)context->text (BLEND) */ + int size = (_ucstrlen((unicode_t *)context->text) + 1) * 2; void* ucstr = XtMalloc(size); memcpy(ucstr, context->text, size); *text = (char*)ucstr; --- lesstif-0.94.2/lib/Xm-2.1/ResConvert.c.ORIG Sun Mar 27 04:26:52 2005 +++ lesstif-0.94.2/lib/Xm-2.1/ResConvert.c Fri Apr 1 20:24:07 2005 @@ -33,6 +33,7 @@ #include <ctype.h> #include <string.h> +#include <X11/Xlib.h> #include <X11/Xresource.h> #include <XmI/XmI.h> =========================== 5. lesstif-0.94.0-fun-no_overthespot.patch over the spot 変換では既に入力したテキストエリアが im のウィンドーに隠れて 使えないので、殺しました。昔、ふなださんが作成されました。 挙動を換えるだけで、起動即死とは関係ありません。 ========================== --- lesstif-0.94.0/lib/Xm-2.1/XmIm.c.nooverthespot Thu Oct 21 04:32:11 2004 +++ lesstif-0.94.0/lib/Xm-2.1/XmIm.c Wed Mar 9 18:51:02 2005 @@ -181,8 +181,8 @@ static XIMStyle style_bits[] = { - /* OverTheSpot */ XIMPreeditPosition | XIMStatusArea, - /* OffTheSpot */ XIMPreeditArea | XIMStatusArea, + /* OverTheSpot */ XIMPreeditPosition | XIMStatusNothing, + /* OffTheSpot */ XIMPreeditPosition | XIMStatusNothing, /* Like rxvt */ XIMPreeditPosition | XIMStatusNothing, /* Root */ XIMPreeditNothing | XIMStatusNothing, /* Not really root */ XIMPreeditNone | XIMStatusNone =========================== 6. lesstif-0.94.2-autoconf-2.56-ft219.patch autoconf-2.56 と freetype-2.1.9 で build するのに必要でした。 (多分関係ないので省略します。) 以上です。

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)