pidgin/gtkdnd-hints.c

Fri, 14 Sep 2007 17:55:05 +0000

author
Daniel Atallah <datallah@pidgin.im>
date
Fri, 14 Sep 2007 17:55:05 +0000
changeset 20073
dbea205441ea
parent 19859
71d37b57eff2
child 20147
66f05a854eee
permissions
-rw-r--r--

Fix proxy settings to be loaded correctly when libpurple is initialized. This was broken because it relied on the prefs being loaded after proxy initialization so that the pref callbacks would be triggered and I changed the prefs loading to happen right at the beginning to fix other issues. Fixes #3092.

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
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
4 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
5 * pidgin
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
6 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
7 * 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
8 * to list here. Please refer to the COPYRIGHT file distributed with this
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
9 * source distribution.
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
10 *
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
11 * This program is free software; you can redistribute it and/or modify
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
12 * 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
13 * the Free Software Foundation; either version 2, or(at your option)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
14 * any later version.
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
15 *
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
16 * This program is distributed in the hope that it will be useful,
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
19 * GNU General Public License for more details.
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
20 *
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
21 * You should have received a copy of the GNU General Public License
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
22 * 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
23 * 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
24 */
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 #include "gtkdnd-hints.h"
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
27
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
28 #include <gtk/gtk.h>
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
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
36 typedef struct
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
37 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
38 GtkWidget *widget;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
39 gchar *filename;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
40 gint ox;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
41 gint oy;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
42
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
43 } HintWindowInfo;
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 /**
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
46 * Info about each hint widget. See DndHintWindowId enum.
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
47 */
10871
c0282a4f2250 [gaim-migrate @ 12558]
Mark Doliner <markdoliner@pidgin.im>
parents: 10298
diff changeset
48 static HintWindowInfo hint_windows[] = {
16274
7d61ad2c489a Some icon improvements from hbons
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
49 { NULL, "arrow-up.xpm", -13/2, 0 },
7d61ad2c489a Some icon improvements from hbons
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
50 { NULL, "arrow-down.xpm", -13/2, -16 },
7d61ad2c489a Some icon improvements from hbons
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
51 { NULL, "arrow-left.xpm", 0, -13/2 },
7d61ad2c489a Some icon improvements from hbons
Sean Egan <seanegan@pidgin.im>
parents: 16254
diff changeset
52 { NULL, "arrow-right.xpm", -16, -13/2 },
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
53 { NULL, NULL, 0, 0 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
54 };
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
55
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
56 static GtkWidget *
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
57 dnd_hints_init_window(const gchar *fname)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
58 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
59 GdkPixbuf *pixbuf;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
60 GdkPixmap *pixmap;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
61 GdkBitmap *bitmap;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
62 GtkWidget *pix;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
63 GtkWidget *win;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
64
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
65 pixbuf = gdk_pixbuf_new_from_file(fname, NULL);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
66 g_return_val_if_fail(pixbuf, NULL);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
67
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
68 gdk_pixbuf_render_pixmap_and_mask(pixbuf, &pixmap, &bitmap, 128);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
69 g_object_unref(G_OBJECT(pixbuf));
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
70
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
71 gtk_widget_push_colormap(gdk_rgb_get_colormap());
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
72 win = gtk_window_new(GTK_WINDOW_POPUP);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
73 pix = gtk_image_new_from_pixmap(pixmap, bitmap);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
74 gtk_container_add(GTK_CONTAINER(win), pix);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
75 gtk_widget_shape_combine_mask(win, bitmap, 0, 0);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
76 gtk_widget_pop_colormap();
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
77
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
78 g_object_unref(G_OBJECT(pixmap));
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
79 g_object_unref(G_OBJECT(bitmap));
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
80
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
81 gtk_widget_show_all(pix);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
82
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
83 return win;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
84 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
85
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
86 static void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
87 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
88 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
89 gint ox, oy, width, height;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
90
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
91 if (w->parent && w->parent->window == w->window)
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 get_widget_coords(w->parent, &ox, &oy, NULL, NULL);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
94 height = w->allocation.height;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
95 width = w->allocation.width;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
96 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
97 else
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
98 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
99 gdk_window_get_origin(w->window, &ox, &oy);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
100 gdk_drawable_get_size(w->window, &width, &height);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
101 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
102
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
103 if (x1) *x1 = ox;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
104 if (y1) *y1 = oy;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
105 if (x2) *x2 = ox + width;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
106 if (y2) *y2 = oy + height;
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
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
109 static void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
110 dnd_hints_init(void)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
111 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
112 static gboolean done = FALSE;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
113 gint i;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
114
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
115 if (done)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
116 return;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
117
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
118 done = TRUE;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
119
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
120 for (i = 0; hint_windows[i].filename != NULL; i++) {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
121 gchar *fname;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
122
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
123 fname = g_build_filename(DATADIR, "pixmaps", "pidgin",
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
124 hint_windows[i].filename, NULL);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
125
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
126 hint_windows[i].widget = dnd_hints_init_window(fname);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
127
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
128 g_free(fname);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
129 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
130 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
131
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
132 void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
133 dnd_hints_hide_all(void)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
134 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
135 gint i;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
136
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
137 for (i = 0; hint_windows[i].filename != NULL; i++)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
138 dnd_hints_hide(i);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
139 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
140
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
141 void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
142 dnd_hints_hide(DndHintWindowId i)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
143 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
144 GtkWidget *w = hint_windows[i].widget;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
145
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
146 if (w && GTK_IS_WIDGET(w))
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
147 gtk_widget_hide(w);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
148 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
149
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
150 void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
151 dnd_hints_show(DndHintWindowId id, gint x, gint y)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
152 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
153 GtkWidget *w;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
154
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
155 dnd_hints_init();
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
156
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
157 w = hint_windows[id].widget;
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 if (w && GTK_IS_WIDGET(w))
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
160 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
161 gtk_window_move(GTK_WINDOW(w), hint_windows[id].ox + x,
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
162 hint_windows[id].oy + y);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
163 gtk_widget_show(w);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
164 }
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 void
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
168 dnd_hints_show_relative(DndHintWindowId id, GtkWidget *widget,
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
169 DndHintPosition horiz, DndHintPosition vert)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
170 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
171 gint x1, x2, y1, y2;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
172 gint x = 0, y = 0;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
173
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
174 get_widget_coords(widget, &x1, &y1, &x2, &y2);
17176
39ea409eb27d Fix background color issues in the coversation tabs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16274
diff changeset
175 x1 += widget->allocation.x; x2 += widget->allocation.x;
39ea409eb27d Fix background color issues in the coversation tabs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 16274
diff changeset
176 y1 += widget->allocation.y; y2 += widget->allocation.y;
10298
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
177
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
178 switch (horiz)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
179 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
180 case HINT_POSITION_RIGHT: x = x2; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
181 case HINT_POSITION_LEFT: x = x1; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
182 case HINT_POSITION_CENTER: x = (x1 + x2) / 2; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
183 default:
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
184 /* should not happen */
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
185 g_warning("Invalid parameter to dnd_hints_show_relative");
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
186 break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
187 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
188
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
189 switch (vert)
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
190 {
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
191 case HINT_POSITION_TOP: y = y1; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
192 case HINT_POSITION_BOTTOM: y = y2; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
193 case HINT_POSITION_CENTER: y = (y1 + y2) / 2; break;
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
194 default:
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
195 /* should not happen */
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
196 g_warning("Invalid parameter to dnd_hints_show_relative");
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
197 break;
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
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
200 dnd_hints_show(id, x, y);
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
201 }
25a4bc9cbd34 [gaim-migrate @ 11481]
Luke Schierer <lschiere@pidgin.im>
parents:
diff changeset
202

mercurial