diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c index a537da6f..10d5a934 100644 --- a/src/fe-gtk/maingui.c +++ b/src/fe-gtk/maingui.c @@ -1504,7 +1504,7 @@ mg_create_color_menu (GtkWidget *menu, session *sess) mg_markup_item (submenu, _("Bold"), 100); mg_markup_item (submenu, _("Underline"), 101); - /*mg_markup_item (submenu, _("Italic"), 102);*/ + mg_markup_item (submenu, _("Italic"), 102); mg_markup_item (submenu, _("Normal"), 103); subsubmenu = mg_submenu (submenu, _("Colors 0-7")); diff --git a/src/fe-gtk/xtext.c b/src/fe-gtk/xtext.c index 9d04d2b0..f0266802 100644 --- a/src/fe-gtk/xtext.c +++ b/src/fe-gtk/xtext.c @@ -21,18 +21,8 @@ * */ -#define HEXCHAT /* using HexChat */ #define TINT_VALUE 195 /* 195/255 of the brightness. */ -#define MOTION_MONITOR /* URL hilights. */ -#define SMOOTH_SCROLL /* line-by-line or pixel scroll? */ -#define SCROLL_HACK /* use XCopyArea scroll, or full redraw? */ -#undef COLOR_HILIGHT /* Color instead of underline? */ -/* Italic is buggy because it assumes drawing an italic string will have - identical extents to the normal font. This is only true some of the - time, so we can't use this hack yet. */ -#undef ITALIC /* support Italic? */ #define GDK_MULTIHEAD_SAFE -#define USE_DB /* double buffer */ #define MARGIN 2 /* dont touch. */ #define REFRESH_TIMEOUT 20 @@ -73,12 +63,8 @@ #define is_del(c) \ (c == ' ' || c == '\n' || c == '>' || c == '<' || c == 0) -#ifdef SCROLL_HACK /* force scrolling off */ #define dontscroll(buf) (buf)->last_pixel_pos = 0x7fffffff -#else -#define dontscroll(buf) -#endif static GtkWidgetClass *parent_class = NULL; @@ -121,10 +107,8 @@ enum static guint xtext_signals[LAST_SIGNAL]; -#ifdef HEXCHAT char *nocasestrstr (const char *text, const char *tofind); /* util.c */ int xtext_get_stamp_str (time_t, char **); -#endif static void gtk_xtext_render_page (GtkXText * xtext); static void gtk_xtext_calc_lines (xtext_buffer *buf, int); #if defined(USE_XLIB) || defined(WIN32) @@ -161,25 +145,6 @@ static void gtk_xtext_search_textentry_fini (gpointer, gpointer); static void gtk_xtext_search_fini (xtext_buffer *); static gboolean gtk_xtext_search_init (xtext_buffer *buf, const gchar *text, gtk_xtext_search_flags flags, GError **perr); -/* some utility functions first */ - -#ifndef HEXCHAT /* HexChat has this in util.c */ - -static char * -nocasestrstr (const char *s, const char *tofind) -{ - register const size_t len = strlen (tofind); - - if (len == 0) - return (char *)s; - while (toupper(*s) != toupper(*tofind) || g_ascii_strncasecmp (s, tofind, len)) - if (*s++ == '\0') - return (char *)NULL; - return (char *)s; -} - -#endif - /* gives width of a 8bit string - with no mIRC codes in it */ static int @@ -250,9 +215,7 @@ static void backend_font_close (GtkXText *xtext) { pango_font_description_free (xtext->font->font); -#ifdef ITALIC pango_font_description_free (xtext->font->ifont); -#endif } static void @@ -307,10 +270,8 @@ backend_font_open (GtkXText *xtext, char *name) xtext->font = NULL; return; } -#ifdef ITALIC xtext->font->ifont = backend_font_open_real (name); pango_font_description_set_style (xtext->font->ifont, PANGO_STYLE_ITALIC); -#endif backend_init (xtext); pango_layout_set_font_description (xtext->layout, xtext->font->font); @@ -395,10 +356,8 @@ backend_draw_text (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y, GdkColor col; PangoLayoutLine *line; -#ifdef ITALIC if (xtext->italics) pango_layout_set_font_description (xtext->layout, xtext->font->ifont); -#endif pango_layout_set_text (xtext->layout, str, len); @@ -431,10 +390,8 @@ backend_draw_text (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y, if (xtext->bold) xtext_draw_layout_line (xtext->draw_buf, gc, x + 1, y, line); -#ifdef ITALIC if (xtext->italics) pango_layout_set_font_description (xtext->layout, xtext->font->font); -#endif } /*static void @@ -470,8 +427,6 @@ xtext_set_bg (GtkXText *xtext, GdkGC *gc, int index) gdk_gc_set_background (gc, &col); } -#endif - static void gtk_xtext_init (GtkXText * xtext) { @@ -574,11 +529,7 @@ gtk_xtext_adjustment_timeout (GtkXText * xtext) static void gtk_xtext_adjustment_changed (GtkAdjustment * adj, GtkXText * xtext) { -#ifdef SMOOTH_SCROLL if (xtext->buffer->old_value != xtext->adj->value) -#else - if ((int) xtext->buffer->old_value != (int) xtext->adj->value) -#endif { if (xtext->adj->value >= xtext->adj->upper - xtext->adj->page_size) xtext->buffer->scrollbar_down = TRUE; @@ -762,11 +713,7 @@ gtk_xtext_realize (GtkWidget * widget) attributes.window_type = GDK_WINDOW_CHILD; attributes.event_mask = gtk_widget_get_events (widget) | GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK -#ifdef MOTION_MONITOR | GDK_POINTER_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK; -#else - | GDK_POINTER_MOTION_MASK; -#endif cmap = gtk_widget_get_colormap (widget); attributes.colormap = cmap; @@ -1690,8 +1637,6 @@ gtk_xtext_get_word (GtkXText * xtext, int x, int y, textentry ** ret_ent, return word; } -#ifdef MOTION_MONITOR - static void gtk_xtext_unrender_hilight (GtkXText *xtext) { @@ -1736,8 +1681,6 @@ gtk_xtext_leave_notify (GtkWidget * widget, GdkEventCrossing * event) return FALSE; } -#endif - /* check if we should mark time stamps, and if a redraw is needed */ static gboolean @@ -1867,7 +1810,6 @@ gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event) } return FALSE; } -#ifdef MOTION_MONITOR if (xtext->separator && xtext->buffer->indent) { @@ -1927,8 +1869,6 @@ gtk_xtext_motion_notify (GtkWidget * widget, GdkEventMotion * event) gtk_xtext_leave_notify (widget, NULL); -#endif - return FALSE; } @@ -2376,9 +2316,7 @@ gtk_xtext_class_init (GtkXTextClass * class) widget_class->selection_get = gtk_xtext_selection_get; widget_class->expose_event = gtk_xtext_expose; widget_class->scroll_event = gtk_xtext_scroll; -#ifdef MOTION_MONITOR widget_class->leave_notify_event = gtk_xtext_leave_notify; -#endif xtext_class->word_click = NULL; } @@ -2653,13 +2591,10 @@ gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str, { if (!xtext->in_hilight) /* is it a hilight prefix? */ return str_width; -#ifndef COLOR_HILIGHT if (!xtext->un_hilight) /* doing a hilight? no need to draw the text */ goto dounder; -#endif } -#ifdef USE_DB #ifdef WIN32 if (!xtext->transparent) #endif @@ -2677,7 +2612,6 @@ gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str, xtext->draw_buf = pix; } } -#endif dofill = TRUE; @@ -2692,7 +2626,6 @@ gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str, backend_draw_text (xtext, dofill, gc, x, y, str, len, str_width, is_mb); -#ifdef USE_DB if (pix) { GdkRectangle clip; @@ -2715,16 +2648,12 @@ gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str, gdk_draw_drawable (xtext->draw_buf, xtext->bgc, pix, dest.x - dest_x, dest.y - dest_y, dest.x, dest.y, dest.width, dest.height); -#endif g_object_unref (pix); } -#endif if (xtext->underline) { -#ifndef COLOR_HILIGHT dounder: -#endif if (pix) y = dest_y + xtext->font->ascent + 1; @@ -2857,21 +2786,15 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent, xtext->backcolor = TRUE; mark = TRUE; } -#ifdef MOTION_MONITOR if (xtext->hilight_ent == ent && xtext->hilight_start <= i + offset && xtext->hilight_end > i + offset) { if (!xtext->un_hilight) { -#ifdef COLOR_HILIGHT - xtext_set_bg (xtext, gc, 2); -#else xtext->underline = TRUE; -#endif } xtext->in_hilight = TRUE; } -#endif if (!xtext->skip_border_fills && !xtext->dont_render) { @@ -2901,7 +2824,6 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent, while (i < len) { -#ifdef MOTION_MONITOR if (xtext->hilight_ent == ent && xtext->hilight_start == (i + offset)) { x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); @@ -2909,16 +2831,11 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent, j = 0; if (!xtext->un_hilight) { -#ifdef COLOR_HILIGHT - xtext_set_bg (xtext, gc, 2); -#else xtext->underline = TRUE; -#endif } xtext->in_hilight = TRUE; } -#endif if ((xtext->parsing_color && isdigit (str[i]) && xtext->nc < 2) || (xtext->parsing_color && str[i] == ',' && isdigit (str[i+1]) && xtext->nc < 3 && !xtext->parsing_backcolor)) @@ -3146,28 +3063,12 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent, xtext->dont_render2 = FALSE; } -#ifdef MOTION_MONITOR if (xtext->hilight_ent == ent && xtext->hilight_end == (i + offset)) { x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, ent->mb); pstr += j; j = 0; -#ifdef COLOR_HILIGHT - if (mark) - { - xtext_set_bg (xtext, gc, XTEXT_MARK_BG); - xtext->backcolor = TRUE; - } else - { - xtext_set_bg (xtext, gc, xtext->col_back); - if (xtext->col_back != XTEXT_BG) - xtext->backcolor = TRUE; - else - xtext->backcolor = FALSE; - } -#else xtext->underline = FALSE; -#endif xtext->in_hilight = FALSE; if (xtext->render_hilights_only) { @@ -3176,7 +3077,6 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent, break; } } -#endif if (!mark && ent->mark_start == (i + offset)) { @@ -3976,7 +3876,6 @@ gtk_xtext_render_line (GtkXText * xtext, textentry * ent, int line, indent = ent->indent; start_subline = subline; -#ifdef HEXCHAT /* draw the timestamp */ if (xtext->auto_indent && xtext->buffer->time_stamp && (!xtext->skip_stamp || xtext->mark_stamp || xtext->force_stamp)) @@ -3988,7 +3887,6 @@ gtk_xtext_render_line (GtkXText * xtext, textentry * ent, int line, gtk_xtext_render_stamp (xtext, ent, time_str, len, line, win_width); g_free (time_str); } -#endif /* draw each line one by one */ do @@ -4145,7 +4043,6 @@ gtk_xtext_set_font (GtkXText *xtext, char *name) xtext->space_width = xtext->fontwidth[' ']; xtext->fontsize = xtext->font->ascent + xtext->font->descent; -#ifdef HEXCHAT { char *time_str; int stamp_size = xtext_get_stamp_str (time(0), &time_str); @@ -4153,7 +4050,6 @@ gtk_xtext_set_font (GtkXText *xtext, char *name) gtk_xtext_text_width (xtext, time_str, stamp_size, NULL) + MARGIN; g_free (time_str); } -#endif gtk_xtext_fix_indent (xtext->buffer); @@ -4461,6 +4357,8 @@ gtk_xtext_render_page (GtkXText * xtext) int height; int subline; int startline = xtext->adj->value; + int pos, overlap; + GdkRectangle area; if(!GTK_WIDGET_REALIZED(xtext)) return; @@ -4473,11 +4371,7 @@ gtk_xtext_render_page (GtkXText * xtext) if (width < 34 || height < xtext->fontsize || width < xtext->buffer->indent + 32) return; -#ifdef SMOOTH_SCROLL xtext->pixel_offset = (xtext->adj->value - startline) * xtext->fontsize; -#else - xtext->pixel_offset = 0; -#endif subline = line = 0; ent = xtext->buffer->text_first; @@ -4489,35 +4383,17 @@ gtk_xtext_render_page (GtkXText * xtext) xtext->buffer->pagetop_subline = subline; xtext->buffer->pagetop_line = startline; -#ifdef SCROLL_HACK -{ - int pos, overlap; - GdkRectangle area; - if (xtext->buffer->num_lines <= xtext->adj->page_size) dontscroll (xtext->buffer); -#ifdef SMOOTH_SCROLL pos = xtext->adj->value * xtext->fontsize; -#else - pos = startline * xtext->fontsize; -#endif overlap = xtext->buffer->last_pixel_pos - pos; xtext->buffer->last_pixel_pos = pos; -#ifdef USE_DB #ifdef WIN32 if (!xtext->transparent && !xtext->pixmap && abs (overlap) < height) #else if (!xtext->pixmap && abs (overlap) < height) -#endif -#else - /* dont scroll PageUp/Down without a DB, it looks ugly */ -#ifdef WIN32 - if (!xtext->transparent && !xtext->pixmap && abs (overlap) < height - (3*xtext->fontsize)) -#else - if (!xtext->pixmap && abs (overlap) < height - (3*xtext->fontsize)) -#endif #endif { /* so the obscured regions are exposed */ @@ -4551,8 +4427,6 @@ gtk_xtext_render_page (GtkXText * xtext) return; } -} -#endif xtext->buffer->grid_dirty = FALSE; width -= MARGIN; @@ -5305,11 +5179,9 @@ gtk_xtext_append_entry (xtext_buffer *buf, textentry * ent, time_t stamp) if (buf->xtext->buffer == buf) { -#ifdef SCROLL_HACK /* this could be improved */ if ((buf->num_lines - 1) <= buf->xtext->adj->page_size) dontscroll (buf); -#endif if (!buf->xtext->add_io_tag) {