src/gtkimhtml.c

Sat, 22 Sep 2001 10:36:29 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Sat, 22 Sep 2001 10:36:29 +0000
changeset 2348
cad14aeccac5
parent 2338
10a2ee3b06e3
child 2349
9832b57ded64
permissions
-rw-r--r--

[gaim-migrate @ 2361]
this renders selection better. i still need to rewrite the parser though. parsing for smileys is currently the most expensive thing but the rest of the parser could use some work (parsing tags twice is not good).

1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 * GtkIMHtml
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 * Copyright (C) 2000, Eric Warmenhoven <warmenhoven@yahoo.com>
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 *
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 * under the terms of the GNU General Public License as published by
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * (at your option) any later version.
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 *
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * GNU General Public License for more details.
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 *
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 *
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 */
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
21
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 #include "gtkimhtml.h"
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
23 #include <X11/Xlib.h>
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
24 #include <gdk/gdkx.h>
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
25 #include <gtk/gtk.h>
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
26 #include <string.h>
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
27 #include <ctype.h>
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
28 #include <stdio.h>
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
29 #include <math.h>
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
30
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31 #include "pixmaps/angel.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
32 #include "pixmaps/bigsmile.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
33 #include "pixmaps/burp.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34 #include "pixmaps/crossedlips.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35 #include "pixmaps/cry.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36 #include "pixmaps/embarrassed.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37 #include "pixmaps/kiss.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38 #include "pixmaps/moneymouth.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
39 #include "pixmaps/sad.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
40 #include "pixmaps/scream.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
41 #include "pixmaps/smile.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 #include "pixmaps/smile8.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 #include "pixmaps/think.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 #include "pixmaps/tongue.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45 #include "pixmaps/wink.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46 #include "pixmaps/yell.xpm"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
48 #define DEFAULT_FONT_NAME "helvetica"
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49 #define MAX_SIZE 7
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
50 #define MAX_FONTS 32767
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
51
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
52 gint font_sizes [] = { 80, 100, 120, 140, 200, 300, 400 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
53
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
54 #define BORDER_SIZE 2
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
55 #define TOP_BORDER 10
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
56 #define MIN_HEIGHT 20
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 #define HR_HEIGHT 2
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
58 #define TOOLTIP_TIMEOUT 500
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
59
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
60 #define DIFF(a, b) (((a) > (b)) ? ((a) - (b)) : ((b) - (a)))
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
61 #define COLOR_MOD 0x8000
1647
ab281d390ee6 [gaim-migrate @ 1657]
Decklin Foster <decklin@red-bean.com>
parents: 1626
diff changeset
62 #define COLOR_DIFF 0x800
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
63
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
64 #define TYPE_TEXT 0
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
65 #define TYPE_SMILEY 1
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
66 #define TYPE_IMG 2
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
67 #define TYPE_SEP 3
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
68 #define TYPE_BR 4
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
69 #define TYPE_COMMENT 5
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
71 #define DRAW_IMG(x) (((x)->type == TYPE_IMG) || (imhtml->smileys && ((x)->type == TYPE_SMILEY)))
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
72
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
73 typedef struct _GtkIMHtmlBit GtkIMHtmlBit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
74 typedef struct _FontDetail FontDetail;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
75
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
76 struct _GtkIMHtmlBit {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
77 gint type;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
78
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
79 gchar *text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
80 GdkPixmap *pm;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
81 GdkBitmap *bm;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
82
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
83 GdkFont *font;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
84 GdkColor *fore;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
85 GdkColor *back;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
86 GdkColor *bg;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
87 gboolean underline;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
88 gboolean strike;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
89 gchar *url;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
90
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
91 GList *chunks;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
92 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94 struct _FontDetail {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
95 gushort size;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
96 gchar *face;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
97 GdkColor *fore;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
98 GdkColor *back;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
99 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
100
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
101 struct line_info {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
102 gint x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
103 gint y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 gint width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105 gint height;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
106 gint ascent;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 gboolean selected;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109 gchar *sel_start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110 gchar *sel_end;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
111
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
112 gchar *text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
113 GtkIMHtmlBit *bit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
114 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
115
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
116 struct url_widget {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
117 gint x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 gint y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
119 gint width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
120 gint height;
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
121 GtkIMHtmlBit *bit;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
122 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
123
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 static GtkLayoutClass *parent_class = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
125
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 enum {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127 TARGET_STRING,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128 TARGET_TEXT,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 TARGET_COMPOUND_TEXT
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
130 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
131
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132 enum {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133 URL_CLICKED,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 LAST_SIGNAL
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
136 static guint signals [LAST_SIGNAL] = { 0 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
137
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
138 static void gtk_imhtml_draw_bit (GtkIMHtml *, GtkIMHtmlBit *);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
139 static GdkColor *gtk_imhtml_get_color (const gchar *);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
140 static gint gtk_imhtml_motion_notify_event (GtkWidget *, GdkEventMotion *);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
141
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143 gtk_imhtml_destroy (GtkObject *object)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
144 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145 GtkIMHtml *imhtml;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
146
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147 imhtml = GTK_IMHTML (object);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
148
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 while (imhtml->bits) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 GtkIMHtmlBit *bit = imhtml->bits->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151 imhtml->bits = g_list_remove (imhtml->bits, bit);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
152 if (bit->text)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
153 g_free (bit->text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
154 if (bit->font)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
155 gdk_font_unref (bit->font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
156 if (bit->fore)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
157 gdk_color_free (bit->fore);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 if (bit->back)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 gdk_color_free (bit->back);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
160 if (bit->bg)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161 gdk_color_free (bit->bg);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
162 if (bit->url)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163 g_free (bit->url);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
164 if (bit->pm)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
165 gdk_pixmap_unref (bit->pm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
166 if (bit->bm)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
167 gdk_bitmap_unref (bit->bm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
168 while (bit->chunks) {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
169 struct line_info *li = bit->chunks->data;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
170 if (li->text)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
171 g_free (li->text);
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
172 bit->chunks = g_list_remove (bit->chunks, li);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
173 g_free (li);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
174 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
175 g_free (bit);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
176 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
177
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
178 while (imhtml->urls) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
179 g_free (imhtml->urls->data);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
180 imhtml->urls = g_list_remove (imhtml->urls, imhtml->urls->data);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
183 if (imhtml->selected_text)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
184 g_string_free (imhtml->selected_text, TRUE);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185
1780
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
186 if (imhtml->tip_timer) {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
187 gtk_timeout_remove (imhtml->tip_timer);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
188 imhtml->tip_timer = 0;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
189 }
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
190 if (imhtml->tip_window) {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
191 gtk_widget_destroy (imhtml->tip_window);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
192 imhtml->tip_window = NULL;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
193 }
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
194 imhtml->tip_bit = NULL;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
195
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
196 gdk_font_unref (imhtml->default_font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197 gdk_color_free (imhtml->default_fg_color);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
198 gdk_color_free (imhtml->default_bg_color);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
199
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
200 gdk_cursor_destroy (imhtml->hand_cursor);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
201 gdk_cursor_destroy (imhtml->arrow_cursor);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
202
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
203 g_hash_table_destroy (imhtml->smiley_hash);
1519
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
204 if (imhtml->smiley_start)
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
205 g_string_free (imhtml->smiley_start, TRUE);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
206
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 if (GTK_OBJECT_CLASS (parent_class)->destroy != NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
208 (* GTK_OBJECT_CLASS (parent_class)->destroy) (object);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
209 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
210
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
211 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
212 gtk_imhtml_realize (GtkWidget *widget)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
213 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
214 GtkIMHtml *imhtml;
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
215 GdkWindowAttr attributes;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
216 gint attributes_mask;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
217
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
218 g_return_if_fail (widget != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
219 g_return_if_fail (GTK_IS_IMHTML (widget));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
220
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
221 imhtml = GTK_IMHTML (widget);
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
222 GTK_WIDGET_SET_FLAGS (imhtml, GTK_REALIZED);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
223
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
224 attributes.window_type = GDK_WINDOW_CHILD;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
225 attributes.x = widget->allocation.x;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
226 attributes.y = widget->allocation.y;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
227 attributes.width = widget->allocation.width;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
228 attributes.height = widget->allocation.height;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
229 attributes.wclass = GDK_INPUT_OUTPUT;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
230 attributes.visual = gtk_widget_get_visual (widget);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
231 attributes.colormap = gtk_widget_get_colormap (widget);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
232 attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
233
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
234 attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL | GDK_WA_COLORMAP;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
235
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
236 widget->window = gdk_window_new (gtk_widget_get_parent_window (widget),
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
237 &attributes, attributes_mask);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
238 gdk_window_set_user_data (widget->window, widget);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
239
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
240 attributes.x = widget->style->klass->xthickness + BORDER_SIZE;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
241 attributes.y = widget->style->klass->xthickness + BORDER_SIZE;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
242 attributes.width = MAX (1, (gint) widget->allocation.width - (gint) attributes.x * 2);
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
243 attributes.height = MAX (1, (gint) widget->allocation.height - (gint) attributes.y * 2);
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
244 attributes.event_mask = gtk_widget_get_events (widget)
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
245 | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
246 | GDK_POINTER_MOTION_MASK | GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
247
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
248 GTK_LAYOUT (imhtml)->bin_window = gdk_window_new (widget->window,
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
249 &attributes, attributes_mask);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
250 gdk_window_set_user_data (GTK_LAYOUT (imhtml)->bin_window, widget);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
251
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
252 widget->style = gtk_style_attach (widget->style, widget->window);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
253
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
254 gdk_window_set_cursor (widget->window, imhtml->arrow_cursor);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
255
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
256 gdk_window_set_background (widget->window, &widget->style->base [GTK_STATE_NORMAL]);
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
257 gdk_window_set_background (GTK_LAYOUT (imhtml)->bin_window,
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
258 &widget->style->base [GTK_STATE_NORMAL]);
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
259
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
260 gdk_window_show (GTK_LAYOUT (imhtml)->bin_window);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
261 }
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
262
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
263 static gboolean
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
264 similar_colors (GdkColor *bg,
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
265 GdkColor *fg)
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
266 {
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
267 if ((DIFF (bg->red, fg->red) < COLOR_DIFF) &&
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
268 (DIFF (bg->green, fg->green) < COLOR_DIFF) &&
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
269 (DIFF (bg->blue, fg->blue) < COLOR_DIFF)) {
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
270 fg->red = (0xff00 - COLOR_MOD > bg->red) ?
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
271 bg->red + COLOR_MOD : bg->red - COLOR_MOD;
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
272 fg->green = (0xff00 - COLOR_MOD > bg->green) ?
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
273 bg->green + COLOR_MOD : bg->green - COLOR_MOD;
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
274 fg->blue = (0xff00 - COLOR_MOD > bg->blue) ?
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
275 bg->blue + COLOR_MOD : bg->blue - COLOR_MOD;
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
276 return TRUE;
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
277 }
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
278 return FALSE;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
279 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
280
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
281 static void
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
282 draw_text (GtkIMHtml *imhtml,
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
283 struct line_info *line)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
284 {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
285 GtkIMHtmlBit *bit;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
286 GdkGC *gc;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
287 GdkColormap *cmap;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
288 GdkWindow *window = GTK_LAYOUT (imhtml)->bin_window;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
289 gfloat xoff, yoff;
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
290 GdkColor *bg, *fg;
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
291
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
292 if (GTK_LAYOUT (imhtml)->freeze_count)
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
293 return;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
294
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
295 bit = line->bit;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
296 gc = gdk_gc_new (window);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
297 cmap = gtk_widget_get_colormap (GTK_WIDGET (imhtml));
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
298 xoff = GTK_LAYOUT (imhtml)->hadjustment->value;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
299 yoff = GTK_LAYOUT (imhtml)->vadjustment->value;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
300
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
301 if (bit->bg != NULL) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
302 gdk_color_alloc (cmap, bit->bg);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
303 gdk_gc_set_foreground (gc, bit->bg);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
304 bg = bit->bg;
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
305 } else {
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
306 gdk_color_alloc (cmap, imhtml->default_bg_color);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
307 gdk_gc_set_foreground (gc, imhtml->default_bg_color);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
308 bg = imhtml->default_bg_color;
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
309 }
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
310
2338
10a2ee3b06e3 [gaim-migrate @ 2351]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2337
diff changeset
311 gdk_draw_rectangle (window, gc, TRUE, line->x - xoff, line->y - yoff,
10a2ee3b06e3 [gaim-migrate @ 2351]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2337
diff changeset
312 line->width ? line->width : imhtml->xsize, line->height);
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
313
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
314 if (!line->text) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
315 gdk_gc_unref (gc);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
316 return;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
317 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
318
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
319 if (bit->back != NULL) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
320 gdk_color_alloc (cmap, bit->back);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
321 gdk_gc_set_foreground (gc, bit->back);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
322 gdk_draw_rectangle (window, gc, TRUE, line->x - xoff, line->y - yoff,
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
323 gdk_string_width (bit->font, line->text), line->height);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
324 bg = bit->back;
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
325 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
326
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
327 bg = gdk_color_copy (bg);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
328
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
329 if (line->selected) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
330 gint width, x;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
331 gchar *start, *end;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
332 GdkColor col;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
333
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
334 if ((line->sel_start > line->sel_end) && (line->sel_end != NULL)) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
335 start = line->sel_end;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
336 end = line->sel_start;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
337 } else {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
338 start = line->sel_start;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
339 end = line->sel_end;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
340 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
341
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
342 if (start == NULL)
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
343 x = 0;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
344 else
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
345 x = gdk_text_width (bit->font, line->text, start - line->text);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
346
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
347 if (end == NULL)
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
348 width = gdk_string_width (bit->font, line->text) - x;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
349 else
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
350 width = gdk_text_width (bit->font, line->text, end - line->text) - x;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
351
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
352 col.red = col.green = col.blue = 0xc000;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
353 gdk_color_alloc (cmap, &col);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
354 gdk_gc_set_foreground (gc, &col);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
355
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
356 gdk_draw_rectangle (window, gc, TRUE, x + line->x - xoff, line->y - yoff,
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
357 width, line->height);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
358 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
359
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
360 if (bit->url) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
361 GdkColor *tc = gtk_imhtml_get_color ("#0000a0");
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
362 gdk_color_alloc (cmap, tc);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
363 gdk_gc_set_foreground (gc, tc);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
364 fg = gdk_color_copy (tc);
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
365 gdk_color_free (tc);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
366 } else if (bit->fore) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
367 gdk_color_alloc (cmap, bit->fore);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
368 gdk_gc_set_foreground (gc, bit->fore);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
369 fg = gdk_color_copy (bit->fore);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
370 } else {
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
371 gdk_color_alloc (cmap, imhtml->default_fg_color);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
372 gdk_gc_set_foreground (gc, imhtml->default_fg_color);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
373 fg = gdk_color_copy (imhtml->default_fg_color);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
374 }
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
375
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
376 if (similar_colors (bg, fg)) {
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
377 gdk_color_alloc (cmap, fg);
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
378 gdk_gc_set_foreground (gc, fg);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
379 }
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
380 gdk_color_free (bg);
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
381 gdk_color_free (fg);
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
382
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
383 gdk_draw_string (window, bit->font, gc, line->x - xoff,
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
384 line->y - yoff + line->ascent, line->text);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
385
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
386 if (bit->underline || bit->url)
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
387 gdk_draw_rectangle (window, gc, TRUE, line->x - xoff, line->y - yoff + line->ascent + 1,
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
388 gdk_string_width (bit->font, line->text), 1);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
389 if (bit->strike)
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
390 gdk_draw_rectangle (window, gc, TRUE, line->x - xoff,
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
391 line->y - yoff + line->ascent - (bit->font->ascent / 2),
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
392 gdk_string_width (bit->font, line->text), 1);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
393
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
394 gdk_gc_unref (gc);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
395 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
396
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
397 static void
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
398 draw_img (GtkIMHtml *imhtml,
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
399 struct line_info *line)
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
400 {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
401 GtkIMHtmlBit *bit;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
402 GdkGC *gc;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
403 GdkColormap *cmap;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
404 gint width, height, hoff;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
405 GdkWindow *window = GTK_LAYOUT (imhtml)->bin_window;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
406 gfloat xoff, yoff;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
407
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
408 if (GTK_LAYOUT (imhtml)->freeze_count)
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
409 return;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
410
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
411 bit = line->bit;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
412 gdk_window_get_size (bit->pm, &width, &height);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
413 hoff = (line->height - height) / 2;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
414 xoff = GTK_LAYOUT (imhtml)->hadjustment->value;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
415 yoff = GTK_LAYOUT (imhtml)->vadjustment->value;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
416 gc = gdk_gc_new (window);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
417 cmap = gtk_widget_get_colormap (GTK_WIDGET (imhtml));
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
418
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
419 if (bit->bg != NULL) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
420 gdk_color_alloc (cmap, bit->bg);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
421 gdk_gc_set_foreground (gc, bit->bg);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
422 } else {
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
423 gdk_color_alloc (cmap, imhtml->default_bg_color);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
424 gdk_gc_set_foreground (gc, imhtml->default_bg_color);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
425 }
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
426
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
427 gdk_draw_rectangle (window, gc, TRUE, line->x - xoff, line->y - yoff, line->width, line->height);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
428
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
429 if (bit->back != NULL) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
430 gdk_color_alloc (cmap, bit->back);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
431 gdk_gc_set_foreground (gc, bit->back);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
432 gdk_draw_rectangle (window, gc, TRUE, line->x - xoff, line->y - yoff,
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
433 width, line->height);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
434 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
435
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
436 gdk_draw_pixmap (window, gc, bit->pm, 0, 0, line->x - xoff, line->y - yoff + hoff, -1, -1);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
437
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
438 gdk_gc_unref (gc);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
439 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
440
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
441 static void
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
442 draw_line (GtkIMHtml *imhtml,
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
443 struct line_info *line)
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
444 {
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
445 GtkIMHtmlBit *bit;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
446 GdkDrawable *drawable;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
447 GdkColormap *cmap;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
448 GdkGC *gc;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
449 guint line_height;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
450 gfloat xoff, yoff;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
451
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
452 if (GTK_LAYOUT (imhtml)->freeze_count)
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
453 return;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
454
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
455 xoff = GTK_LAYOUT (imhtml)->hadjustment->value;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
456 yoff = GTK_LAYOUT (imhtml)->vadjustment->value;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
457 bit = line->bit;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
458 drawable = GTK_LAYOUT (imhtml)->bin_window;
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
459 cmap = gtk_widget_get_colormap (GTK_WIDGET (imhtml));
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
460 gc = gdk_gc_new (drawable);
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
461
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
462 if (bit->bg != NULL) {
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
463 gdk_color_alloc (cmap, bit->bg);
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
464 gdk_gc_set_foreground (gc, bit->bg);
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
465
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
466 gdk_draw_rectangle (drawable, gc, TRUE, line->x - xoff, line->y - yoff,
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
467 line->width, line->height);
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
468 }
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
469
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
470 gdk_color_alloc (cmap, imhtml->default_fg_color);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
471 gdk_gc_set_foreground (gc, imhtml->default_fg_color);
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
472
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
473 line_height = line->height / 2;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
474
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
475 gdk_draw_rectangle (drawable, gc, TRUE, line->x - xoff, line->y - yoff + line_height / 2,
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
476 line->width, line_height);
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
477
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
478 gdk_gc_unref (gc);
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
479 }
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
480
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
481 static void
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
482 gtk_imhtml_draw_focus (GtkWidget *widget)
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
483 {
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
484 GtkIMHtml *imhtml;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
485 gint x = 0,
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
486 y = 0,
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
487 w = 0,
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
488 h = 0;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
489
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
490 imhtml = GTK_IMHTML (widget);
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
491
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
492 if (!GTK_WIDGET_DRAWABLE (widget))
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
493 return;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
494
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
495 if (GTK_WIDGET_HAS_FOCUS (widget)) {
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
496 gtk_paint_focus (widget->style, widget->window, NULL, widget, "text", 0, 0,
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
497 widget->allocation.width - 1, widget->allocation.height - 1);
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
498 x = 1; y = 1; w = 2; h = 2;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
499 }
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
500
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
501 gtk_paint_shadow (widget->style, widget->window, GTK_STATE_NORMAL,
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
502 GTK_SHADOW_IN, NULL, widget, "text", x, y,
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
503 widget->allocation.width - w, widget->allocation.height - h);
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
504 }
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
505
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
506 static void
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
507 gtk_imhtml_draw_exposed (GtkIMHtml *imhtml)
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
508 {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
509 GList *bits;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
510 GtkIMHtmlBit *bit;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
511 GList *chunks;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
512 struct line_info *line;
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
513 gfloat x, y;
2048
4ac8b9622c9e [gaim-migrate @ 2058]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2022
diff changeset
514 gint width, height;
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
515
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
516 x = GTK_LAYOUT (imhtml)->hadjustment->value;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
517 y = GTK_LAYOUT (imhtml)->vadjustment->value;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
518 gdk_window_get_size (GTK_LAYOUT (imhtml)->bin_window, &width, &height);
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
519
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
520 bits = imhtml->bits;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
521
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
522 while (bits) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
523 bit = bits->data;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
524 chunks = bit->chunks;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
525 if (DRAW_IMG (bit)) {
1461
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
526 if (chunks) {
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
527 line = chunks->data;
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
528 if ((line->x <= x + width) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
529 (line->y <= y + height) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
530 (x <= line->x + line->width) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
531 (y <= line->y + line->height))
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
532 draw_img (imhtml, line);
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
533 }
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
534 } else if (bit->type == TYPE_SEP) {
1461
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
535 if (chunks) {
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
536 line = chunks->data;
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
537 if ((line->x <= x + width) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
538 (line->y <= y + height) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
539 (x <= line->x + line->width) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
540 (y <= line->y + line->height))
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
541 draw_line (imhtml, line);
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
542
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
543 line = chunks->next->data;
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
544 if ((line->x <= x + width) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
545 (line->y <= y + height) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
546 (x <= line->x + line->width) &&
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
547 (y <= line->y + line->height))
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
548 draw_text (imhtml, line);
c117868c525e [gaim-migrate @ 1471]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1460
diff changeset
549 }
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
550 } else {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
551 while (chunks) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
552 line = chunks->data;
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
553 if ((line->x <= x + width) &&
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
554 (line->y <= y + height) &&
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
555 (x <= line->x + line->width) &&
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
556 (y <= line->y + line->height))
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
557 draw_text (imhtml, line);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
558 chunks = g_list_next (chunks);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
559 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
560 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
561 bits = g_list_next (bits);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
562 }
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
563
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
564 gtk_imhtml_draw_focus (GTK_WIDGET (imhtml));
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
565 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
566
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
567 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
568 gtk_imhtml_draw (GtkWidget *widget,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
569 GdkRectangle *area)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
570 {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
571 GtkIMHtml *imhtml;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
572
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
573 imhtml = GTK_IMHTML (widget);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
574 gtk_imhtml_draw_exposed (imhtml);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
575 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
576
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
577 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
578 gtk_imhtml_style_set (GtkWidget *widget,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
579 GtkStyle *style)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
580 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
581 GtkIMHtml *imhtml;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
582
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
583 g_return_if_fail (widget != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
584 g_return_if_fail (GTK_IS_IMHTML (widget));
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
585
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
586 if (GTK_WIDGET_CLASS (parent_class)->style_set)
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
587 (* GTK_WIDGET_CLASS (parent_class)->style_set) (widget, style);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
588
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
589 if (!GTK_WIDGET_REALIZED (widget))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
590 return;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
591
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
592 imhtml = GTK_IMHTML (widget);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
593 gtk_imhtml_draw_exposed (imhtml);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
594 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
595
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
596 static gint
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
597 gtk_imhtml_expose_event (GtkWidget *widget,
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
598 GdkEventExpose *event)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
599 {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
600 GtkIMHtml *imhtml;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
601
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
602 g_return_val_if_fail (widget != NULL, FALSE);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
603 g_return_val_if_fail (GTK_IS_IMHTML (widget), FALSE);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
604
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
605 imhtml = GTK_IMHTML (widget);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
606 gtk_imhtml_draw_exposed (imhtml);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
607
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
608 return FALSE;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
609 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
610
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
611 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
612 gtk_imhtml_redraw_all (GtkIMHtml *imhtml)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
613 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
614 GList *b;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
615 GtkIMHtmlBit *bit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
616 GtkAdjustment *vadj;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
617 gfloat oldvalue;
1527
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
618 gint oldy;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
619
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
620 vadj = GTK_LAYOUT (imhtml)->vadjustment;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
621 oldvalue = vadj->value / vadj->upper;
1527
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
622 oldy = imhtml->y;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
623
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
624 gtk_layout_freeze (GTK_LAYOUT (imhtml));
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
625
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
626 g_list_free (imhtml->line);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
627 imhtml->line = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
628
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
629 while (imhtml->urls) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
630 g_free (imhtml->urls->data);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
631 imhtml->urls = g_list_remove (imhtml->urls, imhtml->urls->data);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
632 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
633
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
634 imhtml->x = 0;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
635 imhtml->y = TOP_BORDER;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
636 imhtml->llheight = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
637 imhtml->llascent = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
638
2002
bb9b3b76edd7 [gaim-migrate @ 2012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1998
diff changeset
639 if (GTK_LAYOUT (imhtml)->yoffset < TOP_BORDER)
bb9b3b76edd7 [gaim-migrate @ 2012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1998
diff changeset
640 gdk_window_clear_area (GTK_LAYOUT (imhtml)->bin_window, 0, 0,
bb9b3b76edd7 [gaim-migrate @ 2012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1998
diff changeset
641 imhtml->xsize, TOP_BORDER - GTK_LAYOUT (imhtml)->yoffset);
bb9b3b76edd7 [gaim-migrate @ 2012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1998
diff changeset
642
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
643 b = imhtml->bits;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
644 while (b) {
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
645 bit = b->data;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
646 b = g_list_next (b);
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
647 while (bit->chunks) {
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
648 struct line_info *li = bit->chunks->data;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
649 if (li->text)
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
650 g_free (li->text);
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
651 bit->chunks = g_list_remove (bit->chunks, li);
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
652 g_free (li);
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
653 }
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
654 gtk_imhtml_draw_bit (imhtml, bit);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
655 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
656
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
657 GTK_LAYOUT (imhtml)->height = imhtml->y;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
658 GTK_LAYOUT (imhtml)->vadjustment->upper = imhtml->y;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
659 gtk_signal_emit_by_name (GTK_OBJECT (GTK_LAYOUT (imhtml)->vadjustment), "changed");
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
660
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
661 gtk_widget_set_usize (GTK_WIDGET (imhtml), -1, imhtml->y);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
662 gtk_adjustment_set_value (vadj, vadj->upper * oldvalue);
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
663
1527
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
664 if (GTK_LAYOUT (imhtml)->bin_window && (imhtml->y < oldy)) {
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
665 GdkGC *gc;
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
666 GdkColormap *cmap;
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
667
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
668 gc = gdk_gc_new (GTK_LAYOUT (imhtml)->bin_window);
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
669 cmap = gtk_widget_get_colormap (GTK_WIDGET (imhtml));
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
670
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
671 gdk_color_alloc (cmap, imhtml->default_bg_color);
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
672 gdk_gc_set_foreground (gc, imhtml->default_bg_color);
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
673
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
674 gdk_draw_rectangle (GTK_LAYOUT (imhtml)->bin_window, gc, TRUE,
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
675 0, imhtml->y - GTK_LAYOUT (imhtml)->vadjustment->value,
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
676 GTK_WIDGET (imhtml)->allocation.width,
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
677 oldy - imhtml->y);
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
678
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
679 gdk_gc_unref (gc);
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
680 }
bb0dea36d01a [gaim-migrate @ 1537]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1524
diff changeset
681
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
682 gtk_layout_thaw (GTK_LAYOUT (imhtml));
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
683 gtk_imhtml_draw_focus (GTK_WIDGET (imhtml));
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
684 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
685
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
686 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
687 gtk_imhtml_size_allocate (GtkWidget *widget,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
688 GtkAllocation *allocation)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
689 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
690 GtkIMHtml *imhtml;
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
691 GtkLayout *layout;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
692 gint new_xsize, new_ysize;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
693
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
694 g_return_if_fail (widget != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
695 g_return_if_fail (GTK_IS_IMHTML (widget));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
696 g_return_if_fail (allocation != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
697
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
698 imhtml = GTK_IMHTML (widget);
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
699 layout = GTK_LAYOUT (widget);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
700
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
701 widget->allocation = *allocation;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
702
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
703 new_xsize = MAX (1, (gint) allocation->width -
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
704 (gint) (widget->style->klass->xthickness + BORDER_SIZE) * 2);
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
705 new_ysize = MAX (1, (gint) allocation->height -
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
706 (gint) (widget->style->klass->ythickness + BORDER_SIZE) * 2);
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
707
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
708 if (GTK_WIDGET_REALIZED (widget)) {
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
709 gint x = widget->style->klass->xthickness + BORDER_SIZE;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
710 gint y = widget->style->klass->ythickness + BORDER_SIZE;
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
711 gdk_window_move_resize (widget->window,
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
712 allocation->x, allocation->y,
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
713 allocation->width, allocation->height);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
714 gdk_window_move_resize (layout->bin_window,
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
715 x, y, new_xsize, new_ysize);
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
716 }
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
717
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
718 layout->hadjustment->page_size = new_xsize;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
719 layout->hadjustment->page_increment = new_xsize / 2;
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
720 layout->hadjustment->lower = 0;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
721 layout->hadjustment->upper = imhtml->x;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
722
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
723 layout->vadjustment->page_size = new_ysize;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
724 layout->vadjustment->page_increment = new_ysize / 2;
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
725 layout->vadjustment->lower = 0;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
726 layout->vadjustment->upper = imhtml->y;
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
727
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
728 gtk_signal_emit_by_name (GTK_OBJECT (layout->hadjustment), "changed");
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
729 gtk_signal_emit_by_name (GTK_OBJECT (layout->vadjustment), "changed");
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
730
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
731 if (new_xsize == imhtml->xsize) {
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
732 if ((GTK_LAYOUT (imhtml)->vadjustment->value > imhtml->y - new_ysize)) {
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
733 if (imhtml->y > new_ysize)
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
734 gtk_adjustment_set_value (GTK_LAYOUT (imhtml)->vadjustment,
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
735 imhtml->y - new_ysize);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
736 else
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
737 gtk_adjustment_set_value (GTK_LAYOUT (imhtml)->vadjustment, 0);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
738 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
739 return;
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
740 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
741
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
742 imhtml->xsize = new_xsize;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
743
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
744 if (GTK_WIDGET_REALIZED (widget))
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
745 gtk_imhtml_redraw_all (imhtml);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
746 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
747
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
748 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
749 gtk_imhtml_select_none (GtkIMHtml *imhtml)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
750 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
751 GList *bits;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
752 GList *chunks;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
753 GtkIMHtmlBit *bit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
754 struct line_info *chunk;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
755
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
756 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
757
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
758 bits = imhtml->bits;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
759 while (bits) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
760 bit = bits->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
761 chunks = bit->chunks;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
762
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
763 while (chunks) {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
764 chunk = chunks->data;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
765
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
766 if (chunk->selected) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
767 chunk->selected = FALSE;
1449
180e0a27c43f [gaim-migrate @ 1459]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1447
diff changeset
768 chunk->sel_start = chunk->text;
180e0a27c43f [gaim-migrate @ 1459]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1447
diff changeset
769 chunk->sel_end = NULL;
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
770 if (DRAW_IMG (bit))
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
771 draw_img (imhtml, chunk);
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
772 else if ((bit->type == TYPE_SEP) && (bit->chunks->data == chunk))
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
773 draw_line (imhtml, chunk);
2348
cad14aeccac5 [gaim-migrate @ 2361]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2338
diff changeset
774 else if (chunk->width)
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
775 draw_text (imhtml, chunk);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
776 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
777
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
778 chunks = g_list_next (chunks);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
779 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
780
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
781 bits = g_list_next (bits);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
782 }
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
783 imhtml->sel_endchunk = NULL;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
784 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
785
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
786 static gchar*
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
787 get_position (struct line_info *chunk,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
788 gint x,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
789 gboolean smileys)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
790 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
791 gint width = x - chunk->x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
792 gchar *text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
793 gchar *pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
794 guint total = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
795
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
796 switch (chunk->bit->type) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
797 case TYPE_TEXT:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
798 case TYPE_COMMENT:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
799 text = chunk->text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
800 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
801 case TYPE_SMILEY:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
802 if (smileys)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
803 return NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
804 else
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
805 text = chunk->text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
806 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
807 default:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808 return NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
809 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
810 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
811
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
812 if (width <= 0)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
813 return text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
814
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
815 for (pos = text; *pos != '\0'; pos++) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
816 gint char_width = gdk_text_width (chunk->bit->font, pos, 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
817 if ((width > total) && (width <= total + char_width)) {
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
818 if (width < total + (char_width / 2))
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
819 return pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
820 else
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
821 return ++pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
822 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
823 total += char_width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
824 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
825
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
826 return pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
827 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
828
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
829 static GString*
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
830 append_to_sel (GString *string,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
831 struct line_info *chunk,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
832 gboolean smileys)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
833 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
834 GString *new_string;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
835 gchar *buf;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
836 gchar *start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
837 gint length;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
838
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
839 switch (chunk->bit->type) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
840 case TYPE_TEXT:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
841 case TYPE_COMMENT:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
842 start = (chunk->sel_start == NULL) ? chunk->text : chunk->sel_start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
843 length = (chunk->sel_end == NULL) ? strlen (start) : chunk->sel_end - start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
844 if (length <= 0)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
845 return string;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
846 buf = g_strndup (start, length);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
847 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
848 case TYPE_SMILEY:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
849 if (smileys) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
850 start = (chunk->sel_start == NULL) ? chunk->bit->text : chunk->sel_start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
851 length = (chunk->sel_end == NULL) ? strlen (start) : chunk->sel_end - start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
852 if (length <= 0)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
853 return string;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
854 buf = g_strndup (start, length);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
855 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
856 start = (chunk->sel_start == NULL) ? chunk->text : chunk->sel_start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
857 length = (chunk->sel_end == NULL) ? strlen (start) : chunk->sel_end - start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
858 if (length <= 0)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
859 return string;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
860 buf = g_strndup (start, length);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
861 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
862 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
863 case TYPE_BR:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
864 buf = g_strdup ("\n");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
865 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
866 default:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
867 return string;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
868 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
869 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
870
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
871 new_string = g_string_append (string, buf);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
872 g_free (buf);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
873
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
874 return new_string;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
875 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
876
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
877 #define COORDS_IN_CHUNK(xx, yy) (((xx) < chunk->x + chunk->width) && \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
878 ((yy) < chunk->y + chunk->height))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
879
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
880 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
881 gtk_imhtml_select_bits (GtkIMHtml *imhtml)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
882 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
883 GList *bits;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
884 GList *chunks;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
885 GtkIMHtmlBit *bit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
886 struct line_info *chunk;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
887
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
888 guint startx = imhtml->sel_startx,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
889 starty = imhtml->sel_starty,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
890 endx = imhtml->sel_endx,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
891 endy = imhtml->sel_endy;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
892 gchar *new_pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
893 gint selection = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
894 gboolean smileys = imhtml->smileys;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
895 gboolean redraw = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
896 gboolean got_start = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
897 gboolean got_end = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
898
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
899 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
900
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
901 if (!imhtml->selection)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
902 return;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
903
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
904 if (imhtml->selected_text) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
905 g_string_free (imhtml->selected_text, TRUE);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
906 imhtml->selected_text = g_string_new ("");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
907 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
908
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
909 bits = imhtml->bits;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
910 while (bits) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
911 bit = bits->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
912 chunks = bit->chunks;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
913
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
914 while (chunks) {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
915 chunk = chunks->data;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
916
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
917 switch (selection) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
918 case 0:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
919 if (COORDS_IN_CHUNK (startx, starty)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
920 new_pos = get_position (chunk, startx, smileys);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
921 if ( !chunk->selected ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
922 (chunk->sel_start != new_pos) ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
923 (chunk->sel_end != NULL))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
924 redraw = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
925 chunk->selected = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
926 chunk->sel_start = new_pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
927 chunk->sel_end = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
928 selection++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
929 got_start = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
930 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
931
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
932 if (COORDS_IN_CHUNK (endx, endy)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
933 if (got_start) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
934 new_pos = get_position (chunk, endx, smileys);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
935 if (chunk->sel_end != new_pos)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
936 redraw = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
937 if (chunk->sel_start > new_pos) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
938 chunk->sel_end = chunk->sel_start;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
939 chunk->sel_start = new_pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
940 } else
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
941 chunk->sel_end = new_pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
942 selection = 2;
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
943 imhtml->sel_endchunk = chunk;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
944 got_end = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
945 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
946 new_pos = get_position (chunk, endx, smileys);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
947 if ( !chunk->selected ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
948 (chunk->sel_start != new_pos) ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
949 (chunk->sel_end != NULL))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
950 redraw = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
951 chunk->selected = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
952 chunk->sel_start = new_pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
953 chunk->sel_end = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
954 selection++;
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
955 imhtml->sel_endchunk = chunk;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
956 got_end = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
957 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
958 } else if (!COORDS_IN_CHUNK (startx, starty) && !got_start) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
959 if (chunk->selected)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
960 redraw = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
961 chunk->selected = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
962 chunk->sel_start = chunk->text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
963 chunk->sel_end = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
964 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
965
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
966 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
967 case 1:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
968 if (!got_start && COORDS_IN_CHUNK (startx, starty)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
969 new_pos = get_position (chunk, startx, smileys);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
970 if ( !chunk->selected ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
971 (chunk->sel_end != new_pos) ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
972 (chunk->sel_start != chunk->text))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
973 redraw = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
974 chunk->selected = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
975 chunk->sel_start = chunk->text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
976 chunk->sel_end = new_pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
977 selection++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
978 got_start = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
979 } else if (!got_end && COORDS_IN_CHUNK (endx, endy)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
980 new_pos = get_position (chunk, endx, smileys);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
981 if ( !chunk->selected ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
982 (chunk->sel_end != new_pos) ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
983 (chunk->sel_start != chunk->text))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
984 redraw = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
985 chunk->selected = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
986 chunk->sel_start = chunk->text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
987 chunk->sel_end = new_pos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
988 selection++;
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
989 imhtml->sel_endchunk = chunk;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
990 got_end = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
991 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
992 if ( !chunk->selected ||
1449
180e0a27c43f [gaim-migrate @ 1459]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1447
diff changeset
993 (chunk->sel_end != NULL) ||
180e0a27c43f [gaim-migrate @ 1459]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1447
diff changeset
994 (chunk->sel_start != chunk->text))
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
995 redraw = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
996 chunk->selected = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
997 chunk->sel_start = chunk->text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
998 chunk->sel_end = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
999 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1000
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1001 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1002 case 2:
1449
180e0a27c43f [gaim-migrate @ 1459]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1447
diff changeset
1003 if (chunk->selected)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1004 redraw = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1005 chunk->selected = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1006 chunk->sel_start = chunk->text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1007 chunk->sel_end = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1008 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1009 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1010
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1011 if (chunk->selected == TRUE)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1012 imhtml->selected_text = append_to_sel (imhtml->selected_text,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1013 chunk, smileys);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1014
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1015 if (redraw) {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1016 if (DRAW_IMG (bit))
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1017 draw_img (imhtml, chunk);
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
1018 else if ((bit->type == TYPE_SEP) && (bit->chunks->data == chunk))
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
1019 draw_line (imhtml, chunk);
2348
cad14aeccac5 [gaim-migrate @ 2361]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2338
diff changeset
1020 else if (chunk->width)
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1021 draw_text (imhtml, chunk);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1022 redraw = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1023 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1024
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1025 chunks = g_list_next (chunks);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1026 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1027
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1028 bits = g_list_next (bits);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1029 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1030 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1031
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1032 static void
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1033 gtk_imhtml_select_in_chunk (GtkIMHtml *imhtml,
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1034 struct line_info *chunk)
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1035 {
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1036 GtkIMHtmlBit *bit = chunk->bit;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1037 gchar *new_pos;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1038 guint endx = imhtml->sel_endx;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1039 guint startx = imhtml->sel_startx;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1040 guint starty = imhtml->sel_starty;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1041 gboolean smileys = imhtml->smileys;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1042 gboolean redraw = FALSE;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1043
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1044 new_pos = get_position (chunk, endx, smileys);
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1045 if ((starty < chunk->y) ||
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1046 ((starty < chunk->y + chunk->height) && (startx < endx))) {
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1047 if (chunk->sel_end != new_pos)
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1048 redraw = TRUE;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1049 chunk->sel_end = new_pos;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1050 } else {
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1051 if (chunk->sel_start != new_pos)
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1052 redraw = TRUE;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1053 chunk->sel_start = new_pos;
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1054 }
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1055
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1056 if (redraw) {
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1057 if (DRAW_IMG (bit))
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1058 draw_img (imhtml, chunk);
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1059 else if ((bit->type == TYPE_SEP) &&
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1060 (bit->chunks->data == chunk))
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1061 draw_line (imhtml, chunk);
2348
cad14aeccac5 [gaim-migrate @ 2361]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2338
diff changeset
1062 else if (chunk->width)
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1063 draw_text (imhtml, chunk);
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1064 }
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1065 }
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1066
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1067 static gint
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1068 scroll_timeout (GtkIMHtml *imhtml)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1069 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1070 GdkEventMotion event;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1071 gint x, y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1072 GdkModifierType mask;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1073
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1074 imhtml->scroll_timer = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1075
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
1076 gdk_window_get_pointer (GTK_LAYOUT (imhtml)->bin_window, &x, &y, &mask);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1077
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1078 if (mask & GDK_BUTTON1_MASK) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1079 event.is_hint = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1080 event.x = x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1081 event.y = y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1082 event.state = mask;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1083
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1084 gtk_imhtml_motion_notify_event (GTK_WIDGET (imhtml), &event);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1085 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1086
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1087 return FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1088 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1089
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1090 static gint
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1091 gtk_imhtml_tip_paint (GtkIMHtml *imhtml)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1092 {
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1093 GtkStyle *style;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1094 gint y, baseline_skip, gap;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1095
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1096 style = imhtml->tip_window->style;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1097
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1098 gap = (style->font->ascent + style->font->descent) / 4;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1099 if (gap < 2)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1100 gap = 2;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1101 baseline_skip = style->font->ascent + style->font->descent + gap;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1102
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1103 if (!imhtml->tip_bit)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1104 return FALSE;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1105
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1106 gtk_paint_flat_box (style, imhtml->tip_window->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT,
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1107 NULL, imhtml->tip_window, "tooltip", 0, 0, -1, -1);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1108
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1109 y = style->font->ascent + 4;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1110 gtk_paint_string (style, imhtml->tip_window->window, GTK_STATE_NORMAL, NULL,
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1111 imhtml->tip_window, "tooltip", 4, y, imhtml->tip_bit->url);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1112
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1113 return FALSE;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1114 }
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1115
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1116 static gint
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1117 gtk_imhtml_tip (gpointer data)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1118 {
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1119 GtkIMHtml *imhtml = data;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1120 GtkWidget *widget = GTK_WIDGET (imhtml);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1121 GtkStyle *style;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1122 gint gap, x, y, w, h, scr_w, scr_h, baseline_skip;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1123
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1124 if (!imhtml->tip_bit || !GTK_WIDGET_DRAWABLE (widget)) {
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1125 imhtml->tip_timer = 0;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1126 return FALSE;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1127 }
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1128
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1129 if (imhtml->tip_window)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1130 gtk_widget_destroy (imhtml->tip_window);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1131
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1132 imhtml->tip_window = gtk_window_new (GTK_WINDOW_POPUP);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1133 gtk_widget_set_app_paintable (imhtml->tip_window, TRUE);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1134 gtk_window_set_policy (GTK_WINDOW (imhtml->tip_window), FALSE, FALSE, TRUE);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1135 gtk_widget_set_name (imhtml->tip_window, "gtk-tooltips");
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1136 gtk_signal_connect_object (GTK_OBJECT (imhtml->tip_window), "expose_event",
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1137 GTK_SIGNAL_FUNC (gtk_imhtml_tip_paint), GTK_OBJECT (imhtml));
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1138 gtk_signal_connect_object (GTK_OBJECT (imhtml->tip_window), "draw",
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1139 GTK_SIGNAL_FUNC (gtk_imhtml_tip_paint), GTK_OBJECT (imhtml));
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1140
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1141 gtk_widget_ensure_style (imhtml->tip_window);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1142 style = imhtml->tip_window->style;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1143
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1144 scr_w = gdk_screen_width ();
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1145 scr_h = gdk_screen_height ();
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1146
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1147 gap = (style->font->ascent + style->font->descent) / 4;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1148 if (gap < 2)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1149 gap = 2;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1150 baseline_skip = style->font->ascent + style->font->descent + gap;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1151
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1152 w = 8 + gdk_string_width (style->font, imhtml->tip_bit->url);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1153 h = 8 - gap + baseline_skip;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1154
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1155 gdk_window_get_pointer (NULL, &x, &y, NULL);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1156 if (GTK_WIDGET_NO_WINDOW (widget))
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1157 y += widget->allocation.y;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1158
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1159 x -= ((w >> 1) + 4);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1160
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1161 if ((x + w) > scr_w)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1162 x -= (x + w) - scr_w;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1163 else if (x < 0)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1164 x = 0;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1165
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1166 if ((y + h + + 4) > scr_h)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1167 y = y - imhtml->tip_bit->font->ascent + imhtml->tip_bit->font->descent;
2071
fa3fe535a2f9 [gaim-migrate @ 2081]
Rob Flynn <gaim@robflynn.com>
parents: 2065
diff changeset
1168 else
fa3fe535a2f9 [gaim-migrate @ 2081]
Rob Flynn <gaim@robflynn.com>
parents: 2065
diff changeset
1169 if (imhtml->tip_bit->font)
fa3fe535a2f9 [gaim-migrate @ 2081]
Rob Flynn <gaim@robflynn.com>
parents: 2065
diff changeset
1170 y = y + imhtml->tip_bit->font->ascent + imhtml->tip_bit->font->descent;
fa3fe535a2f9 [gaim-migrate @ 2081]
Rob Flynn <gaim@robflynn.com>
parents: 2065
diff changeset
1171 else
fa3fe535a2f9 [gaim-migrate @ 2081]
Rob Flynn <gaim@robflynn.com>
parents: 2065
diff changeset
1172 y = y + style->font->ascent + style->font->descent;
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1173
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1174 gtk_widget_set_usize (imhtml->tip_window, w, h);
1955
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1175 gtk_widget_set_uposition (imhtml->tip_window, x, y);
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1176 gtk_widget_show (imhtml->tip_window);
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1177
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1178 imhtml->tip_timer = 0;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1179 return FALSE;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1180 }
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1181
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1182 static gint
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1183 gtk_imhtml_motion_notify_event (GtkWidget *widget,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1184 GdkEventMotion *event)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1185 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1186 gint x, y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1187 GdkModifierType state;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1188 GtkIMHtml *imhtml = GTK_IMHTML (widget);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1189 GtkAdjustment *vadj = GTK_LAYOUT (widget)->vadjustment;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1190 GtkAdjustment *hadj = GTK_LAYOUT (widget)->hadjustment;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1191
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1192 if (event->is_hint)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1193 gdk_window_get_pointer (event->window, &x, &y, &state);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1194 else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1195 x = event->x + hadj->value;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1196 y = event->y + vadj->value;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1197 state = event->state;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1198 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1199
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1200 if (state & GDK_BUTTON1_MASK) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1201 gint diff;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1202 gint height = vadj->page_size;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1203 gint yy = y - vadj->value;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1204
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1205 if (((yy < 0) || (yy > height)) &&
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1206 (imhtml->scroll_timer == 0) &&
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1207 (vadj->upper > vadj->page_size)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1208 imhtml->scroll_timer = gtk_timeout_add (100,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1209 (GtkFunction) scroll_timeout,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1210 imhtml);
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
1211 diff = (yy < 0) ? (yy / 2) : ((yy - height) / 2);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1212 gtk_adjustment_set_value (vadj,
2337
bfc59092cd77 [gaim-migrate @ 2350]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2188
diff changeset
1213 MIN (vadj->value + diff, vadj->upper - height));
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1214 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1215
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1216 if (imhtml->selection) {
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1217 struct line_info *chunk = imhtml->sel_endchunk;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1218 imhtml->sel_endx = MAX (x, 0);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1219 imhtml->sel_endy = MAX (y, 0);
1515
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1220 if ((chunk == NULL) ||
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1221 (x < chunk->x) ||
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1222 (x > chunk->x + chunk->width) ||
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1223 (y < chunk->y) ||
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1224 (y > chunk->y + chunk->height))
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1225 gtk_imhtml_select_bits (imhtml);
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1226 else
89a3d8a63734 [gaim-migrate @ 1525]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1482
diff changeset
1227 gtk_imhtml_select_in_chunk (imhtml, chunk);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1228 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1229 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1230 GList *urls = imhtml->urls;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1231 struct url_widget *uw;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1232
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1233 while (urls) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1234 uw = (struct url_widget *) urls->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1235 if ((x > uw->x) && (x < uw->x + uw->width) &&
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1236 (y > uw->y) && (y < uw->y + uw->height)) {
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1237 if (imhtml->tip_bit != uw->bit) {
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1238 imhtml->tip_bit = uw->bit;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1239 if (imhtml->tip_timer != 0)
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1240 gtk_timeout_remove (imhtml->tip_timer);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1241 if (imhtml->tip_window) {
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1242 gtk_widget_destroy (imhtml->tip_window);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1243 imhtml->tip_window = NULL;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1244 }
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1245 imhtml->tip_timer = gtk_timeout_add (TOOLTIP_TIMEOUT,
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1246 gtk_imhtml_tip,
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1247 imhtml);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1248 }
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
1249 gdk_window_set_cursor (GTK_LAYOUT (imhtml)->bin_window,
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
1250 imhtml->hand_cursor);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1251 return TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1252 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1253 urls = g_list_next (urls);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1254 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1255 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1256
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1257 if (imhtml->tip_timer) {
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1258 gtk_timeout_remove (imhtml->tip_timer);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1259 imhtml->tip_timer = 0;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1260 }
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1261 if (imhtml->tip_window) {
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1262 gtk_widget_destroy (imhtml->tip_window);
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1263 imhtml->tip_window = NULL;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1264 }
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1265 imhtml->tip_bit = NULL;
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1266
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
1267 gdk_window_set_cursor (GTK_LAYOUT (imhtml)->bin_window, imhtml->arrow_cursor);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1268
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1269 return TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1270 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1271
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1272 static gint
1613
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1273 gtk_imhtml_leave_notify_event (GtkWidget *widget,
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1274 GdkEventCrossing *event)
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1275 {
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1276 GtkIMHtml *imhtml = GTK_IMHTML (widget);
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1277
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1278 if (imhtml->tip_timer) {
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1279 gtk_timeout_remove (imhtml->tip_timer);
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1280 imhtml->tip_timer = 0;
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1281 }
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1282 if (imhtml->tip_window) {
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1283 gtk_widget_destroy (imhtml->tip_window);
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1284 imhtml->tip_window = NULL;
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1285 }
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1286 imhtml->tip_bit = NULL;
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1287
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1288 return TRUE;
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1289 }
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1290
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1291 static gint
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1292 gtk_imhtml_button_press_event (GtkWidget *widget,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1293 GdkEventButton *event)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1294 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1295 GtkIMHtml *imhtml = GTK_IMHTML (widget);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1296 GtkAdjustment *vadj = GTK_LAYOUT (widget)->vadjustment;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1297 GtkAdjustment *hadj = GTK_LAYOUT (widget)->hadjustment;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1298 gint x, y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1299
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1300 if (event->button == 1) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1301 x = event->x + hadj->value;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1302 y = event->y + vadj->value;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1303
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1304 imhtml->sel_startx = x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1305 imhtml->sel_starty = y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1306 imhtml->selection = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1307 gtk_imhtml_select_none (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1308 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1309
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1310 return TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1311 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1312
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1313 static gint
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1314 gtk_imhtml_button_release_event (GtkWidget *widget,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1315 GdkEventButton *event)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1316 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1317 GtkIMHtml *imhtml = GTK_IMHTML (widget);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1318 GtkAdjustment *vadj = GTK_LAYOUT (widget)->vadjustment;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1319 GtkAdjustment *hadj = GTK_LAYOUT (widget)->hadjustment;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1320 gint x, y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1321
1456
c03c929f8139 [gaim-migrate @ 1466]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1454
diff changeset
1322 x = event->x + hadj->value;
c03c929f8139 [gaim-migrate @ 1466]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1454
diff changeset
1323 y = event->y + vadj->value;
c03c929f8139 [gaim-migrate @ 1466]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1454
diff changeset
1324
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1325 if ((event->button == 1) && imhtml->selection) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1326 if ((x == imhtml->sel_startx) && (y == imhtml->sel_starty)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1327 imhtml->sel_startx = imhtml->sel_starty = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1328 imhtml->selection = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1329 gtk_imhtml_select_none (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1330 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1331 imhtml->sel_endx = MAX (x, 0);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1332 imhtml->sel_endy = MAX (y, 0);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1333 gtk_imhtml_select_bits (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1334 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1335
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1336 gtk_selection_owner_set (widget, GDK_SELECTION_PRIMARY, event->time);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1337 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1338
1547
33704412676a [gaim-migrate @ 1557]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1528
diff changeset
1339 if ((event->button == 1) && (imhtml->sel_startx == 0)) {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1340 GList *urls = imhtml->urls;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1341 struct url_widget *uw;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1342
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1343 while (urls) {
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1344 uw = (struct url_widget *) urls->data;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1345 if ((x > uw->x) && (x < uw->x + uw->width) &&
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1346 (y > uw->y) && (y < uw->y + uw->height)) {
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1347 gtk_signal_emit (GTK_OBJECT (imhtml), signals [URL_CLICKED],
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
1348 uw->bit->url);
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1349 return TRUE;
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1350 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1351 urls = g_list_next (urls);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1352 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1353 }
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1354
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1355 return TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1356 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1357
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1358 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1359 gtk_imhtml_selection_get (GtkWidget *widget,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1360 GtkSelectionData *sel_data,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1361 guint sel_info,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1362 guint32 time)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1363 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1364 GtkIMHtml *imhtml;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1365 gchar *string;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1366 gint length;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1367
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1368 g_return_if_fail (widget != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1369 g_return_if_fail (GTK_IS_IMHTML (widget));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1370 g_return_if_fail (sel_data->selection == GDK_SELECTION_PRIMARY);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1371
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1372 imhtml = GTK_IMHTML (widget);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1373
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1374 g_return_if_fail (imhtml->selected_text != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1375 g_return_if_fail (imhtml->selected_text->str != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1376
2188
7d1f9f2d3f1d [gaim-migrate @ 2198]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2140
diff changeset
1377 if (imhtml->selected_text->len <= 0)
7d1f9f2d3f1d [gaim-migrate @ 2198]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2140
diff changeset
1378 return;
7d1f9f2d3f1d [gaim-migrate @ 2198]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2140
diff changeset
1379
7d1f9f2d3f1d [gaim-migrate @ 2198]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2140
diff changeset
1380 string = g_strdup (imhtml->selected_text->str);
7d1f9f2d3f1d [gaim-migrate @ 2198]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2140
diff changeset
1381 length = strlen (string);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1382
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1383 if (sel_info == TARGET_STRING) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1384 gtk_selection_data_set (sel_data,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1385 GDK_SELECTION_TYPE_STRING,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1386 8 * sizeof (gchar),
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1387 (guchar *) string,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1388 length);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1389 } else if ((sel_info == TARGET_TEXT) || (sel_info == TARGET_COMPOUND_TEXT)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1390 guchar *text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1391 GdkAtom encoding;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1392 gint format;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1393 gint new_length;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1394
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1395 gdk_string_to_compound_text (string, &encoding, &format, &text, &new_length);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1396 gtk_selection_data_set (sel_data, encoding, format, text, new_length);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1397 gdk_free_compound_text (text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1398 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1399
2188
7d1f9f2d3f1d [gaim-migrate @ 2198]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2140
diff changeset
1400 g_free (string);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1401 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1402
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1403 static gint
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1404 gtk_imhtml_selection_clear_event (GtkWidget *widget,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1405 GdkEventSelection *event)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1406 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1407 GtkIMHtml *imhtml;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1408
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1409 g_return_val_if_fail (widget != NULL, FALSE);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1410 g_return_val_if_fail (GTK_IS_IMHTML (widget), FALSE);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1411 g_return_val_if_fail (event != NULL, FALSE);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1412 g_return_val_if_fail (event->selection == GDK_SELECTION_PRIMARY, TRUE);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1413
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1414 if (!gtk_selection_clear (widget, event))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1415 return FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1416
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1417 imhtml = GTK_IMHTML (widget);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1418
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1419 gtk_imhtml_select_none (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1420
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1421 return TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1422 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1423
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1424 static void
1955
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1425 gtk_imhtml_adjustment_changed (GtkAdjustment *adjustment,
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1426 GtkIMHtml *imhtml)
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1427 {
1980
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1428 GtkLayout *layout = GTK_LAYOUT (imhtml);
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1429
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1430 layout->xoffset = (gint) layout->hadjustment->value;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1431 layout->yoffset = (gint) layout->vadjustment->value;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1432
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1433 if (!GTK_WIDGET_MAPPED (imhtml) || !GTK_WIDGET_REALIZED (imhtml))
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1434 return;
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1435
c29a87bab090 [gaim-migrate @ 1990]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1979
diff changeset
1436 if (layout->freeze_count)
1955
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1437 return;
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1438
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1439 if (layout->yoffset < TOP_BORDER)
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1440 gdk_window_clear_area (layout->bin_window, 0, 0,
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1441 imhtml->xsize, TOP_BORDER - layout->yoffset);
1961
281fd165f3c8 [gaim-migrate @ 1971]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1955
diff changeset
1442
1955
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1443 gtk_imhtml_draw_exposed (imhtml);
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1444 }
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1445
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1446 static void
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1447 gtk_imhtml_set_scroll_adjustments (GtkLayout *layout,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1448 GtkAdjustment *hadj,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1449 GtkAdjustment *vadj)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1450 {
1955
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1451 gboolean need_adjust = FALSE;
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1452
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1453 g_return_if_fail (layout != NULL);
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1454 g_return_if_fail (GTK_IS_IMHTML (layout));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1455
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1456 if (hadj)
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1457 g_return_if_fail (GTK_IS_ADJUSTMENT (hadj));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1458 else
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1459 hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1460 if (vadj)
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1461 g_return_if_fail (GTK_IS_ADJUSTMENT (vadj));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1462 else
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1463 vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1464
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1465 if (layout->hadjustment && (layout->hadjustment != hadj)) {
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1466 gtk_signal_disconnect_by_data (GTK_OBJECT (layout->hadjustment), layout);
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1467 gtk_object_unref (GTK_OBJECT (layout->hadjustment));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1468 }
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1469
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1470 if (layout->vadjustment && (layout->vadjustment != vadj)) {
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1471 gtk_signal_disconnect_by_data (GTK_OBJECT (layout->vadjustment), layout);
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1472 gtk_object_unref (GTK_OBJECT (layout->vadjustment));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1473 }
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1474
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1475 if (layout->hadjustment != hadj) {
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1476 layout->hadjustment = hadj;
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1477 gtk_object_ref (GTK_OBJECT (layout->hadjustment));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1478 gtk_object_sink (GTK_OBJECT (layout->hadjustment));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1479
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1480 gtk_signal_connect (GTK_OBJECT (layout->hadjustment), "value_changed",
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1481 (GtkSignalFunc) gtk_imhtml_adjustment_changed, layout);
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1482 need_adjust = TRUE;
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1483 }
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1484
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1485 if (layout->vadjustment != vadj) {
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1486 layout->vadjustment = vadj;
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1487 gtk_object_ref (GTK_OBJECT (layout->vadjustment));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1488 gtk_object_sink (GTK_OBJECT (layout->vadjustment));
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1489
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1490 gtk_signal_connect (GTK_OBJECT (layout->vadjustment), "value_changed",
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1491 (GtkSignalFunc) gtk_imhtml_adjustment_changed, layout);
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1492 need_adjust = TRUE;
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1493 }
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1494
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1495 if (need_adjust)
80b2ecd77f10 [gaim-migrate @ 1965]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1780
diff changeset
1496 gtk_imhtml_adjustment_changed (NULL, GTK_IMHTML (layout));
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1497 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1498
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1499 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1500 gtk_imhtml_class_init (GtkIMHtmlClass *class)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1501 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1502 GtkObjectClass *object_class;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1503 GtkWidgetClass *widget_class;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1504 GtkLayoutClass *layout_class;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1505
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1506 object_class = (GtkObjectClass*) class;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1507 widget_class = (GtkWidgetClass*) class;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1508 layout_class = (GtkLayoutClass*) class;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1509
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1510 parent_class = gtk_type_class (GTK_TYPE_LAYOUT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1511
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1512 signals [URL_CLICKED] =
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1513 gtk_signal_new ("url_clicked",
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1514 GTK_RUN_FIRST,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1515 object_class->type,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1516 GTK_SIGNAL_OFFSET (GtkIMHtmlClass, url_clicked),
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1517 gtk_marshal_NONE__POINTER,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1518 GTK_TYPE_NONE, 1,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1519 GTK_TYPE_POINTER);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1520
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1521 gtk_object_class_add_signals (object_class, signals, LAST_SIGNAL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1522
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1523 object_class->destroy = gtk_imhtml_destroy;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1524
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1525 widget_class->realize = gtk_imhtml_realize;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1526 widget_class->draw = gtk_imhtml_draw;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1527 widget_class->draw_focus = gtk_imhtml_draw_focus;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1528 widget_class->style_set = gtk_imhtml_style_set;
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1529 widget_class->expose_event = gtk_imhtml_expose_event;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1530 widget_class->size_allocate = gtk_imhtml_size_allocate;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1531 widget_class->motion_notify_event = gtk_imhtml_motion_notify_event;
1613
8216312b8c7e [gaim-migrate @ 1623]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1582
diff changeset
1532 widget_class->leave_notify_event = gtk_imhtml_leave_notify_event;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1533 widget_class->button_press_event = gtk_imhtml_button_press_event;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1534 widget_class->button_release_event = gtk_imhtml_button_release_event;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1535 widget_class->selection_get = gtk_imhtml_selection_get;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1536 widget_class->selection_clear_event = gtk_imhtml_selection_clear_event;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1537
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1538 layout_class->set_scroll_adjustments = gtk_imhtml_set_scroll_adjustments;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1539 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1540
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1541 static gchar**
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1542 get_font_names ()
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1543 {
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1544 gint num_fonts = 0;
2065
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1545 gchar **xfontnames;
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1546 static gchar **fonts = NULL;
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1547 gint i;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1548
2065
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1549 if (fonts)
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1550 return fonts;
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1551
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1552 xfontnames = XListFonts (GDK_DISPLAY (), "-*", MAX_FONTS, &num_fonts);
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1553
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1554 if (!num_fonts) {
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1555 XFreeFontNames(xfontnames);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1556 return g_new0 (char *, 1);
2065
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1557 }
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1558
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1559 fonts = g_new0 (char *, num_fonts + 1);
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1560
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1561 for (i = 0; i < num_fonts; i++) {
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1562 gint countdown = 1, num_dashes = 1;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1563 const gchar *t1 = xfontnames [i];
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1564 const gchar *t2;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1565
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1566 while (*t1 && (countdown >= 0))
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1567 if (*t1++ == '-')
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1568 countdown--;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1569
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1570 for (t2 = t1; *t2; t2++)
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1571 if (*t2 == '-' && --num_dashes == 0)
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1572 break;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1573
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1574 fonts [i] = g_strndup (t1, (long) t2 - (long) t1);
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1575 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1576
2065
6267e4b1466f [gaim-migrate @ 2075]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2048
diff changeset
1577 XFreeFontNames(xfontnames);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1578 return fonts;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1579 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1580
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1581 static GdkFont*
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1582 gtk_imhtml_font_load (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1583 gchar *name,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1584 gboolean bold,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1585 gboolean italics,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1586 gint fontsize)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1587 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1588 gchar buf [16 * 1024];
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1589 GdkFont *font = NULL;
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1590 XFontStruct *xfs;
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1591 static gchar **fontnames = NULL;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1592 gchar *choice = NULL;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1593 gint size = fontsize ? font_sizes [MIN (fontsize, MAX_SIZE) - 1] : 120;
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1594 gint i, j;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1595
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1596 if (!fontnames)
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1597 fontnames = get_font_names ();
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1598
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1599 if (name) {
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1600 gchar **choices = g_strsplit (name, ",", -1);
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1601
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1602 for (i = 0; choices [i]; i++) {
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1603 for (j = 0; fontnames [j]; j++)
2048
4ac8b9622c9e [gaim-migrate @ 2058]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2022
diff changeset
1604 if (!g_strcasecmp (fontnames [j], choices [i]))
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1605 break;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1606 if (fontnames [j])
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1607 break;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1608 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1609
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1610 if (choices [i])
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1611 choice = g_strdup (choices [i]);
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1612
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1613 g_strfreev (choices);
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1614 } else if (!bold && !italics && !fontsize && imhtml->default_font)
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1615 return gdk_font_ref (imhtml->default_font);
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1616
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1617 if (!choice) {
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1618 for (i = 0; fontnames [i]; i++)
2048
4ac8b9622c9e [gaim-migrate @ 2058]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2022
diff changeset
1619 if (!g_strcasecmp (fontnames [i], DEFAULT_FONT_NAME))
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1620 break;
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1621 if (fontnames [i])
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1622 choice = g_strdup (DEFAULT_FONT_NAME);
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1623 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1624
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1625 if (!choice) {
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1626 if (imhtml->default_font)
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1627 return gdk_font_ref (imhtml->default_font);
2115
848a8af1a4af [gaim-migrate @ 2125]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2075
diff changeset
1628 return gdk_fontset_load ("-*-*-*-*-*-*-*-*-*-*-*-*-*-*,*");
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1629 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1630
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1631 g_snprintf (buf, sizeof (buf), "-*-%s-%s-%c-*-*-*-%d-*-*-*-*-iso8859-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1632 choice,
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1633 bold ? "bold" : "medium",
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1634 italics ? 'i' : 'r',
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1635 size);
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1636 font = gdk_font_load (buf);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1637
2140
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1638 if (!font && italics) {
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1639 g_snprintf (buf, sizeof (buf), "-*-%s-%s-o-*-*-*-%d-*-*-*-*-iso8859-*",
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1640 choice,
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1641 bold ? "bold" : "medium",
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1642 size);
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1643 font = gdk_font_load (buf);
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1644 }
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1645
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1646 if (!font) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1647 g_snprintf (buf, sizeof (buf), "-*-%s-%s-%c-*-*-*-*-*-*-*-*-iso8859-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1648 choice,
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1649 bold ? "bold" : "medium",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1650 italics ? 'i' : 'r');
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1651 font = gdk_font_load (buf);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1652 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1653
2140
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1654 if (!font && italics) {
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1655 g_snprintf (buf, sizeof (buf), "-*-%s-%s-o-*-*-*-*-*-*-*-*-iso8859-*",
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1656 choice,
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1657 bold ? "bold" : "medium");
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1658 font = gdk_font_load (buf);
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1659 }
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1660
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1661 if (!font) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1662 g_snprintf (buf, sizeof (buf), "-*-%s-*-%c-*-*-*-*-*-*-*-*-iso8859-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1663 choice,
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1664 italics ? 'i' : 'r');
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1665 font = gdk_font_load (buf);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1666 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1667
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1668 if (!font) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1669 g_snprintf (buf, sizeof (buf), "-*-%s-*-%c-*-*-*-*-*-*-*-*-iso8859-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1670 choice,
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1671 italics ? 'o' : '*');
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1672 font = gdk_font_load (buf);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1673 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1674
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1675 if (!font && italics) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1676 g_snprintf (buf, sizeof (buf), "-*-%s-*-*-*-*-*-*-*-*-*-*-iso8859-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1677 choice);
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1678 font = gdk_font_load (buf);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1679 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1680
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1681 if (!font) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1682 g_snprintf (buf, sizeof (buf), "-*-%s-%s-%c-*-*-*-%d-*-*-*-*-*-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1683 choice,
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1684 bold ? "bold" : "medium",
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1685 italics ? 'i' : 'r',
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1686 size);
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1687 font = gdk_font_load (buf);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1688 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1689
2140
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1690 if (!font && italics) {
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1691 g_snprintf (buf, sizeof (buf), "-*-%s-%s-o-*-*-*-%d-*-*-*-*-*-*",
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1692 choice,
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1693 bold ? "bold" : "medium",
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1694 size);
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1695 font = gdk_font_load (buf);
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1696 }
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1697
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1698 if (!font) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1699 g_snprintf (buf, sizeof (buf), "-*-%s-%s-%c-*-*-*-*-*-*-*-*-*-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1700 choice,
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1701 bold ? "bold" : "medium",
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1702 italics ? 'i' : 'r');
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1703 font = gdk_font_load (buf);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1704 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1705
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1706 if (!font) {
2140
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1707 g_snprintf (buf, sizeof (buf), "-*-%s-%s-o-*-*-*-*-*-*-*-*-*-*",
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1708 choice,
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1709 bold ? "bold" : "medium");
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1710 font = gdk_font_load (buf);
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1711 }
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1712
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
1713 if (!font) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1714 g_snprintf (buf, sizeof (buf), "-*-%s-*-%c-*-*-*-*-*-*-*-*-*-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1715 choice,
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1716 italics ? 'i' : 'r');
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1717 font = gdk_font_load (buf);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1718 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1719
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1720 if (!font) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1721 g_snprintf (buf, sizeof (buf), "-*-%s-*-%c-*-*-*-*-*-*-*-*-*-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1722 choice,
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1723 italics ? 'o' : '*');
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1724 font = gdk_font_load (buf);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1725 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1726
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1727 if (!font && italics) {
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1728 g_snprintf (buf, sizeof (buf), "-*-%s-*-*-*-*-*-*-*-*-*-*-*-*",
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1729 choice);
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1730 font = gdk_font_load (buf);
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1731 }
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1732
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1733 g_free (choice);
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1734
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1735 if (!font && imhtml->default_font)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1736 return gdk_font_ref (imhtml->default_font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1737
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1738 xfs = font ? GDK_FONT_XFONT (font) : NULL;
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1739 if (xfs && (xfs->min_byte1 != 0 || xfs->max_byte1 != 0)) {
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1740 gchar *tmp_name;
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1741
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1742 gdk_font_unref (font);
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1743 tmp_name = g_strconcat (buf, ",*", NULL);
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1744 font = gdk_fontset_load (tmp_name);
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1745 g_free (tmp_name);
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1746 }
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1747
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1748 if (!font)
2116
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1749 return gdk_fontset_load ("-*-*-*-*-*-*-*-*-*-*-*-*-*-*,*");
603e40b00a07 [gaim-migrate @ 2126]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2115
diff changeset
1750
1978
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1751
77cd6993d3a4 [gaim-migrate @ 1988]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1964
diff changeset
1752 return font;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1753 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1754
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1755 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1756 gtk_imhtml_init (GtkIMHtml *imhtml)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1757 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1758 static const GtkTargetEntry targets [] = {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1759 { "STRING", 0, TARGET_STRING },
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1760 { "TEXT", 0, TARGET_TEXT },
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1761 { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1762 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1763
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1764 imhtml->default_font = gtk_imhtml_font_load (imhtml, NULL, FALSE, FALSE, 0);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1765 if (imhtml->default_font == NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1766 g_warning ("GtkIMHtml: Could not load default font!");
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
1767 imhtml->default_fg_color = gdk_color_copy (&GTK_WIDGET (imhtml)->style->fg [GTK_STATE_NORMAL]);
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
1768 imhtml->default_bg_color = gdk_color_copy (&GTK_WIDGET (imhtml)->style->base [GTK_STATE_NORMAL]);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1769 imhtml->hand_cursor = gdk_cursor_new (GDK_HAND2);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1770 imhtml->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1771
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1772 GTK_WIDGET_SET_FLAGS (GTK_WIDGET (imhtml), GTK_CAN_FOCUS);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1773 gtk_selection_add_targets (GTK_WIDGET (imhtml), GDK_SELECTION_PRIMARY, targets, 3);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1774 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1775
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1776 GtkType
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1777 gtk_imhtml_get_type (void)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1778 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1779 static GtkType imhtml_type = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1780
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1781 if (!imhtml_type) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1782 static const GtkTypeInfo imhtml_info = {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1783 "GtkIMHtml",
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1784 sizeof (GtkIMHtml),
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1785 sizeof (GtkIMHtmlClass),
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1786 (GtkClassInitFunc) gtk_imhtml_class_init,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1787 (GtkObjectInitFunc) gtk_imhtml_init,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1788 NULL,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1789 NULL,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1790 NULL
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1791 };
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1792
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1793 imhtml_type = gtk_type_unique (GTK_TYPE_LAYOUT, &imhtml_info);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1794 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1795
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1796 return imhtml_type;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1797 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1798
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1799 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1800 gtk_imhtml_init_smiley_hash (GtkIMHtml *imhtml)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1801 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1802 g_return_if_fail (imhtml != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1803 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1804
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1805 imhtml->smiley_hash = g_hash_table_new (g_str_hash, g_str_equal);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1806
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1807 gtk_imhtml_associate_smiley (imhtml, ":)", smile_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1808 gtk_imhtml_associate_smiley (imhtml, ":-)", smile_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1809
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1810 gtk_imhtml_associate_smiley (imhtml, ":(", sad_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1811 gtk_imhtml_associate_smiley (imhtml, ":-(", sad_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1812
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1813 gtk_imhtml_associate_smiley (imhtml, ";)", wink_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1814 gtk_imhtml_associate_smiley (imhtml, ";-)", wink_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1815
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1816 gtk_imhtml_associate_smiley (imhtml, ":-p", tongue_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1817 gtk_imhtml_associate_smiley (imhtml, ":-P", tongue_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1818
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1819 gtk_imhtml_associate_smiley (imhtml, "=-O", scream_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1820 gtk_imhtml_associate_smiley (imhtml, ":-*", kiss_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1821 gtk_imhtml_associate_smiley (imhtml, ">:o", yell_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1822 gtk_imhtml_associate_smiley (imhtml, "8-)", smile8_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1823 gtk_imhtml_associate_smiley (imhtml, ":-$", moneymouth_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1824 gtk_imhtml_associate_smiley (imhtml, ":-!", burp_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1825 gtk_imhtml_associate_smiley (imhtml, ":-[", embarrassed_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1826 gtk_imhtml_associate_smiley (imhtml, ":'(", cry_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1827
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1828 gtk_imhtml_associate_smiley (imhtml, ":-/", think_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1829 gtk_imhtml_associate_smiley (imhtml, ":-\\", think_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1830
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1831 gtk_imhtml_associate_smiley (imhtml, ":-X", crossedlips_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1832 gtk_imhtml_associate_smiley (imhtml, ":-D", bigsmile_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1833 gtk_imhtml_associate_smiley (imhtml, "O:-)", angel_xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1834 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1835
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1836 GtkWidget*
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1837 gtk_imhtml_new (GtkAdjustment *hadj,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1838 GtkAdjustment *vadj)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1839 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1840 GtkIMHtml *imhtml = gtk_type_new (GTK_TYPE_IMHTML);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1841
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1842 gtk_imhtml_set_adjustments (imhtml, hadj, vadj);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1843
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1844 imhtml->bits = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1845 imhtml->urls = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1846
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1847 imhtml->x = 0;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1848 imhtml->y = TOP_BORDER;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1849 imhtml->llheight = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1850 imhtml->llascent = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1851 imhtml->line = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1852
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1853 imhtml->selected_text = g_string_new ("");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1854 imhtml->scroll_timer = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1855
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1856 imhtml->img = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1857
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1858 imhtml->smileys = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1859 imhtml->comments = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1860
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1861 imhtml->smin = G_MAXINT;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1862 imhtml->smax = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1863 gtk_imhtml_init_smiley_hash (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1864
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1865 return GTK_WIDGET (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1866 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1867
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1868 void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1869 gtk_imhtml_set_adjustments (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1870 GtkAdjustment *hadj,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1871 GtkAdjustment *vadj)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1872 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1873 gtk_layout_set_hadjustment (GTK_LAYOUT (imhtml), hadj);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1874 gtk_layout_set_vadjustment (GTK_LAYOUT (imhtml), vadj);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1875 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1876
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1877 void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1878 gtk_imhtml_set_defaults (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1879 GdkFont *font,
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
1880 GdkColor *fg_color,
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
1881 GdkColor *bg_color)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1882 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1883 g_return_if_fail (imhtml != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1884 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1885
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1886 if (font) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1887 if (imhtml->default_font)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1888 gdk_font_unref (imhtml->default_font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1889 imhtml->default_font = gdk_font_ref (font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1890 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1891
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1892 if (fg_color) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1893 if (imhtml->default_fg_color)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1894 gdk_color_free (imhtml->default_fg_color);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1895 imhtml->default_fg_color = gdk_color_copy (fg_color);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1896 }
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
1897
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
1898 if (bg_color) {
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
1899 if (imhtml->default_bg_color)
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
1900 gdk_color_free (imhtml->default_bg_color);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
1901 imhtml->default_bg_color = gdk_color_copy (bg_color);
1647
ab281d390ee6 [gaim-migrate @ 1657]
Decklin Foster <decklin@red-bean.com>
parents: 1626
diff changeset
1902 gdk_window_set_background (GTK_LAYOUT (imhtml)->bin_window, imhtml->default_bg_color);
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
1903 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1904 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1905
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1906 void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1907 gtk_imhtml_set_img_handler (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1908 GtkIMHtmlImage handler)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1909 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1910 g_return_if_fail (imhtml != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1911 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1912
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1913 imhtml->img = handler;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1914 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1915
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1916 void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1917 gtk_imhtml_associate_smiley (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1918 gchar *text,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1919 gchar **xpm)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1920 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1921 g_return_if_fail (imhtml != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1922 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1923 g_return_if_fail (text != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1924
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1925 if (strlen (text) < imhtml->smin)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1926 imhtml->smin = strlen (text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1927
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1928 if (strlen (text) > imhtml->smax)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1929 imhtml->smax = strlen (text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1930
1519
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
1931 if (!imhtml->smiley_start)
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
1932 imhtml->smiley_start = g_string_new ("");
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
1933
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
1934 if (!strchr (imhtml->smiley_start->str, text [0]))
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
1935 imhtml->smiley_start = g_string_append_c (imhtml->smiley_start, text [0]);
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
1936
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1937 if (xpm == NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1938 g_hash_table_remove (imhtml->smiley_hash, text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1939 else
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1940 g_hash_table_insert (imhtml->smiley_hash, text, xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1941 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1942
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1943 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1944 new_line (GtkIMHtml *imhtml)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1945 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1946 GList *last = g_list_last (imhtml->line);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1947 struct line_info *li;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1948
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1949 if (last) {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1950 li = last->data;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1951 if (li->x + li->width != imhtml->xsize)
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1952 li->width = imhtml->xsize - li->x;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1953 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1954
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1955 last = imhtml->line;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1956 if (last) {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1957 li = last->data;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1958 if (li->height < MIN_HEIGHT) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1959 while (last) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1960 gint diff;
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1961 li = last->data;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1962 diff = MIN_HEIGHT - li->height;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1963 li->height = MIN_HEIGHT;
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
1964 li->ascent += diff / 2;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1965 last = g_list_next (last);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1966 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1967 imhtml->llheight = MIN_HEIGHT;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1968 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1969 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1970
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1971 g_list_free (imhtml->line);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1972 imhtml->line = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1973
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
1974 imhtml->x = 0;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1975 imhtml->y += imhtml->llheight;
1462
69f0d88fbed3 [gaim-migrate @ 1472]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1461
diff changeset
1976 imhtml->llheight = 0;
69f0d88fbed3 [gaim-migrate @ 1472]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1461
diff changeset
1977 imhtml->llascent = 0;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1978 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1979
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1980 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1981 backwards_update (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1982 GtkIMHtmlBit *bit,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1983 gint height,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1984 gint ascent)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1985 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1986 gint diff;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1987 GList *ls = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1988 struct line_info *li;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1989 struct url_widget *uw;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1990
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1991 if (height > imhtml->llheight) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1992 diff = height - imhtml->llheight;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1993
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1994 ls = imhtml->line;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1995 while (ls) {
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
1996 li = ls->data;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1997 li->height += diff;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1998 if (ascent)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1999 li->ascent = ascent;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2000 else
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
2001 li->ascent += diff / 2;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2002 ls = g_list_next (ls);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2003 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2004
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2005 ls = imhtml->urls;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2006 while (ls) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2007 uw = ls->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2008 if (uw->y + diff > imhtml->y)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2009 uw->y += diff;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2010 ls = g_list_next (ls);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2011 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2012
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2013 imhtml->llheight = height;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2014 if (ascent)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2015 imhtml->llascent = ascent;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2016 else
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
2017 imhtml->llascent += diff / 2;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2018 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2019 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2020
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2021 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2022 add_text_renderer (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2023 GtkIMHtmlBit *bit,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2024 gchar *text)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2025 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2026 struct line_info *li;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2027 struct url_widget *uw;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2028 gint width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2029
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2030 if (text)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2031 width = gdk_string_width (bit->font, text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2032 else
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2033 width = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2034
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2035 li = g_new0 (struct line_info, 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2036 li->x = imhtml->x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2037 li->y = imhtml->y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2038 li->width = width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2039 li->height = imhtml->llheight;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2040 if (text)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2041 li->ascent = MAX (imhtml->llascent, bit->font->ascent);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2042 else
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2043 li->ascent = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2044 li->text = text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2045 li->bit = bit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2046
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2047 if (bit->url) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2048 uw = g_new0 (struct url_widget, 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2049 uw->x = imhtml->x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2050 uw->y = imhtml->y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2051 uw->width = width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2052 uw->height = imhtml->llheight;
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
2053 uw->bit = bit;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2054 imhtml->urls = g_list_append (imhtml->urls, uw);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2055 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2056
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
2057 bit->chunks = g_list_append (bit->chunks, li);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
2058 imhtml->line = g_list_append (imhtml->line, li);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2059 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2060
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2061 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2062 add_img_renderer (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2063 GtkIMHtmlBit *bit)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2064 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2065 struct line_info *li;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2066 struct url_widget *uw;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2067 gint width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2068
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2069 gdk_window_get_size (bit->pm, &width, NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2070
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2071 li = g_new0 (struct line_info, 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2072 li->x = imhtml->x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2073 li->y = imhtml->y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2074 li->width = width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2075 li->height = imhtml->llheight;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2076 li->ascent = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2077 li->bit = bit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2078
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2079 if (bit->url) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2080 uw = g_new0 (struct url_widget, 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2081 uw->x = imhtml->x;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2082 uw->y = imhtml->y;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2083 uw->width = width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2084 uw->height = imhtml->llheight;
1574
155ae4e33c31 [gaim-migrate @ 1584]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1547
diff changeset
2085 uw->bit = bit;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2086 imhtml->urls = g_list_append (imhtml->urls, uw);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2087 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2088
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
2089 bit->chunks = g_list_append (bit->chunks, li);
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
2090 imhtml->line = g_list_append (imhtml->line, li);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2091
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2092 imhtml->x += width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2093 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2094
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2095 static void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2096 gtk_imhtml_draw_bit (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2097 GtkIMHtmlBit *bit)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2098 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2099 gint width, height;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2100
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2101 g_return_if_fail (imhtml != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2102 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2103 g_return_if_fail (bit != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2104
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2105 if ( (bit->type == TYPE_TEXT) ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2106 ((bit->type == TYPE_SMILEY) && !imhtml->smileys) ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2107 ((bit->type == TYPE_COMMENT) && imhtml->comments)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2108 gchar *copy = g_strdup (bit->text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2109 gint pos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2110 gboolean seenspace = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2111 gchar *tmp;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2112
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2113 height = bit->font->ascent + bit->font->descent;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2114 width = gdk_string_width (bit->font, bit->text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2115
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
2116 if ((imhtml->x != 0) && ((imhtml->x + width) > imhtml->xsize)) {
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
2117 gint remain = imhtml->xsize - imhtml->x;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2118 while (gdk_text_width (bit->font, copy, pos) < remain) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2119 if (copy [pos] == ' ')
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2120 seenspace = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2121 pos++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2122 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2123 if (seenspace) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2124 while (copy [pos - 1] != ' ') pos--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2125
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2126 tmp = g_strndup (copy, pos);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2127
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2128 backwards_update (imhtml, bit, height, bit->font->ascent);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2129 add_text_renderer (imhtml, bit, tmp);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2130 } else
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2131 pos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2132 seenspace = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2133 new_line (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2134 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2135
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2136 backwards_update (imhtml, bit, height, bit->font->ascent);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2137
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2138 while (pos < strlen (bit->text)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2139 width = gdk_string_width (bit->font, copy + pos);
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
2140 if (imhtml->x + width > imhtml->xsize) {
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2141 gint newpos = 0;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
2142 gint remain = imhtml->xsize - imhtml->x;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2143 while (gdk_text_width (bit->font, copy + pos, newpos) < remain) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2144 if (copy [pos + newpos] == ' ')
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2145 seenspace = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2146 newpos++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2147 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2148
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2149 if (seenspace)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2150 while (copy [pos + newpos - 1] != ' ') newpos--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2151
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2152 if (newpos == 0)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2153 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2154
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2155 tmp = g_strndup (copy + pos, newpos);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2156 pos += newpos;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2157
1462
69f0d88fbed3 [gaim-migrate @ 1472]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1461
diff changeset
2158 backwards_update (imhtml, bit, height, bit->font->ascent);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2159 add_text_renderer (imhtml, bit, tmp);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2160
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2161 seenspace = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2162 new_line (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2163 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2164 tmp = g_strdup (copy + pos);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2165
1462
69f0d88fbed3 [gaim-migrate @ 1472]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1461
diff changeset
2166 backwards_update (imhtml, bit, height, bit->font->ascent);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2167 add_text_renderer (imhtml, bit, tmp);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2168
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2169 pos = strlen (bit->text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2170
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2171 imhtml->x += width;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2172 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2173 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2174
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2175 g_free (copy);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2176 } else if ((bit->type == TYPE_SMILEY) || (bit->type == TYPE_IMG)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2177 gdk_window_get_size (bit->pm, &width, &height);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2178
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
2179 if ((imhtml->x != 0) && ((imhtml->x + width) > imhtml->xsize))
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2180 new_line (imhtml);
1462
69f0d88fbed3 [gaim-migrate @ 1472]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1461
diff changeset
2181 else
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2182 backwards_update (imhtml, bit, height, 0);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2183
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2184 add_img_renderer (imhtml, bit);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2185 } else if (bit->type == TYPE_BR) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2186 new_line (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2187 add_text_renderer (imhtml, bit, NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2188 } else if (bit->type == TYPE_SEP) {
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2189 struct line_info *li;
1462
69f0d88fbed3 [gaim-migrate @ 1472]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1461
diff changeset
2190 if (imhtml->llheight)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2191 new_line (imhtml);
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2192
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2193 li = g_new0 (struct line_info, 1);
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2194 li->x = imhtml->x;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2195 li->y = imhtml->y;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
2196 li->width = imhtml->xsize;
1454
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2197 li->height = HR_HEIGHT * 2;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2198 li->ascent = 0;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2199 li->text = NULL;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2200 li->bit = bit;
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2201
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2202 bit->chunks = g_list_append (bit->chunks, li);
153c42e644ff [gaim-migrate @ 1464]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1453
diff changeset
2203
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2204 imhtml->llheight = HR_HEIGHT * 2;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2205 new_line (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2206 add_text_renderer (imhtml, bit, NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2207 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2208 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2209
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2210 void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2211 gtk_imhtml_show_smileys (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2212 gboolean show)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2213 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2214 g_return_if_fail (imhtml != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2215 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2216
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2217 imhtml->smileys = show;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2218
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2219 if (GTK_WIDGET_VISIBLE (GTK_WIDGET (imhtml)))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2220 gtk_imhtml_redraw_all (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2221 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2222
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2223 void
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2224 gtk_imhtml_show_comments (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2225 gboolean show)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2226 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2227 g_return_if_fail (imhtml != NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2228 g_return_if_fail (GTK_IS_IMHTML (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2229
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2230 imhtml->comments = show;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2231
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2232 if (GTK_WIDGET_VISIBLE (GTK_WIDGET (imhtml)))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2233 gtk_imhtml_redraw_all (imhtml);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2234 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2235
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2236 static GdkColor *
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2237 gtk_imhtml_get_color (const gchar *color)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2238 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2239 GdkColor c;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2240
1453
fb1ccaf9323b [gaim-migrate @ 1463]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1449
diff changeset
2241 if (!gdk_color_parse (color, &c))
fb1ccaf9323b [gaim-migrate @ 1463]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1449
diff changeset
2242 return NULL;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2243
1449
180e0a27c43f [gaim-migrate @ 1459]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1447
diff changeset
2244 return gdk_color_copy (&c);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2245 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2246
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2247 static gint
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2248 gtk_imhtml_is_smiley (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2249 const gchar *text)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2250 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2251 gchar *tmp;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2252 gint i;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2253
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2254 g_return_val_if_fail (imhtml != NULL, 0);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2255 g_return_val_if_fail (GTK_IS_IMHTML (imhtml), 0);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2256 g_return_val_if_fail (text != NULL, 0);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2257
1519
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
2258 if (!imhtml->smiley_start || !strchr (imhtml->smiley_start->str, text [0]))
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
2259 return 0;
bbb72e250233 [gaim-migrate @ 1529]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1515
diff changeset
2260
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2261 tmp = g_malloc (imhtml->smax + 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2262
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2263 for (i = imhtml->smin; i <= imhtml->smax; i++) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2264 if (strlen (text) < i) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2265 g_free (tmp);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2266 return 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2267 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2268 g_snprintf (tmp, i + 1, "%s", text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2269 if (g_hash_table_lookup (imhtml->smiley_hash, tmp)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2270 g_free (tmp);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2271 return i;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2272 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2273 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2274
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2275 g_free (tmp);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2276 return 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2277 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2278
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2279 static GtkIMHtmlBit *
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2280 gtk_imhtml_new_bit (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2281 gint type,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2282 gchar *text,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2283 gint bold,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2284 gint italics,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2285 gint underline,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2286 gint strike,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2287 FontDetail *font,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2288 GdkColor *bg,
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2289 gchar *url,
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2290 gint pre)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2291 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2292 GtkIMHtmlBit *bit = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2293
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2294 g_return_val_if_fail (imhtml != NULL, NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2295 g_return_val_if_fail (GTK_IS_IMHTML (imhtml), NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2296
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2297 if ((type == TYPE_TEXT) && ((text == NULL) || (strlen (text) == 0)))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2298 return NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2299
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2300 bit = g_new0 (GtkIMHtmlBit, 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2301 bit->type = type;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2302
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2303 if ((text != NULL) && (strlen (text) != 0))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2304 bit->text = g_strdup (text);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2305
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2306 if ((font != NULL) || bold || italics || pre) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2307 if (font && (bold || italics || font->size || font->face || pre)) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2308 if (pre) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2309 bit->font = gtk_imhtml_font_load (imhtml, "courier", bold, italics, font->size);
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2310 } else {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2311 bit->font = gtk_imhtml_font_load (imhtml, font->face, bold, italics, font->size);
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2312 }
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2313 } else if (bold || italics || pre) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2314 if (pre) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2315 bit->font = gtk_imhtml_font_load (imhtml, "Courier", bold, italics, 0);
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2316 } else {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2317 bit->font = gtk_imhtml_font_load (imhtml, NULL, bold, italics, 0);
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2318 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2319 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2320
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2321 if (font && (type != TYPE_BR)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2322 if (font->fore != NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2323 bit->fore = gdk_color_copy (font->fore);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2324
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2325 if (font->back != NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2326 bit->back = gdk_color_copy (font->back);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2327 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2328 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2329
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2330 if (((bit->type == TYPE_TEXT) || (bit->type == TYPE_SMILEY) || (bit->type == TYPE_COMMENT)) &&
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2331 (bit->font == NULL))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2332 bit->font = gdk_font_ref (imhtml->default_font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2333
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2334 if (bg != NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2335 bit->bg = gdk_color_copy (bg);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2336
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2337 bit->underline = underline;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2338 bit->strike = strike;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2339
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2340 if (url != NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2341 bit->url = g_strdup (url);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2342
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2343 if (type == TYPE_SMILEY) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2344 GdkColor *clr;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2345
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2346 if ((font != NULL) && (font->back != NULL))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2347 clr = font->back;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2348 else
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2349 clr = (bg != NULL) ? bg : imhtml->default_bg_color;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2350
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2351 bit->pm = gdk_pixmap_create_from_xpm_d (GTK_WIDGET (imhtml)->window,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2352 &bit->bm,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2353 clr,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2354 g_hash_table_lookup (imhtml->smiley_hash, text));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2355 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2356
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2357 return bit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2358 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2359
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2360 #define NEW_TEXT_BIT gtk_imhtml_new_bit (imhtml, TYPE_TEXT, ws, bold, italics, underline, strike, \
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2361 fonts ? fonts->data : NULL, bg, url, pre)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2362 #define NEW_SMILEY_BIT gtk_imhtml_new_bit (imhtml, TYPE_SMILEY, ws, bold, italics, underline, strike, \
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2363 fonts ? fonts->data : NULL, bg, url, pre)
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2364 #define NEW_SEP_BIT gtk_imhtml_new_bit (imhtml, TYPE_SEP, NULL, 0, 0, 0, 0, NULL, bg, NULL, 0)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2365 #define NEW_BR_BIT gtk_imhtml_new_bit (imhtml, TYPE_BR, NULL, 0, 0, 0, 0, \
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2366 fonts ? fonts->data : NULL, bg, NULL, 0)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2367 #define NEW_COMMENT_BIT gtk_imhtml_new_bit (imhtml, TYPE_COMMENT, ws, bold, italics, underline, strike, \
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2368 fonts ? fonts->data : NULL, bg, url, pre)
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2369
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2370 #define NEW_BIT(bit) { GtkIMHtmlBit *tmp = bit; if (tmp != NULL) \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2371 newbits = g_list_append (newbits, tmp); }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2372
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2373 #define UPDATE_BG_COLORS \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2374 { \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2375 GdkColormap *cmap; \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2376 GList *rev; \
1476
fe0b9fe9cede [gaim-migrate @ 1486]
tKirin
parents: 1473
diff changeset
2377 cmap = gtk_widget_get_colormap (GTK_WIDGET (imhtml)); \
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2378 rev = g_list_last (newbits); \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2379 while (rev) { \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2380 GtkIMHtmlBit *bit = rev->data; \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2381 if (bit->bg) \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2382 gdk_color_free (bit->bg); \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2383 bit->bg = gdk_color_copy (bg); \
1582
6d07e6d5de09 [gaim-migrate @ 1592]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1574
diff changeset
2384 if (bit->type == TYPE_BR) \
6d07e6d5de09 [gaim-migrate @ 1592]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1574
diff changeset
2385 break; \
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2386 rev = g_list_previous (rev); \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2387 } \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2388 if (!rev) { \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2389 rev = g_list_last (imhtml->bits); \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2390 while (rev) { \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2391 GtkIMHtmlBit *bit = rev->data; \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2392 if (bit->bg) \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2393 gdk_color_free (bit->bg); \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2394 bit->bg = gdk_color_copy (bg); \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2395 gdk_color_alloc (cmap, bit->bg); \
1582
6d07e6d5de09 [gaim-migrate @ 1592]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1574
diff changeset
2396 if (bit->type == TYPE_BR) \
6d07e6d5de09 [gaim-migrate @ 1592]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1574
diff changeset
2397 break; \
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2398 rev = g_list_previous (rev); \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2399 } \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2400 } \
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2401 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2402
1472
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2403 static gboolean
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2404 is_amp_escape (const gchar *string,
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2405 gchar *replace,
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2406 gint *length)
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2407 {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2408 g_return_val_if_fail (string != NULL, FALSE);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2409 g_return_val_if_fail (replace != NULL, FALSE);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2410 g_return_val_if_fail (length != NULL, FALSE);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2411
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2412 if (!g_strncasecmp (string, "&amp;", 5)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2413 *replace = '&';
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2414 *length = 5;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2415 } else if (!g_strncasecmp (string, "&lt;", 4)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2416 *replace = '<';
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2417 *length = 4;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2418 } else if (!g_strncasecmp (string, "&gt;", 4)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2419 *replace = '>';
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2420 *length = 4;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2421 } else if (!g_strncasecmp (string, "&nbsp;", 6)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2422 *replace = ' ';
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2423 *length = 6;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2424 } else if (!g_strncasecmp (string, "&copy;", 6)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2425 *replace = '©';
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2426 *length = 6;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2427 } else if (!g_strncasecmp (string, "&quot;", 6)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2428 *replace = '\"';
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2429 *length = 6;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2430 } else if (!g_strncasecmp (string, "&reg;", 5)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2431 *replace = '®';
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2432 *length = 5;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2433 } else if (*(string + 1) == '#') {
2022
c47ca971fd2f [gaim-migrate @ 2032]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2002
diff changeset
2434 guint pound = 0;
c47ca971fd2f [gaim-migrate @ 2032]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2002
diff changeset
2435 if (sscanf (string, "&#%u;", &pound) == 1) {
1472
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2436 if (*(string + 3 + (gint)log10 (pound)) != ';')
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2437 return FALSE;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2438 *replace = (gchar)pound;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2439 *length = 2;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2440 while (isdigit ((gint) string [*length])) (*length)++;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2441 if (string [*length] == ';') (*length)++;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2442 } else {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2443 return FALSE;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2444 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2445 } else {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2446 return FALSE;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2447 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2448
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2449 return TRUE;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2450 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2451
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2452 GString*
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2453 gtk_imhtml_append_text (GtkIMHtml *imhtml,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2454 const gchar *text,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2455 GtkIMHtmlOptions options)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2456 {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2457 const gchar *c;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2458 gboolean intag = FALSE;
1703
16cf54e403dc [gaim-migrate @ 1713]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1691
diff changeset
2459 gint tagquote = 0;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2460 gboolean incomment = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2461 gchar *ws;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2462 gchar *tag;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2463 gint wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2464 gint tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2465 int smilelen;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2466 GList *newbits = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2467
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2468 guint bold = 0,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2469 italics = 0,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2470 underline = 0,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2471 strike = 0,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2472 sub = 0,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2473 sup = 0,
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2474 title = 0,
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2475 pre = 0;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2476 GSList *fonts = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2477 GdkColor *bg = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2478 gchar *url = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2479
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2480 GtkAdjustment *vadj;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2481 gboolean scrolldown = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2482
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2483 GString *retval = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2484
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2485 g_return_val_if_fail (imhtml != NULL, NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2486 g_return_val_if_fail (GTK_IS_IMHTML (imhtml), NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2487 g_return_val_if_fail (text != NULL, NULL);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2488
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2489 if (options & GTK_IMHTML_RETURN_LOG)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2490 retval = g_string_new ("");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2491
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2492 vadj = GTK_LAYOUT (imhtml)->vadjustment;
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
2493 if ((vadj->value < imhtml->y - GTK_WIDGET (imhtml)->allocation.height) &&
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2494 (vadj->upper >= GTK_WIDGET (imhtml)->allocation.height))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2495 scrolldown = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2496
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2497 c = text;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2498 ws = g_malloc (strlen (text) + 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2499 tag = g_malloc (strlen (text) + 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2500
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2501 ws [0] = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2502
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2503 while (*c) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2504 if (*c == '<') {
1703
16cf54e403dc [gaim-migrate @ 1713]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1691
diff changeset
2505 if (intag && (tagquote != 1)) {
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2506 char *d;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2507 tag [tpos] = 0;
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2508 d = tag;
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2509 while (*d) {
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2510 if ((smilelen = gtk_imhtml_is_smiley (imhtml, d)) != 0) {
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2511 ws [wpos] = 0;
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2512 wpos = 0;
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2513 NEW_BIT (NEW_TEXT_BIT);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2514 g_snprintf (ws, smilelen + 1, "%s", d);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2515 NEW_BIT (NEW_SMILEY_BIT);
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2516 d += smilelen;
1472
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2517 } else if (*d == '&') {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2518 gchar replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2519 gint length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2520 if (is_amp_escape (d, &replace, &length)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2521 ws [wpos++] = replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2522 d += length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2523 } else {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2524 ws [wpos++] = *d++;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2525 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2526 } else if (*d == '\n') {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2527 if (!(options & GTK_IMHTML_NO_NEWLINE)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2528 ws [wpos] = 0;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2529 wpos = 0;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2530 NEW_BIT (NEW_TEXT_BIT);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2531 NEW_BIT (NEW_BR_BIT);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2532 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
2533 d++;
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2534 } else {
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2535 ws [wpos++] = *d++;
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2536 }
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
2537 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2538 tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2539 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2540
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2541 if (incomment) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2542 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2543 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2544 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2545
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2546 if (!g_strncasecmp (c, "<!--", strlen ("<!--"))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2547 if (!(options & GTK_IMHTML_NO_COMMENTS)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2548 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2549 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2550 tag [tpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2551 strcat (tag, ws);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2552 incomment = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2553 intag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2554 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2555 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2556 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2557 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2558 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2559 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2560 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2561
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2562 tag [tpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2563 intag = TRUE;
1703
16cf54e403dc [gaim-migrate @ 1713]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1691
diff changeset
2564 tagquote = 0;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2565 } else if (incomment && (*c == '-') && !g_strncasecmp (c, "-->", strlen ("-->"))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2566 gchar *tmp;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2567 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2568 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2569 tmp = g_strdup (ws);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2570 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2571 strcat (ws, tag);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2572 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2573 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2574 strcat (ws, tmp + strlen ("<!--"));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2575 g_free (tmp);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2576 NEW_BIT (NEW_COMMENT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2577 incomment = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2578 c += strlen ("-->");
1703
16cf54e403dc [gaim-migrate @ 1713]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1691
diff changeset
2579 } else if (*c == '>' && intag && (tagquote != 1)) {
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2580 gboolean got_tag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2581 tag [tpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2582 tag [tpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2583 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2584
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2585 if (!g_strcasecmp (tag, "<B>") || !g_strcasecmp (tag, "<BOLD>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2586 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2587 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2588 bold++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2589 } else if (!g_strcasecmp (tag, "</B>") || !g_strcasecmp (tag, "</BOLD>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2590 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2591 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2592 if (bold) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2593 bold--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2594 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2595 } else if (!g_strcasecmp (tag, "<I>") || !g_strcasecmp (tag, "<ITALIC>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2596 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2597 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2598 italics++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2599 } else if (!g_strcasecmp (tag, "</I>") || !g_strcasecmp (tag, "</ITALIC>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2600 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2601 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2602 if (italics) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2603 italics--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2604 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2605 } else if (!g_strcasecmp (tag, "<U>") || !g_strcasecmp (tag, "<UNDERLINE>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2606 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2607 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2608 underline++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2609 } else if (!g_strcasecmp (tag, "</U>") || !g_strcasecmp (tag, "</UNDERLINE>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2610 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2611 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2612 if (underline) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2613 underline--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2614 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2615 } else if (!g_strcasecmp (tag, "<S>") || !g_strcasecmp (tag, "<STRIKE>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2616 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2617 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2618 strike++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2619 } else if (!g_strcasecmp (tag, "</S>") || !g_strcasecmp (tag, "</STRIKE>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2620 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2621 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2622 if (strike) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2623 strike--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2624 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2625 } else if (!g_strcasecmp (tag, "<SUB>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2626 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2627 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2628 sub++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2629 } else if (!g_strcasecmp (tag, "</SUB>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2630 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2631 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2632 if (sub) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2633 sub--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2634 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2635 } else if (!g_strcasecmp (tag, "<SUP>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2636 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2637 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2638 sup++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2639 } else if (!g_strcasecmp (tag, "</SUP>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2640 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2641 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2642 if (sup) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2643 sup--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2644 }
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2645 } else if (!g_strcasecmp (tag, "<PRE>")) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2646 got_tag = TRUE;
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2647 NEW_BIT (NEW_TEXT_BIT);
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2648 pre++;
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2649 } else if (!g_strcasecmp (tag, "</PRE>")) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2650 got_tag = TRUE;
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2651 NEW_BIT (NEW_TEXT_BIT);
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2652 if (pre) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2653 pre--;
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
2654 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2655 } else if (!g_strcasecmp (tag, "<TITLE>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2656 if (options & GTK_IMHTML_NO_TITLE) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2657 got_tag = TRUE;
1626
19ae93cf38ce [gaim-migrate @ 1636]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1613
diff changeset
2658 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2659 title++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2660 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2661 intag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2662 tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2663 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2664 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2665 } else if (!g_strcasecmp (tag, "</TITLE>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2666 if (title) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2667 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2668 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2669 ws [wpos] = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2670 title--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2671 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2672 intag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2673 tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2674 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2675 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2676 } else if (!g_strcasecmp (tag, "<BR>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2677 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2678 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2679 NEW_BIT (NEW_BR_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2680 } else if (!g_strcasecmp (tag, "<HR>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2681 !g_strncasecmp (tag, "<HR ", strlen ("<HR "))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2682 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2683 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2684 NEW_BIT (NEW_SEP_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2685 } else if (!g_strncasecmp (tag, "<FONT ", strlen ("<FONT "))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2686 gchar *t, *e, *a, *value;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2687 FontDetail *font = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2688 GdkColor *clr;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2689 gint saw;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2690 gint i;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2691
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2692 t = tag + strlen ("<FONT ");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2693
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2694 while (*t != '\0') {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2695 value = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2696 saw = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2697
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2698 while (g_strncasecmp (t, "COLOR=", strlen ("COLOR="))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2699 && g_strncasecmp (t, "BACK=", strlen ("BACK="))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2700 && g_strncasecmp (t, "FACE=", strlen ("FACE="))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2701 && g_strncasecmp (t, "SIZE=", strlen ("SIZE="))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2702 gboolean quote = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2703 if (*t == '\0') break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2704 while (*t && !((*t == ' ') && !quote)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2705 if (*t == '\"')
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2706 quote = ! quote;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2707 t++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2708 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2709 while (*t && (*t == ' ')) t++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2710 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2711
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2712 if (!g_strncasecmp (t, "COLOR=", strlen ("COLOR="))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2713 t += strlen ("COLOR=");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2714 saw = 1;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2715 } else if (!g_strncasecmp (t, "BACK=", strlen ("BACK="))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2716 t += strlen ("BACK=");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2717 saw = 2;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2718 } else if (!g_strncasecmp (t, "FACE=", strlen ("FACE="))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2719 t += strlen ("FACE=");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2720 saw = 3;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2721 } else if (!g_strncasecmp (t, "SIZE=", strlen ("SIZE="))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2722 t += strlen ("SIZE=");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2723 saw = 4;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2724 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2725
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2726 if (!saw)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2727 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2728
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2729 if ((*t == '\"') || (*t == '\'')) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2730 e = a = ++t;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2731 while (*e && (*e != *(t - 1))) e++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2732 if (*e != '\0') {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2733 *e = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2734 t = e + 1;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2735 value = g_strdup (a);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2736 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2737 *t = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2738 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2739 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2740 e = a = t;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2741 while (*e && !isspace ((gint) *e)) e++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2742 if (*e == '\0') e--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2743 *e = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2744 t = e + 1;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2745 value = g_strdup (a);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2746 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2747
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2748 if (value == NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2749 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2750
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2751 if (font == NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2752 font = g_new0 (FontDetail, 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2753
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2754 switch (saw) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2755 case 1:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2756 clr = gtk_imhtml_get_color (value);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2757 if (clr != NULL) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2758 if ( (font->fore == NULL) &&
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2759 !(options & GTK_IMHTML_NO_COLOURS))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2760 font->fore = clr;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2761 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2762 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2763 case 2:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2764 clr = gtk_imhtml_get_color (value);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2765 if (clr != NULL) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2766 if ( (font->back == NULL) &&
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2767 !(options & GTK_IMHTML_NO_COLOURS))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2768 font->back = clr;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2769 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2770 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2771 case 3:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2772 if ( (font->face == NULL) &&
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2773 !(options & GTK_IMHTML_NO_FONTS))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2774 font->face = g_strdup (value);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2775 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2776 case 4:
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2777 if ((font->size != 0) ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2778 (options & GTK_IMHTML_NO_SIZES))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2779 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2780
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2781 if (isdigit ((gint) value [0])) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2782 for (i = 0; i < strlen (value); i++)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2783 if (!isdigit ((gint) value [i]))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2784 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2785 if (i != strlen (value))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2786 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2787
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2788 sscanf (value, "%hd", &font->size);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2789 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2790 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2791
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2792 if ((value [0] == '+') && (value [1] != '\0')) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2793 for (i = 1; i < strlen (value); i++)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2794 if (!isdigit ((gint) value [i]))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2795 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2796 if (i != strlen (value))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2797 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2798
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2799 sscanf (value + 1, "%hd", &font->size);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2800 font->size += 3;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2801 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2802 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2803
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2804 if ((value [0] == '-') && (value [1] != '\0')) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2805 for (i = 1; i < strlen (value); i++)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2806 if (!isdigit ((gint) value [i]))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2807 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2808 if (i != strlen (value))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2809 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2810
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2811 sscanf (value + 1, "%hd", &font->size);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2812 font->size = MIN (font->size, 2);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2813 font->size = 3 - font->size;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2814 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2815 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2816
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2817 break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2818 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2819
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2820 g_free (value);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2821 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2822
1738
55e9decd97d6 [gaim-migrate @ 1748]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1703
diff changeset
2823 if (!font || !(font->size || font->face || font->fore || font->back)) {
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2824 intag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2825 tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2826 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2827 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2828
1738
55e9decd97d6 [gaim-migrate @ 1748]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1703
diff changeset
2829 NEW_BIT (NEW_TEXT_BIT);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2830
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2831 if (fonts) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2832 FontDetail *oldfont = fonts->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2833 if (!font->size)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2834 font->size = oldfont->size;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2835 if (!font->face)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2836 font->face = g_strdup (oldfont->face);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2837 if (!font->fore && oldfont->fore)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2838 font->fore = gdk_color_copy (oldfont->fore);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2839 if (!font->back && oldfont->back)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2840 font->back = gdk_color_copy (oldfont->back);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2841 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2842 if (!font->size)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2843 font->size = 3;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2844 if (!font->face)
2140
36d736a53d30 [gaim-migrate @ 2150]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2116
diff changeset
2845 font->face = g_strdup (DEFAULT_FONT_NAME);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2846 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2847
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2848 fonts = g_slist_prepend (fonts, font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2849 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2850 } else if (!g_strcasecmp (tag, "</FONT>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2851 FontDetail *font;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2852
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2853 if (fonts) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2854 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2855 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2856 font = fonts->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2857 fonts = g_slist_remove (fonts, font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2858 g_free (font->face);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2859 if (font->fore)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2860 gdk_color_free (font->fore);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2861 if (font->back)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2862 gdk_color_free (font->back);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2863 g_free (font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2864 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2865 intag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2866 tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2867 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2868 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2869 } else if (!g_strncasecmp (tag, "<BODY ", strlen ("<BODY "))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2870 gchar *t, *e, *color = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2871 GdkColor *tmp;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2872
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2873 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2874
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2875 if (!(options & GTK_IMHTML_NO_COLOURS)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2876 t = tag + strlen ("<BODY");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2877 do {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2878 gboolean quote = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2879 if (*t == '\0') break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2880 while (*t && !((*t == ' ') && !quote)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2881 if (*t == '\"')
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2882 quote = ! quote;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2883 t++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2884 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2885 while (*t && (*t == ' ')) t++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2886 } while (g_strncasecmp (t, "BGCOLOR=", strlen ("BGCOLOR=")));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2887
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2888 if (!g_strncasecmp (t, "BGCOLOR=", strlen ("BGCOLOR="))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2889 t += strlen ("BGCOLOR=");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2890 if ((*t == '\"') || (*t == '\'')) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2891 e = ++t;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2892 while (*e && (*e != *(t - 1))) e++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2893 if (*e != '\0') {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2894 *e = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2895 color = g_strdup (t);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2896 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2897 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2898 e = t;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2899 while (*e && !isspace ((gint) *e)) e++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2900 if (*e == '\0') e--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2901 *e = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2902 color = g_strdup (t);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2903 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2904
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2905 if (color != NULL) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2906 tmp = gtk_imhtml_get_color (color);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2907 g_free (color);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2908 if (tmp != NULL) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2909 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2910 bg = tmp;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2911 UPDATE_BG_COLORS;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2912 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2913 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2914 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2915 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2916 } else if (!g_strncasecmp (tag, "<A ", strlen ("<A "))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2917 gchar *t, *e;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2918
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2919 got_tag = TRUE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2920 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2921
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2922 if (url != NULL)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2923 g_free (url);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2924 url = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2925
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2926 t = tag + strlen ("<A");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2927 do {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2928 gboolean quote = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2929 if (*t == '\0') break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2930 while (*t && !((*t == ' ') && !quote)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2931 if (*t == '\"')
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2932 quote = ! quote;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2933 t++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2934 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2935 while (*t && (*t == ' ')) t++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2936 } while (g_strncasecmp (t, "HREF=", strlen ("HREF=")));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2937
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2938 if (!g_strncasecmp (t, "HREF=", strlen ("HREF="))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2939 t += strlen ("HREF=");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2940 if ((*t == '\"') || (*t == '\'')) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2941 e = ++t;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2942 while (*e && (*e != *(t - 1))) e++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2943 if (*e != '\0') {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2944 *e = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2945 url = g_strdup (t);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2946 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2947 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2948 e = t;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2949 while (*e && !isspace ((gint) *e)) e++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2950 if (*e == '\0') e--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2951 *e = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2952 url = g_strdup (t);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2953 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2954 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2955 } else if (!g_strcasecmp (tag, "</A>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2956 if (url != NULL) {
1524
05bb7cc45c1c [gaim-migrate @ 1534]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1519
diff changeset
2957 got_tag = TRUE;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2958 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2959 g_free (url);
1524
05bb7cc45c1c [gaim-migrate @ 1534]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1519
diff changeset
2960 url = NULL;
05bb7cc45c1c [gaim-migrate @ 1534]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1519
diff changeset
2961 } else {
05bb7cc45c1c [gaim-migrate @ 1534]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1519
diff changeset
2962 intag = FALSE;
05bb7cc45c1c [gaim-migrate @ 1534]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1519
diff changeset
2963 tpos = 0;
05bb7cc45c1c [gaim-migrate @ 1534]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1519
diff changeset
2964 continue;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2965 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2966 } else if (!g_strncasecmp (tag, "<IMG ", strlen ("<IMG "))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2967 gchar *t, *e, *src = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2968 gchar *copy = g_strdup (tag);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2969 gchar **xpm;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2970 GdkColor *clr = NULL;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2971 GtkIMHtmlBit *bit;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2972
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2973 intag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2974 tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2975
1453
fb1ccaf9323b [gaim-migrate @ 1463]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1449
diff changeset
2976 if (imhtml->img == NULL) {
fb1ccaf9323b [gaim-migrate @ 1463]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1449
diff changeset
2977 ws [wpos] = 0;
fb1ccaf9323b [gaim-migrate @ 1463]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1449
diff changeset
2978 strcat (ws, copy);
fb1ccaf9323b [gaim-migrate @ 1463]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1449
diff changeset
2979 wpos = strlen (ws);
fb1ccaf9323b [gaim-migrate @ 1463]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1449
diff changeset
2980 g_free (copy);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2981 continue;
1453
fb1ccaf9323b [gaim-migrate @ 1463]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1449
diff changeset
2982 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2983
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2984 t = tag + strlen ("<IMG");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2985 do {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2986 gboolean quote = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2987 if (*t == '\0') break;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2988 while (*t && !((*t == ' ') && !quote)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2989 if (*t == '\"')
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2990 quote = ! quote;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2991 t++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2992 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2993 while (*t && (*t == ' ')) t++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2994 } while (g_strncasecmp (t, "SRC=", strlen ("SRC=")));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2995
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2996 if (!g_strncasecmp (t, "SRC=", strlen ("SRC="))) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2997 t += strlen ("SRC=");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2998 if ((*t == '\"') || (*t == '\'')) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2999 e = ++t;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3000 while (*e && (*e != *(t - 1))) e++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3001 if (*e != '\0') {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3002 *e = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3003 src = g_strdup (t);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3004 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3005 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3006 e = t;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3007 while (*e && !isspace ((gint) *e)) e++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3008 if (*e == '\0') e--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3009 *e = '\0';
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3010 src = g_strdup (t);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3011 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3012 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3013
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3014 if (src == NULL) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3015 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3016 strcat (ws, copy);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3017 wpos = strlen (ws);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3018 g_free (copy);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3019 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3020 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3021
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3022 xpm = (* imhtml->img) (src);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3023 if (xpm == NULL) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3024 g_free (src);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3025 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3026 strcat (ws, copy);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3027 wpos = strlen (ws);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3028 g_free (copy);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3029 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3030 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3031
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3032 g_free (copy);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3033
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3034 if (!fonts || ((clr = ((FontDetail *)fonts->data)->back) == NULL))
1460
c63c0e2b00c1 [gaim-migrate @ 1470]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1456
diff changeset
3035 clr = (bg != NULL) ? bg : imhtml->default_bg_color;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3036
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3037 if (!GTK_WIDGET_REALIZED (imhtml))
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3038 gtk_widget_realize (GTK_WIDGET (imhtml));
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3039
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3040 bit = g_new0 (GtkIMHtmlBit, 1);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3041 bit->type = TYPE_IMG;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3042 bit->pm = gdk_pixmap_create_from_xpm_d (GTK_WIDGET (imhtml)->window,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3043 &bit->bm,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3044 clr,
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3045 xpm);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3046 if (url)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3047 bit->url = g_strdup (url);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3048
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3049 NEW_BIT (bit);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3050
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3051 g_free (src);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3052
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3053 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3054 } else if (!g_strcasecmp (tag, "<P>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3055 !g_strcasecmp (tag, "</P>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3056 !g_strncasecmp (tag, "<P ", strlen ("<P ")) ||
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
3057 !g_strcasecmp (tag, "<H3>") ||
1473
213ef409ce41 [gaim-migrate @ 1483]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1472
diff changeset
3058 !g_strncasecmp (tag, "<H3 ", strlen ("<H3 ")) ||
1447
1e6df96992e1 [gaim-migrate @ 1457]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1428
diff changeset
3059 !g_strcasecmp (tag, "</H3>") ||
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3060 !g_strcasecmp (tag, "<HTML>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3061 !g_strcasecmp (tag, "</HTML>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3062 !g_strcasecmp (tag, "<BODY>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3063 !g_strcasecmp (tag, "</BODY>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3064 !g_strcasecmp (tag, "<FONT>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3065 !g_strcasecmp (tag, "<HEAD>") ||
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3066 !g_strcasecmp (tag, "</HEAD>")) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3067 intag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3068 tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3069 continue;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3070 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3071
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3072 if (!got_tag) {
1463
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3073 char *d;
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3074 tag [tpos] = 0;
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3075 d = tag;
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3076 while (*d) {
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3077 if ((smilelen = gtk_imhtml_is_smiley (imhtml, d)) != 0) {
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3078 ws [wpos] = 0;
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3079 wpos = 0;
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3080 NEW_BIT (NEW_TEXT_BIT);
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3081 g_snprintf (ws, smilelen + 1, "%s", d);
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3082 NEW_BIT (NEW_SMILEY_BIT);
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3083 d += smilelen;
1472
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3084 } else if (*d == '&') {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3085 gchar replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3086 gint length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3087 if (is_amp_escape (d, &replace, &length)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3088 ws [wpos++] = replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3089 d += length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3090 } else {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3091 ws [wpos++] = *d++;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3092 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3093 } else if (*d == '\n') {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3094 if (!(options & GTK_IMHTML_NO_NEWLINE)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3095 ws [wpos] = 0;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3096 wpos = 0;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3097 NEW_BIT (NEW_TEXT_BIT);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3098 NEW_BIT (NEW_BR_BIT);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3099 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3100 d++;
1463
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3101 } else {
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3102 ws [wpos++] = *d++;
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3103 }
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3104 }
dd25c559b99d [gaim-migrate @ 1473]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1462
diff changeset
3105 tpos = 0;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3106 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3107 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3108 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3109 intag = FALSE;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3110 tpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3111 } else if (*c == '&' && !intag) {
1472
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3112 gchar replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3113 gint length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3114 if (is_amp_escape (c, &replace, &length)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3115 ws [wpos++] = replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3116 c += length;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3117 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3118 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3119 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3120 } else if (intag) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3121 if (*c == '\"')
1703
16cf54e403dc [gaim-migrate @ 1713]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1691
diff changeset
3122 tagquote++;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3123 tag [tpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3124 } else if (incomment) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3125 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3126 } else if (((smilelen = gtk_imhtml_is_smiley (imhtml, c)) != 0)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3127 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3128 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3129 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3130 g_snprintf (ws, smilelen + 1, "%s", c);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3131 NEW_BIT (NEW_SMILEY_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3132 c += smilelen;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3133 } else if (*c == '\n') {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3134 if (!(options & GTK_IMHTML_NO_NEWLINE)) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3135 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3136 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3137 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3138 NEW_BIT (NEW_BR_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3139 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3140 c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3141 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3142 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3143 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3144 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3145
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3146 if (intag) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3147 tag [tpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3148 c = tag;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3149 while (*c) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3150 if ((smilelen = gtk_imhtml_is_smiley (imhtml, c)) != 0) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3151 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3152 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3153 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3154 g_snprintf (ws, smilelen + 1, "%s", c);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3155 NEW_BIT (NEW_SMILEY_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3156 c += smilelen;
1472
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3157 } else if (*c == '&') {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3158 gchar replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3159 gint length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3160 if (is_amp_escape (c, &replace, &length)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3161 ws [wpos++] = replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3162 c += length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3163 } else {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3164 ws [wpos++] = *c++;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3165 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3166 } else if (*c == '\n') {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3167 if (!(options & GTK_IMHTML_NO_NEWLINE)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3168 ws [wpos] = 0;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3169 wpos = 0;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3170 NEW_BIT (NEW_TEXT_BIT);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3171 NEW_BIT (NEW_BR_BIT);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3172 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3173 c++;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3174 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3175 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3176 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3177 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3178 } else if (incomment) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3179 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3180 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3181 strcat (tag, ws);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3182 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3183 c = tag;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3184 while (*c) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3185 if ((smilelen = gtk_imhtml_is_smiley (imhtml, c)) != 0) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3186 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3187 wpos = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3188 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3189 g_snprintf (ws, smilelen + 1, "%s", c);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3190 NEW_BIT (NEW_SMILEY_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3191 c += smilelen;
1472
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3192 } else if (*c == '&') {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3193 gchar replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3194 gint length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3195 if (is_amp_escape (c, &replace, &length)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3196 ws [wpos++] = replace;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3197 c += length;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3198 } else {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3199 ws [wpos++] = *c++;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3200 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3201 } else if (*c == '\n') {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3202 if (!(options & GTK_IMHTML_NO_NEWLINE)) {
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3203 ws [wpos] = 0;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3204 wpos = 0;
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3205 NEW_BIT (NEW_TEXT_BIT);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3206 NEW_BIT (NEW_BR_BIT);
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3207 }
ce83d12b7df9 [gaim-migrate @ 1482]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1463
diff changeset
3208 c++;
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3209 } else {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3210 ws [wpos++] = *c++;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3211 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3212 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3213 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3214
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3215 ws [wpos] = 0;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3216 NEW_BIT (NEW_TEXT_BIT);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3217
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3218 while (newbits) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3219 GtkIMHtmlBit *bit = newbits->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3220 imhtml->bits = g_list_append (imhtml->bits, bit);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3221 newbits = g_list_remove (newbits, bit);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3222 gtk_imhtml_draw_bit (imhtml, bit);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3223 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3224
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3225 GTK_LAYOUT (imhtml)->height = imhtml->y;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3226 GTK_LAYOUT (imhtml)->vadjustment->upper = imhtml->y;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3227 gtk_signal_emit_by_name (GTK_OBJECT (GTK_LAYOUT (imhtml)->vadjustment), "changed");
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3228
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3229 gtk_widget_set_usize (GTK_WIDGET (imhtml), -1, imhtml->y);
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3230
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3231 if (!(options & GTK_IMHTML_NO_SCROLL) &&
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3232 scrolldown &&
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3233 (imhtml->y >= MAX (1,
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3234 (GTK_WIDGET (imhtml)->allocation.height -
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3235 (GTK_WIDGET (imhtml)->style->klass->ythickness + BORDER_SIZE) * 2))))
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3236 gtk_adjustment_set_value (vadj, imhtml->y -
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3237 MAX (1, (GTK_WIDGET (imhtml)->allocation.height -
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3238 (GTK_WIDGET (imhtml)->style->klass->ythickness +
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3239 BORDER_SIZE) * 2)));
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3240
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3241 if (url) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3242 g_free (url);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3243 if (retval)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3244 retval = g_string_append (retval, "</A>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3245 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3246 if (bg)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3247 gdk_color_free (bg);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3248 while (fonts) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3249 FontDetail *font = fonts->data;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3250 fonts = g_slist_remove (fonts, font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3251 g_free (font->face);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3252 if (font->fore)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3253 gdk_color_free (font->fore);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3254 if (font->back)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3255 gdk_color_free (font->back);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3256 g_free (font);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3257 if (retval)
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3258 retval = g_string_append (retval, "</FONT>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3259 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3260 if (retval) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3261 while (bold) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3262 retval = g_string_append (retval, "</B>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3263 bold--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3264 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3265 while (italics) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3266 retval = g_string_append (retval, "</I>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3267 italics--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3268 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3269 while (underline) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3270 retval = g_string_append (retval, "</U>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3271 underline--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3272 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3273 while (strike) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3274 retval = g_string_append (retval, "</S>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3275 strike--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3276 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3277 while (sub) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3278 retval = g_string_append (retval, "</SUB>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3279 sub--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3280 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3281 while (sup) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3282 retval = g_string_append (retval, "</SUP>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3283 sup--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3284 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3285 while (title) {
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3286 retval = g_string_append (retval, "</TITLE>");
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3287 title--;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3288 }
1691
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
3289 while (pre) {
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
3290 retval = g_string_append (retval, "</PRE>");
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
3291 pre--;
c8bd41036372 [gaim-migrate @ 1701]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1647
diff changeset
3292 }
1428
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3293 }
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3294 g_free (ws);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3295 g_free (tag);
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3296
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3297 return retval;
c14bab2b74bb [gaim-migrate @ 1438]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3298 }
1780
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3299
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3300 void
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3301 gtk_imhtml_clear (GtkIMHtml *imhtml)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3302 {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3303 g_return_if_fail (imhtml != NULL);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3304 g_return_if_fail (GTK_IS_IMHTML (imhtml));
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3305
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3306 while (imhtml->bits) {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3307 GtkIMHtmlBit *bit = imhtml->bits->data;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3308 imhtml->bits = g_list_remove (imhtml->bits, bit);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3309 if (bit->text)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3310 g_free (bit->text);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3311 if (bit->font)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3312 gdk_font_unref (bit->font);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3313 if (bit->fore)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3314 gdk_color_free (bit->fore);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3315 if (bit->back)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3316 gdk_color_free (bit->back);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3317 if (bit->bg)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3318 gdk_color_free (bit->bg);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3319 if (bit->url)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3320 g_free (bit->url);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3321 if (bit->pm)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3322 gdk_pixmap_unref (bit->pm);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3323 if (bit->bm)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3324 gdk_bitmap_unref (bit->bm);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3325 while (bit->chunks) {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3326 struct line_info *li = bit->chunks->data;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3327 if (li->text)
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3328 g_free (li->text);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3329 bit->chunks = g_list_remove (bit->chunks, li);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3330 g_free (li);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3331 }
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3332 g_free (bit);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3333 }
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3334
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3335 while (imhtml->urls) {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3336 g_free (imhtml->urls->data);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3337 imhtml->urls = g_list_remove (imhtml->urls, imhtml->urls->data);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3338 }
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3339
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3340 if (imhtml->selected_text) {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3341 g_string_free (imhtml->selected_text, TRUE);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3342 imhtml->selected_text = g_string_new ("");
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3343 }
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3344
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3345 if (imhtml->tip_timer) {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3346 gtk_timeout_remove (imhtml->tip_timer);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3347 imhtml->tip_timer = 0;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3348 }
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3349 if (imhtml->tip_window) {
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3350 gtk_widget_destroy (imhtml->tip_window);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3351 imhtml->tip_window = NULL;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3352 }
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3353 imhtml->tip_bit = NULL;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3354
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3355 gdk_window_set_cursor (GTK_LAYOUT (imhtml)->bin_window, imhtml->arrow_cursor);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3356
1998
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3357 imhtml->x = 0;
9a2ea9cce60e [gaim-migrate @ 2008]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1997
diff changeset
3358 imhtml->y = TOP_BORDER;
1780
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3359 imhtml->llheight = 0;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3360 imhtml->llascent = 0;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3361 imhtml->line = NULL;
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3362
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3363 if (GTK_WIDGET_REALIZED (GTK_WIDGET (imhtml)))
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3364 gdk_window_clear (GTK_LAYOUT (imhtml)->bin_window);
431333222954 [gaim-migrate @ 1790]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 1738
diff changeset
3365 }

mercurial