| 117 const char *name; |
117 const char *name; |
| 118 GtkWidget *tipwindow; |
118 GtkWidget *tipwindow; |
| 119 |
119 |
| 120 tipwindow = gtk_window_new(GTK_WINDOW_POPUP); |
120 tipwindow = gtk_window_new(GTK_WINDOW_POPUP); |
| 121 name = gtk_window_get_title(GTK_WINDOW(pidgin_tooltip.widget)); |
121 name = gtk_window_get_title(GTK_WINDOW(pidgin_tooltip.widget)); |
| 122 #if GTK_CHECK_VERSION(2,10,0) |
|
| 123 gtk_window_set_type_hint(GTK_WINDOW(tipwindow), GDK_WINDOW_TYPE_HINT_TOOLTIP); |
122 gtk_window_set_type_hint(GTK_WINDOW(tipwindow), GDK_WINDOW_TYPE_HINT_TOOLTIP); |
| 124 #endif |
|
| 125 gtk_widget_set_app_paintable(tipwindow, TRUE); |
123 gtk_widget_set_app_paintable(tipwindow, TRUE); |
| 126 gtk_window_set_title(GTK_WINDOW(tipwindow), name ? name : _("Pidgin Tooltip")); |
124 gtk_window_set_title(GTK_WINDOW(tipwindow), name ? name : _("Pidgin Tooltip")); |
| 127 gtk_window_set_resizable(GTK_WINDOW(tipwindow), FALSE); |
125 gtk_window_set_resizable(GTK_WINDOW(tipwindow), FALSE); |
| 128 gtk_widget_set_name(tipwindow, "gtk-tooltips"); |
126 gtk_widget_set_name(tipwindow, "gtk-tooltips"); |
| 129 gtk_widget_ensure_style(tipwindow); |
127 gtk_widget_ensure_style(tipwindow); |
| 134 static void |
132 static void |
| 135 setup_tooltip_window_position(gpointer data, int w, int h) |
133 setup_tooltip_window_position(gpointer data, int w, int h) |
| 136 { |
134 { |
| 137 int sig; |
135 int sig; |
| 138 int scr_w, scr_h, x, y, dy; |
136 int scr_w, scr_h, x, y, dy; |
| 139 #if GTK_CHECK_VERSION(2,2,0) |
|
| 140 int mon_num; |
137 int mon_num; |
| 141 GdkScreen *screen = NULL; |
138 GdkScreen *screen = NULL; |
| 142 #endif |
|
| 143 GdkRectangle mon_size; |
139 GdkRectangle mon_size; |
| 144 GtkWidget *tipwindow = pidgin_tooltip.tipwindow; |
140 GtkWidget *tipwindow = pidgin_tooltip.tipwindow; |
| 145 |
141 |
| 146 #if GTK_CHECK_VERSION(2,2,0) |
|
| 147 gdk_display_get_pointer(gdk_display_get_default(), &screen, &x, &y, NULL); |
142 gdk_display_get_pointer(gdk_display_get_default(), &screen, &x, &y, NULL); |
| 148 mon_num = gdk_screen_get_monitor_at_point(screen, x, y); |
143 mon_num = gdk_screen_get_monitor_at_point(screen, x, y); |
| 149 gdk_screen_get_monitor_geometry(screen, mon_num, &mon_size); |
144 gdk_screen_get_monitor_geometry(screen, mon_num, &mon_size); |
| 150 |
145 |
| 151 scr_w = mon_size.width + mon_size.x; |
146 scr_w = mon_size.width + mon_size.x; |
| 152 scr_h = mon_size.height + mon_size.y; |
147 scr_h = mon_size.height + mon_size.y; |
| 153 #else |
148 |
| 154 scr_w = gdk_screen_width(); |
|
| 155 scr_h = gdk_screen_height(); |
|
| 156 gdk_window_get_pointer(NULL, &x, &y, NULL); |
|
| 157 mon_size.x = 0; |
|
| 158 mon_size.y = 0; |
|
| 159 #endif |
|
| 160 |
|
| 161 #if GTK_CHECK_VERSION(2,4,0) |
|
| 162 dy = gdk_display_get_default_cursor_size(gdk_display_get_default()) / 2; |
149 dy = gdk_display_get_default_cursor_size(gdk_display_get_default()) / 2; |
| 163 #else |
150 |
| 164 dy = 0; |
|
| 165 #endif |
|
| 166 |
|
| 167 #if GTK_CHECK_VERSION(2,2,0) |
|
| 168 if (w > mon_size.width) |
151 if (w > mon_size.width) |
| 169 w = mon_size.width - 10; |
152 w = mon_size.width - 10; |
| 170 |
153 |
| 171 if (h > mon_size.height) |
154 if (h > mon_size.height) |
| 172 h = mon_size.height - 10; |
155 h = mon_size.height - 10; |
| 173 #endif |
156 |
| 174 x -= ((w >> 1) + 4); |
157 x -= ((w >> 1) + 4); |
| 175 |
158 |
| 176 if ((y + h + 4) > scr_h) |
159 if ((y + h + 4) > scr_h) |
| 177 y = y - h - dy - 5; |
160 y = y - h - dy - 5; |
| 178 else |
161 else |