pidgin/gtkdnd-hints.c

Tue, 07 May 2013 05:04:46 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Tue, 07 May 2013 05:04:46 -0400
changeset 33923
0fcc5635daba
parent 33721
4c1109126f5f
child 35454
cf2a24d01503
permissions
-rw-r--r--

Rewrite debug window filter in JS.

Note, this does cause a couple regressions, but they are probably not
that big a deal. First, the JS regular expression syntax is slightly
different. Second, the JS regex API lacks a way to reliably determine
the location of matched groups, so we can't highlight just the groups
and must highlight the entire expression.

I suspect that none of our users ever had to use any fancy regex in the
debug window, and that most of our developers didn't even know it could
be done. So I doubt these regressions will cause much pain.

10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
1 /*
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
2 * @file gtkdnd-hints.c GTK+ Drag-and-Drop arrow hints
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 15946
diff changeset
3 * @ingroup pidgin
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
6 /* pidgin
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
10 * source distribution.
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
11 *
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2, or(at your option)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
15 * any later version.
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
16 *
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
21 *
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 17176
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301, USA.
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
25 */
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
26
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
27 #include "gtkdnd-hints.h"
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
28
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
29 #include <gdk/gdk.h>
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
30 #include <gdk-pixbuf/gdk-pixbuf.h>
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
31
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
32 #ifdef _WIN32
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
33 #include "win32dep.h"
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
34 #endif
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
35
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
36 #include "gtk3compat.h"
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
37
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
38 typedef struct
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
39 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
40 GtkWidget *widget;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
41 gchar *filename;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
42 gint ox;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
43 gint oy;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
44
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
45 } HintWindowInfo;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
46
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
47 /**
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
48 * Info about each hint widget. See DndHintWindowId enum.
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
49 */
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 20147
diff changeset
50 static HintWindowInfo hint_windows[] = {
16274
7d61ad2c489a Some icon improvements from hbons
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
51 { NULL, "arrow-up.xpm", -13/2, 0 },
7d61ad2c489a Some icon improvements from hbons
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
52 { NULL, "arrow-down.xpm", -13/2, -16 },
7d61ad2c489a Some icon improvements from hbons
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
53 { NULL, "arrow-left.xpm", 0, -13/2 },
7d61ad2c489a Some icon improvements from hbons
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
54 { NULL, "arrow-right.xpm", -16, -13/2 },
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
55 { NULL, NULL, 0, 0 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
56 };
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
57
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
58 #if GTK_CHECK_VERSION(3,0,0)
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
59
33135
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
60 static void
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
61 dnd_hints_realized_cb(GtkWidget *window, GtkWidget *pix)
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
62 {
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
63 GdkPixbuf *pixbuf;
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
64 cairo_surface_t *surface;
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
65 cairo_region_t *region;
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
66 cairo_t *cr;
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
67
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
68 pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(pix));
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
69
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
70 surface = cairo_image_surface_create(CAIRO_FORMAT_A1,
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
71 gdk_pixbuf_get_width(pixbuf),
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
72 gdk_pixbuf_get_height(pixbuf));
33158
ad941796372e Remove some added trailing spaces.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33135
diff changeset
73
33135
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
74 cr = cairo_create(surface);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
75 gdk_cairo_set_source_pixbuf(cr, pixbuf, 0, 0);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
76 cairo_paint(cr);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
77 cairo_destroy(cr);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
78
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
79 region = gdk_cairo_region_create_from_surface(surface);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
80 gtk_widget_shape_combine_region(window, region);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
81 cairo_region_destroy(region);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
82
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
83 cairo_surface_destroy(surface);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
84 }
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
85
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
86 static GtkWidget *
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
87 dnd_hints_init_window(const gchar *fname)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
88 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
89 GdkPixbuf *pixbuf;
33135
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
90 GtkWidget *pix;
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
91 GtkWidget *win;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
92
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
93 pixbuf = gdk_pixbuf_new_from_file(fname, NULL);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
94 g_return_val_if_fail(pixbuf, NULL);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
95
32919
d6b32e557879 Render the DND hint windows using the new window's colourmap instead
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25888
diff changeset
96 win = gtk_window_new(GTK_WINDOW_POPUP);
33135
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
97 pix = gtk_image_new_from_pixbuf(pixbuf);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
98 gtk_container_add(GTK_CONTAINER(win), pix);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
99 gtk_widget_show_all(pix);
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
100
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
101 g_object_unref(G_OBJECT(pixbuf));
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
102
33135
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
103 g_signal_connect(G_OBJECT(win), "realize",
b6978ea2cce0 Fix DND hints on GTK+3.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33133
diff changeset
104 G_CALLBACK(dnd_hints_realized_cb), pix);
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
105
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
106 return win;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
107 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
108
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
109 #else
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
110
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
111 static GtkWidget *
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
112 dnd_hints_init_window(const gchar *fname)
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
113 {
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
114 GdkPixbuf *pixbuf;
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
115 GdkPixmap *pixmap;
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
116 GdkBitmap *bitmap;
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
117 GtkWidget *pix;
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
118 GtkWidget *win;
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
119 GdkColormap *colormap;
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
120
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
121 pixbuf = gdk_pixbuf_new_from_file(fname, NULL);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
122 g_return_val_if_fail(pixbuf, NULL);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
123
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
124 win = gtk_window_new(GTK_WINDOW_POPUP);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
125 colormap = gtk_widget_get_colormap(win);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
126 gdk_pixbuf_render_pixmap_and_mask_for_colormap(pixbuf, colormap,
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
127 &pixmap, &bitmap, 128);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
128 g_object_unref(G_OBJECT(pixbuf));
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
129
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
130 pix = gtk_image_new_from_pixmap(pixmap, bitmap);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
131 gtk_container_add(GTK_CONTAINER(win), pix);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
132 gtk_widget_shape_combine_mask(win, bitmap, 0, 0);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
133
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
134 g_object_unref(G_OBJECT(pixmap));
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
135 g_object_unref(G_OBJECT(bitmap));
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
136
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
137 gtk_widget_show_all(pix);
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
138
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
139 return win;
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
140 }
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
141
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
142 #endif
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33158
diff changeset
143
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
144 static void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
145 get_widget_coords(GtkWidget *w, gint *x1, gint *y1, gint *x2, gint *y2)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
146 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
147 gint ox, oy, width, height;
33133
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
148 GtkWidget *parent = gtk_widget_get_parent(w);
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
149
33133
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
150 if (parent && gtk_widget_get_window(parent) == gtk_widget_get_window(w))
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
151 {
33133
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
152 GtkAllocation allocation;
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
153
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
154 gtk_widget_get_allocation(w, &allocation);
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
155 get_widget_coords(parent, &ox, &oy, NULL, NULL);
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
156 height = allocation.height;
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
157 width = allocation.width;
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
158 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
159 else
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
160 {
33133
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
161 GdkWindow *win = gtk_widget_get_window(w);
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
162 gdk_window_get_origin(win, &ox, &oy);
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
163 width = gdk_window_get_width(win);
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
164 height = gdk_window_get_height(win);
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
165 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
166
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
167 if (x1) *x1 = ox;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
168 if (y1) *y1 = oy;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
169 if (x2) *x2 = ox + width;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
170 if (y2) *y2 = oy + height;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
171 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
172
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
173 static void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
174 dnd_hints_init(void)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
175 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
176 static gboolean done = FALSE;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
177 gint i;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
178
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
179 if (done)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
180 return;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
181
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
182 done = TRUE;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
183
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
184 for (i = 0; hint_windows[i].filename != NULL; i++) {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
185 gchar *fname;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
186
15946
d40e8847e825 More s/gaim/pidgin/ and s/gaim/purple/ and make the RPM spec file work a bit
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
187 fname = g_build_filename(DATADIR, "pixmaps", "pidgin",
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
188 hint_windows[i].filename, NULL);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
189
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
190 hint_windows[i].widget = dnd_hints_init_window(fname);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
191
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
192 g_free(fname);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
193 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
194 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
195
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
196 void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
197 dnd_hints_hide_all(void)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
198 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
199 gint i;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
200
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
201 for (i = 0; hint_windows[i].filename != NULL; i++)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
202 dnd_hints_hide(i);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
203 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
204
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 20147
diff changeset
205 void
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
206 dnd_hints_hide(DndHintWindowId i)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
207 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
208 GtkWidget *w = hint_windows[i].widget;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
209
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
210 if (w && GTK_IS_WIDGET(w))
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
211 gtk_widget_hide(w);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
212 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
213
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 20147
diff changeset
214 void
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
215 dnd_hints_show(DndHintWindowId id, gint x, gint y)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
216 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
217 GtkWidget *w;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
218
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
219 dnd_hints_init();
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
220
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
221 w = hint_windows[id].widget;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
222
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
223 if (w && GTK_IS_WIDGET(w))
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
224 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
225 gtk_window_move(GTK_WINDOW(w), hint_windows[id].ox + x,
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
226 hint_windows[id].oy + y);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
227 gtk_widget_show(w);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
228 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
229 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
230
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 20147
diff changeset
231 void
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
232 dnd_hints_show_relative(DndHintWindowId id, GtkWidget *widget,
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
233 DndHintPosition horiz, DndHintPosition vert)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
234 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
235 gint x1, x2, y1, y2;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
236 gint x = 0, y = 0;
33133
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
237 GtkAllocation allocation;
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
238
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
239 gtk_widget_get_allocation(widget, &allocation);
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
240
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
241 get_widget_coords(widget, &x1, &y1, &x2, &y2);
33133
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
242 x1 += allocation.x; x2 += allocation.x;
9a31f084f259 Fix some merge errors.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33132
diff changeset
243 y1 += allocation.y; y2 += allocation.y;
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
244
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
245 switch (horiz)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
246 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
247 case HINT_POSITION_RIGHT: x = x2; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
248 case HINT_POSITION_LEFT: x = x1; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
249 case HINT_POSITION_CENTER: x = (x1 + x2) / 2; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
250 default:
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
251 /* should not happen */
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
252 g_warning("Invalid parameter to dnd_hints_show_relative");
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
253 break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
254 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
255
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
256 switch (vert)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
257 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
258 case HINT_POSITION_TOP: y = y1; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
259 case HINT_POSITION_BOTTOM: y = y2; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
260 case HINT_POSITION_CENTER: y = (y1 + y2) / 2; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
261 default:
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
262 /* should not happen */
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
263 g_warning("Invalid parameter to dnd_hints_show_relative");
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
264 break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
265 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
266
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
267 dnd_hints_show(id, x, y);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
268 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
269

mercurial