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)
{