diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2018-05-28 19:12:29 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2018-05-31 23:39:35 +0200 |
commit | 646a5c1cbfd95873950a87b5f75d52073a967023 (patch) | |
tree | b8b8d2ab3b0d432ea69ad1a64d1c789649d65020 /source/l/gtk+/gtk+-1.2.10-ahiguti.patch | |
parent | d31c50870d0bee042ce660e445c9294a59a3a65b (diff) | |
download | current-646a5c1cbfd95873950a87b5f75d52073a967023.tar.gz |
Mon May 28 19:12:29 UTC 201820180528191229
a/pkgtools-15.0-noarch-13.txz: Rebuilt.
installpkg: default line length for --terselength is the number of columns.
removepkg: added --terse mode.
upgradepkg: default line length for --terselength is the number of columns.
upgradepkg: accept -option in addition to --option.
ap/vim-8.1.0026-x86_64-1.txz: Upgraded.
d/bison-3.0.5-x86_64-1.txz: Upgraded.
e/emacs-26.1-x86_64-1.txz: Upgraded.
kde/kopete-4.14.3-x86_64-8.txz: Rebuilt.
Recompiled against libidn-1.35.
n/conntrack-tools-1.4.5-x86_64-1.txz: Upgraded.
n/libnetfilter_conntrack-1.0.7-x86_64-1.txz: Upgraded.
n/libnftnl-1.1.0-x86_64-1.txz: Upgraded.
n/links-2.16-x86_64-2.txz: Rebuilt.
Rebuilt to enable X driver for -g mode.
n/lynx-2.8.9dev.19-x86_64-1.txz: Upgraded.
n/nftables-0.8.5-x86_64-1.txz: Upgraded.
n/p11-kit-0.23.11-x86_64-1.txz: Upgraded.
n/ulogd-2.0.7-x86_64-1.txz: Upgraded.
n/whois-5.3.1-x86_64-1.txz: Upgraded.
xap/network-manager-applet-1.8.12-x86_64-1.txz: Upgraded.
xap/vim-gvim-8.1.0026-x86_64-1.txz: Upgraded.
Diffstat (limited to 'source/l/gtk+/gtk+-1.2.10-ahiguti.patch')
-rw-r--r-- | source/l/gtk+/gtk+-1.2.10-ahiguti.patch | 557 |
1 files changed, 557 insertions, 0 deletions
diff --git a/source/l/gtk+/gtk+-1.2.10-ahiguti.patch b/source/l/gtk+/gtk+-1.2.10-ahiguti.patch new file mode 100644 index 00000000..68f091c5 --- /dev/null +++ b/source/l/gtk+/gtk+-1.2.10-ahiguti.patch @@ -0,0 +1,557 @@ +Return-Path: a-higuti@math.sci.hokudai.ac.jp +Delivery-Date: Thu Sep 23 14:52:43 1999 +Return-Path: <a-higuti@math.sci.hokudai.ac.jp> +Received: from localhost (IDENT:otaylor@localhost [127.0.0.1]) + by fresnel.labs.redhat.com (8.9.3/8.9.3) with ESMTP id OAA00891 + for <otaylor@localhost>; Thu, 23 Sep 1999 14:52:41 -0400 +Received: from lacrosse.redhat.com + by localhost with POP3 (fetchmail-5.0.0) + for otaylor@localhost (single-drop); Thu, 23 Sep 1999 14:52:42 -0400 (EDT) +Received: from mail.redhat.com (mail.redhat.com [199.183.24.239]) + by lacrosse.corp.redhat.com (8.9.3/8.9.3) with ESMTP id OAA19205 + for <otaylor@lacrosse.redhat.com>; Thu, 23 Sep 1999 14:01:27 -0400 +Received: from math.sci.hokudai.ac.jp (seki.math.sci.hokudai.ac.jp [133.50.152.8]) + by mail.redhat.com (8.8.7/8.8.7) with ESMTP id OAA13383 + for <otaylor@redhat.com>; Thu, 23 Sep 1999 14:01:49 -0400 +Received: from heathcliff (a-higuti@hilbert.math.sci.hokudai.ac.jp [133.50.152.11]) + by math.sci.hokudai.ac.jp (8.8.8/3.6W01/06/98) with SMTP id DAA23889 + for <otaylor@redhat.com>; Fri, 24 Sep 1999 03:01:10 +0900 (JST) +Date: Fri, 24 Sep 1999 03:01:10 +0900 (JST) +Message-Id: <199909231801.DAA23889@math.sci.hokudai.ac.jp> +From: a-higuti@math.sci.hokudai.ac.jp (Akira Higuchi) +To: otaylor@redhat.com +Subject: Adding more gdk_isw* macros +Mime-Version: 1.0 +Content-Type: text/plain; charset=US-ASCII +Status: O +Lines: 528 +Xref: fresnel.labs.redhat.com prog-gtk:648 + +Hello Owen, + +I'm working on adding CJK support to gnome apps, and I need your advice. + +As you know, gtk+-1.2 has some support for CJK. It's sufficient for most +gnome apps to be internationalized, but some problems remain. The most +problem is that there is no way of doing word wrapping for CJK strings. + +For example, gtk-xmhtml shows Japanese text very uglily, because Japanese +sentences are recognized as very long words. (a Japanese sentence +contain any spaces in most cases.) The same problem is in gtk+ itself, too; +Word wrapping in GtkLabel and GtkText doesn't work correctly for CJK text, +because of the same reason as above. + +In order to fix it, we need more gdk_isw* functions than we already have +in gdki18n.h. (I regret I didn't add them before gtk+-1.2 was released.) +I attach herewith a patch which fixes it, but I think it's not acceptable +to adding a new macro to a stable version of gtk+. (is it?) + +The question I want to ask you is: what's the best way of fixing the +problem without adding these macros to gdki18n.h? A solution is to add +these macros to each *.c files (in GtkLabel, GtkText, and gtkxmhtml etc.) +rather than gtki18n.h, but it's very ugly I think. + +Please don't say "wait until gscript is completed" ;-( I don't want to +wait for a long time. (Please let me know if I can help you with gscript +BTW. I've not hacked gscript yet, because it seems to be too early to be +hacked by other than you.) + +Thanks, +Akira Higuchi +---------------- x8 ---------------- x8 ---------------- x8 ---------------- +diff -up gtk+-1.2.10/gdk/gdki18n.h.ahiguti gtk+-1.2.10/gdk/gdki18n.h +--- gtk+-1.2.10/gdk/gdki18n.h.ahiguti 2000-01-24 03:58:21.000000000 +0100 ++++ gtk+-1.2.10/gdk/gdki18n.h 2008-10-02 10:43:26.000000000 +0200 +@@ -51,4 +51,32 @@ + # define gdk_iswspace(c) ((wchar_t)(c) <= 0xFF && isspace(c)) + #endif + ++/* The following 9 macros are added in gtk+ 1.2.X. Don't use them without ++ * checking GTK_CHECK_VERSION. For example, ++ * #if GTK_CHECK_VERSION (1,2,X) ++ * ... code which uses gdk_iswalpha(), gdk_iswcntrl(), etc. ... ++ * #endif ++ */ ++#if !defined(G_HAVE_BROKEN_WCTYPE) && (defined(G_HAVE_WCTYPE_H) || defined(G_HAVE_WCHAR_H)) && !defined(X_LOCALE) ++# define gdk_iswalpha(c) iswalpha(c) ++# define gdk_iswcntrl(c) iswcntrl(c) ++# define gdk_iswdigit(c) iswdigit(c) ++# define gdk_iswlower(c) iswlower(c) ++# define gdk_iswgraph(c) iswgraph(c) ++# define gdk_iswprint(c) iswprint(c) ++# define gdk_iswpunct(c) iswpunct(c) ++# define gdk_iswupper(c) iswupper(c) ++# define gdk_iswxdigit(c) iswxdigit(c) ++#else ++# define gdk_iswalpha(c) ((wchar_t)(c) <= 0xFF && isalpha(c)) ++# define gdk_iswcntrl(c) ((wchar_t)(c) <= 0xFF && iscntrl(c)) ++# define gdk_iswdigit(c) ((wchar_t)(c) <= 0xFF && isdigit(c)) ++# define gdk_iswlower(c) ((wchar_t)(c) <= 0xFF && islower(c)) ++# define gdk_iswgraph(c) ((wchar_t)(c) > 0xFF || isgraph(c)) ++# define gdk_iswprint(c) ((wchar_t)(c) > 0xFF || isprint(c)) ++# define gdk_iswpunct(c) ((wchar_t)(c) <= 0xFF && ispunct(c)) ++# define gdk_iswupper(c) ((wchar_t)(c) <= 0xFF && isupper(c)) ++# define gdk_iswxdigit(c) ((wchar_t)(c) <= 0xFF && isxdigit(c)) ++#endif ++ + #endif /* __GDK_I18N_H__ */ +diff -up gtk+-1.2.10/gtk/gtkentry.c.ahiguti gtk+-1.2.10/gtk/gtkentry.c +--- gtk+-1.2.10/gtk/gtkentry.c.ahiguti 2001-04-02 04:14:54.000000000 +0200 ++++ gtk+-1.2.10/gtk/gtkentry.c 2008-10-02 10:43:26.000000000 +0200 +@@ -2036,11 +2036,21 @@ gtk_entry_move_word (GtkEditable *editab + } + } + ++static gboolean ++alnum_or_ideogram (GtkEntry *entry, guint index) ++{ ++ GdkWChar ch; ++ ch = entry->text[index]; ++ if (entry->use_wchar) ++ return !(gdk_iswpunct (ch) || gdk_iswcntrl (ch) || gdk_iswspace (ch)); ++ else ++ return !(ispunct (ch) || iscntrl (ch) || isspace (ch)); ++} ++ + static void + gtk_move_forward_word (GtkEntry *entry) + { + GtkEditable *editable; +- GdkWChar *text; + gint i; + + editable = GTK_EDITABLE (entry); +@@ -2054,21 +2064,12 @@ gtk_move_forward_word (GtkEntry *entry) + + if (entry->text && (editable->current_pos < entry->text_length)) + { +- text = entry->text; +- i = editable->current_pos; +- +- if ((entry->use_wchar) ? (!gdk_iswalnum (text[i])) : (!isalnum (text[i]))) +- for (; i < entry->text_length; i++) +- { +- if ((entry->use_wchar) ? gdk_iswalnum (text[i]) : isalnum (text[i])) +- break; +- } +- ++ for (i = editable->current_pos; i < entry->text_length; i++) ++ if (alnum_or_ideogram (entry, i)) ++ break; + for (; i < entry->text_length; i++) +- { +- if ((entry->use_wchar) ? (!gdk_iswalnum (text[i])) : (!isalnum (text[i]))) +- break; +- } ++ if (!alnum_or_ideogram (entry, i)) ++ break; + + editable->current_pos = i; + } +@@ -2078,7 +2079,6 @@ static void + gtk_move_backward_word (GtkEntry *entry) + { + GtkEditable *editable; +- GdkWChar *text; + gint i; + + editable = GTK_EDITABLE (entry); +@@ -2092,26 +2092,19 @@ gtk_move_backward_word (GtkEntry *entry) + + if (entry->text && editable->current_pos > 0) + { +- text = entry->text; +- i = editable->current_pos - 1; +- if ((entry->use_wchar) ? (!gdk_iswalnum (text[i])) : (!isalnum (text[i]))) +- for (; i >= 0; i--) ++ for (i = editable->current_pos - 1; i >= 0; i--) ++ if (alnum_or_ideogram (entry, i)) ++ break; ++ for (; i >= 0; i--) ++ if (!alnum_or_ideogram (entry, i)) + { +- if ((entry->use_wchar) ? gdk_iswalnum (text[i]) : isalnum (text[i])) +- break; ++ i++; ++ break; + } +- for (; i >= 0; i--) +- { +- if ((entry->use_wchar) ? (!gdk_iswalnum (text[i])) : (!isalnum (text[i]))) +- { +- i++; +- break; +- } +- } +- ++ + if (i < 0) + i = 0; +- ++ + editable->current_pos = i; + } + } +diff -up gtk+-1.2.10/gtk/gtklabel.c.ahiguti gtk+-1.2.10/gtk/gtklabel.c +--- gtk+-1.2.10/gtk/gtklabel.c.ahiguti 2001-04-02 05:12:38.000000000 +0200 ++++ gtk+-1.2.10/gtk/gtklabel.c 2008-10-02 10:43:26.000000000 +0200 +@@ -56,6 +56,7 @@ struct _GtkLabelWord + GtkLabelWord *next; + gint uline_y; + GtkLabelULine *uline; ++ gboolean paragraph_break; + }; + + struct _GtkLabelULine +@@ -396,6 +397,7 @@ gtk_label_word_alloc (void) + word->beginning = NULL; + word->next = NULL; + word->uline = NULL; ++ word->paragraph_break = FALSE; + + return word; + } +@@ -441,6 +443,7 @@ gtk_label_split_text (GtkLabel *label) + if (str == label->label_wc || str[-1] == '\n') + { + /* Paragraph break */ ++ word->paragraph_break = TRUE; + word->space = 0; + + max_line_width = MAX (line_width, max_line_width); +@@ -488,6 +491,7 @@ gtk_label_split_text (GtkLabel *label) + { + word = gtk_label_word_alloc (); + ++ word->paragraph_break = TRUE; + word->space = 0; + word->beginning = str; + word->length = 0; +@@ -500,6 +504,13 @@ gtk_label_split_text (GtkLabel *label) + return MAX (line_width, max_line_width); + } + ++static gboolean ++is_ideogram (GdkWChar wc) ++{ ++ return !(gdk_iswalnum (wc) || gdk_iswspace (wc) || ++ gdk_iswpunct (wc) || gdk_iswcntrl (wc)); ++} ++ + /* this needs to handle white space better. */ + static gint + gtk_label_split_text_wrapped (GtkLabel *label) +@@ -526,6 +537,7 @@ gtk_label_split_text_wrapped (GtkLabel * + if (str == label->label_wc || str[-1] == '\n') + { + /* Paragraph break */ ++ word->paragraph_break = TRUE; + word->space = 0; + + max_line_width = MAX (line_width, max_line_width); +@@ -546,24 +558,30 @@ gtk_label_split_text_wrapped (GtkLabel * + else + word->space = space_width * nspaces; + } +- else ++ else if (gdk_iswspace (str[-1])) + { + /* Regular inter-word space */ + word->space = space_width; + } ++ else ++ { ++ word->space = 0; ++ } + + word->beginning = str; + word->length = 0; + p = word->beginning; + while (*p && !gdk_iswspace (*p)) + { ++ if (word->length > 0 && (is_ideogram (p[-1]) || is_ideogram (*p))) ++ break; + word->length++; + p++; + } + word->width = gdk_text_width_wc (GTK_WIDGET (label)->style->font, str, word->length); + + str += word->length; +- if (*str) ++ if (*str && gdk_iswspace (*str)) + str++; + + line_width += word->space + word->width; +@@ -600,7 +618,7 @@ gtk_label_pick_width (GtkLabel *label, + width = 0; + for (word = label->words; word; word = word->next) + { +- if (word->space == 0 ++ if (word->paragraph_break + || (line_width + && (line_width >= min_width + || line_width + word->width + word->space > max_width))) +@@ -716,7 +734,8 @@ gtk_label_finalize_lines_wrap (GtkLabel + GtkLabelWord *word, *line, *next_line; + GtkWidget *widget; + gchar *ptrn; +- gint x, y, space, extra_width, add_space, baseline_skip; ++ gint x, y, space, num_words, extra_width, add_space, baseline_skip; ++ gboolean deliver_equivalently; + + g_return_if_fail (label->wrap); + +@@ -724,20 +743,24 @@ gtk_label_finalize_lines_wrap (GtkLabel + y = 0; + baseline_skip = (GTK_WIDGET (label)->style->font->ascent + + GTK_WIDGET (label)->style->font->descent + 1); ++ deliver_equivalently = FALSE; + + for (line = label->words; line != 0; line = next_line) + { +- space = 0; ++ space = num_words = 0; + extra_width = max_line_width - line->width; + + for (next_line = line->next; next_line; next_line = next_line->next) + { +- if (next_line->space == 0) ++ if (next_line->paragraph_break) + break; /* New paragraph */ + if (next_line->space + next_line->width > extra_width) + break; ++ if (next_line->space == 0) ++ deliver_equivalently = TRUE; /* An ideogram is found. */ + extra_width -= next_line->space + next_line->width; + space += next_line->space; ++ num_words++; + } + + line->x = 0; +@@ -747,14 +770,18 @@ gtk_label_finalize_lines_wrap (GtkLabel + + for (word = line->next; word != next_line; word = word->next) + { +- if (next_line && next_line->space) ++ if (next_line && !next_line->paragraph_break && ++ label->jtype == GTK_JUSTIFY_FILL && ++ (deliver_equivalently ? num_words : space) > 0) + { +- /* Not last line of paragraph --- fill line if needed */ +- if (label->jtype == GTK_JUSTIFY_FILL) { ++ /* Not last line of paragraph --- fill line */ ++ if (deliver_equivalently) ++ add_space = (extra_width + num_words / 2) / num_words; ++ else + add_space = (extra_width * word->space + space / 2) / space; +- extra_width -= add_space; +- space -= word->space; +- } ++ extra_width -= add_space; ++ space -= word->space; ++ num_words--; + } + + word->x = x + word->space + add_space; +@@ -925,7 +952,7 @@ gtk_label_expose (GtkWidget *widget + + for (word = label->words; word; word = word->next) + { +- gchar save = word->beginning[word->length]; ++ GdkWChar save = word->beginning[word->length]; + word->beginning[word->length] = '\0'; + gtk_label_paint_word (label, x, y, word, &event->area); + word->beginning[word->length] = save; +diff -up gtk+-1.2.10/gtk/gtktext.c.ahiguti gtk+-1.2.10/gtk/gtktext.c +--- gtk+-1.2.10/gtk/gtktext.c.ahiguti 2001-03-15 21:15:12.000000000 +0100 ++++ gtk+-1.2.10/gtk/gtktext.c 2008-10-02 10:43:27.000000000 +0200 +@@ -101,6 +101,13 @@ enum { + ARG_WORD_WRAP + }; + ++typedef enum { ++ CHAR_CLASS_SPACE, ++ CHAR_CLASS_ALNUM, ++ CHAR_CLASS_IDEOGRAM, ++ CHAR_CLASS_OTHERS /* punct, cntrl */ ++} CharClass; ++ + typedef struct _TextProperty TextProperty; + typedef struct _TabStopMark TabStopMark; + typedef struct _PrevTabCont PrevTabCont; +@@ -300,6 +307,8 @@ static LineParams find_line_params (GtkT + const GtkPropertyMark *mark, + const PrevTabCont *tab_cont, + PrevTabCont *next_cont); ++static void find_word_wrap_position (GtkText* text, LineParams *lp); ++static CharClass char_class (GtkText* text, guint index); + static void recompute_geometry (GtkText* text); + static void insert_expose (GtkText* text, guint old_pixels, gint nchars, guint new_line_count); + static void delete_expose (GtkText* text, +@@ -4111,27 +4120,21 @@ gtk_text_move_forward_word (GtkText *tex + + undraw_cursor (text, FALSE); + +- if (text->use_wchar) ++ while (!LAST_INDEX (text, text->cursor_mark)) + { +- while (!LAST_INDEX (text, text->cursor_mark) && +- !gdk_iswalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index))) +- advance_mark (&text->cursor_mark); +- +- while (!LAST_INDEX (text, text->cursor_mark) && +- gdk_iswalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index))) +- advance_mark (&text->cursor_mark); ++ CharClass cc = char_class (text, text->cursor_mark.index); ++ if (cc == CHAR_CLASS_ALNUM || cc == CHAR_CLASS_IDEOGRAM) ++ break; ++ advance_mark (&text->cursor_mark); + } +- else ++ while (!LAST_INDEX (text, text->cursor_mark)) + { +- while (!LAST_INDEX (text, text->cursor_mark) && +- !isalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index))) +- advance_mark (&text->cursor_mark); +- +- while (!LAST_INDEX (text, text->cursor_mark) && +- isalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index))) +- advance_mark (&text->cursor_mark); ++ CharClass cc = char_class (text, text->cursor_mark.index); ++ if (cc != CHAR_CLASS_ALNUM && cc != CHAR_CLASS_IDEOGRAM) ++ break; ++ advance_mark (&text->cursor_mark); + } +- ++ + find_cursor (text, TRUE); + draw_cursor (text, FALSE); + } +@@ -4143,25 +4146,19 @@ gtk_text_move_backward_word (GtkText *te + + undraw_cursor (text, FALSE); + +- if (text->use_wchar) ++ while (text->cursor_mark.index > 0) + { +- while ((text->cursor_mark.index > 0) && +- !gdk_iswalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index-1))) +- decrement_mark (&text->cursor_mark); +- +- while ((text->cursor_mark.index > 0) && +- gdk_iswalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index-1))) +- decrement_mark (&text->cursor_mark); ++ CharClass cc = char_class (text, text->cursor_mark.index - 1); ++ if (cc == CHAR_CLASS_ALNUM || cc == CHAR_CLASS_IDEOGRAM) ++ break; ++ decrement_mark (&text->cursor_mark); + } +- else ++ while (text->cursor_mark.index > 0) + { +- while ((text->cursor_mark.index > 0) && +- !isalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index-1))) +- decrement_mark (&text->cursor_mark); +- +- while ((text->cursor_mark.index > 0) && +- isalnum (GTK_TEXT_INDEX(text, text->cursor_mark.index-1))) +- decrement_mark (&text->cursor_mark); ++ CharClass cc = char_class (text, text->cursor_mark.index - 1); ++ if (cc != CHAR_CLASS_ALNUM && cc != CHAR_CLASS_IDEOGRAM) ++ break; ++ decrement_mark (&text->cursor_mark); + } + + find_cursor (text, TRUE); +@@ -4782,27 +4779,8 @@ find_line_params (GtkText* text, + GtkPropertyMark saved_mark = lp.end; + guint saved_characters = lp.displayable_chars; + +- lp.displayable_chars += 1; +- +- if (text->use_wchar) +- { +- while (!gdk_iswspace (GTK_TEXT_INDEX (text, lp.end.index)) && +- (lp.end.index > lp.start.index)) +- { +- decrement_mark (&lp.end); +- lp.displayable_chars -= 1; +- } +- } +- else +- { +- while (!isspace(GTK_TEXT_INDEX (text, lp.end.index)) && +- (lp.end.index > lp.start.index)) +- { +- decrement_mark (&lp.end); +- lp.displayable_chars -= 1; +- } +- } +- ++ find_word_wrap_position (text, &lp); ++ + /* If whole line is one word, revert to char wrapping */ + if (lp.end.index == lp.start.index) + { +@@ -4850,6 +4828,54 @@ find_line_params (GtkText* text, + return lp; + } + ++static CharClass ++char_class (GtkText* text, guint index) ++{ ++ GdkWChar wc; ++ wc = GTK_TEXT_INDEX (text, index); ++ if (text->use_wchar) ++ { ++ if (gdk_iswspace (wc)) ++ return CHAR_CLASS_SPACE; ++ else if (gdk_iswalnum (wc)) ++ return CHAR_CLASS_ALNUM; ++ else if (gdk_iswpunct (wc) || gdk_iswcntrl (wc)) ++ return CHAR_CLASS_OTHERS; ++ else ++ return CHAR_CLASS_IDEOGRAM; ++ } ++ else ++ { ++ if (isspace (wc)) ++ return CHAR_CLASS_SPACE; ++ else if (isalnum (wc)) ++ return CHAR_CLASS_ALNUM; ++ else if (ispunct (wc) || iscntrl (wc)) ++ return CHAR_CLASS_OTHERS; ++ else ++ return CHAR_CLASS_IDEOGRAM; ++ } ++} ++ ++static void ++find_word_wrap_position (GtkText* text, LineParams *lp) ++{ ++ while (lp->end.index > lp->start.index && ++ char_class (text, lp->end.index) != CHAR_CLASS_SPACE && ++ char_class (text, lp->end.index) != CHAR_CLASS_IDEOGRAM && ++ char_class (text, lp->end.index - 1) != CHAR_CLASS_IDEOGRAM) ++ { ++ decrement_mark (&lp->end); ++ lp->displayable_chars -= 1; ++ } ++ ++ /* lp->end.index points the position to be cut just now. If it's not a ++ * space, move it to the next display line. */ ++ if (lp->end.index > lp->start.index && ++ char_class (text, lp->end.index) != CHAR_CLASS_SPACE) ++ decrement_mark (&lp->end); ++} ++ + static void + expand_scratch_buffer (GtkText* text, guint len) + { +---------------- x8 ---------------- x8 ---------------- x8 ---------------- + +-------------------------------------- +Akira Higuchi +Dept. of Mathematics, Hokkaido Univ. +Hokkaido, Japan +Email: a-higuti@math.sci.hokudai.ac.jp |