comparison src/gui_beval.c @ 14786:11978f68a8c3 v8.1.0405

patch 8.1.0405: too many #ifdefs for GTK commit https://github.com/vim/vim/commit/664323e7c82c35eabb9056efca0df6cc8d6cfd60 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Sep 18 22:30:07 2018 +0200 patch 8.1.0405: too many #ifdefs for GTK Problem: Too many #ifdefs for GTK. Solution: Define macros instead of using #ifdef. (Ken Takata, closes https://github.com/vim/vim/issues/3436)
author Christian Brabandt <cb@256bit.org>
date Tue, 18 Sep 2018 22:45:05 +0200
parents 82e7ce311065
children 2ba09a55bee6
comparison
equal deleted inserted replaced
14785:7f365a30fe7c 14786:11978f68a8c3
242 * Connect to the generic "event" signal instead of the individual 242 * Connect to the generic "event" signal instead of the individual
243 * signals for each event type, because the former is emitted earlier. 243 * signals for each event type, because the former is emitted earlier.
244 * This allows us to catch events independently of the signal handlers 244 * This allows us to catch events independently of the signal handlers
245 * in gui_gtk_x11.c. 245 * in gui_gtk_x11.c.
246 */ 246 */
247 # if GTK_CHECK_VERSION(3,0,0)
248 g_signal_connect(G_OBJECT(target), "event", 247 g_signal_connect(G_OBJECT(target), "event",
249 G_CALLBACK(target_event_cb), 248 G_CALLBACK(target_event_cb),
250 beval); 249 beval);
251 # else
252 /* Should use GTK_OBJECT() here, but that causes a lint warning... */
253 gtk_signal_connect((GtkObject*)(target), "event",
254 GTK_SIGNAL_FUNC(target_event_cb),
255 beval);
256 # endif
257 /* 250 /*
258 * Nasty: Key press events go to the main window thus the drawing area 251 * Nasty: Key press events go to the main window thus the drawing area
259 * will never see them. This means we have to connect to the main window 252 * will never see them. This means we have to connect to the main window
260 * as well in order to catch those events. 253 * as well in order to catch those events.
261 */ 254 */
262 if (gtk_socket_id == 0 && gui.mainwin != NULL 255 if (gtk_socket_id == 0 && gui.mainwin != NULL
263 && gtk_widget_is_ancestor(target, gui.mainwin)) 256 && gtk_widget_is_ancestor(target, gui.mainwin))
264 { 257 {
265 # if GTK_CHECK_VERSION(3,0,0)
266 g_signal_connect(G_OBJECT(gui.mainwin), "event", 258 g_signal_connect(G_OBJECT(gui.mainwin), "event",
267 G_CALLBACK(mainwin_event_cb), 259 G_CALLBACK(mainwin_event_cb),
268 beval); 260 beval);
269 # else
270 gtk_signal_connect((GtkObject*)(gui.mainwin), "event",
271 GTK_SIGNAL_FUNC(mainwin_event_cb),
272 beval);
273 # endif
274 } 261 }
275 } 262 }
276 263
277 static void 264 static void
278 removeEventHandler(BalloonEval *beval) 265 removeEventHandler(BalloonEval *beval)
279 { 266 {
280 /* LINTED: avoid warning: dubious operation on enum */
281 # if GTK_CHECK_VERSION(3,0,0)
282 g_signal_handlers_disconnect_by_func(G_OBJECT(beval->target), 267 g_signal_handlers_disconnect_by_func(G_OBJECT(beval->target),
283 FUNC2GENERIC(target_event_cb), 268 FUNC2GENERIC(target_event_cb),
284 beval); 269 beval);
285 # else
286 gtk_signal_disconnect_by_func((GtkObject*)(beval->target),
287 GTK_SIGNAL_FUNC(target_event_cb),
288 beval);
289 # endif
290 270
291 if (gtk_socket_id == 0 && gui.mainwin != NULL 271 if (gtk_socket_id == 0 && gui.mainwin != NULL
292 && gtk_widget_is_ancestor(beval->target, gui.mainwin)) 272 && gtk_widget_is_ancestor(beval->target, gui.mainwin))
293 { 273 {
294 /* LINTED: avoid warning: dubious operation on enum */
295 # if GTK_CHECK_VERSION(3,0,0)
296 g_signal_handlers_disconnect_by_func(G_OBJECT(gui.mainwin), 274 g_signal_handlers_disconnect_by_func(G_OBJECT(gui.mainwin),
297 FUNC2GENERIC(mainwin_event_cb), 275 FUNC2GENERIC(mainwin_event_cb),
298 beval); 276 beval);
299 # else
300 gtk_signal_disconnect_by_func((GtkObject*)(gui.mainwin),
301 GTK_SIGNAL_FUNC(mainwin_event_cb),
302 beval);
303 # endif
304 } 277 }
305 } 278 }
306 279
307 static gint 280 static gint
308 target_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data) 281 target_event_cb(GtkWidget *widget, GdkEvent *event, gpointer data)
431 (*beval->msgCB)(beval, state); 404 (*beval->msgCB)(beval, state);
432 } 405 }
433 } 406 }
434 else 407 else
435 { 408 {
436 # if GTK_CHECK_VERSION(3,0,0)
437 beval->timerID = g_timeout_add((guint)p_bdlay, 409 beval->timerID = g_timeout_add((guint)p_bdlay,
438 &timeout_cb, beval); 410 &timeout_cb, beval);
439 # else
440 beval->timerID = gtk_timeout_add((guint32)p_bdlay,
441 &timeout_cb, beval);
442 # endif
443 } 411 }
444 } 412 }
445 } 413 }
446 } 414 }
447 415
1037 || beval->showState == ShS_UPDATE_PENDING) 1005 || beval->showState == ShS_UPDATE_PENDING)
1038 undrawBalloon(beval); 1006 undrawBalloon(beval);
1039 1007
1040 if (beval->timerID != 0) 1008 if (beval->timerID != 0)
1041 { 1009 {
1042 # if GTK_CHECK_VERSION(3,0,0)
1043 g_source_remove(beval->timerID); 1010 g_source_remove(beval->timerID);
1044 # else
1045 gtk_timeout_remove(beval->timerID);
1046 # endif
1047 beval->timerID = 0; 1011 beval->timerID = 0;
1048 } 1012 }
1049 beval->showState = ShS_NEUTRAL; 1013 beval->showState = ShS_NEUTRAL;
1050 } 1014 }
1051 1015
1053 createBalloonEvalWindow(BalloonEval *beval) 1017 createBalloonEvalWindow(BalloonEval *beval)
1054 { 1018 {
1055 beval->balloonShell = gtk_window_new(GTK_WINDOW_POPUP); 1019 beval->balloonShell = gtk_window_new(GTK_WINDOW_POPUP);
1056 1020
1057 gtk_widget_set_app_paintable(beval->balloonShell, TRUE); 1021 gtk_widget_set_app_paintable(beval->balloonShell, TRUE);
1058 # if GTK_CHECK_VERSION(3,0,0)
1059 gtk_window_set_resizable(GTK_WINDOW(beval->balloonShell), FALSE); 1022 gtk_window_set_resizable(GTK_WINDOW(beval->balloonShell), FALSE);
1060 # else
1061 gtk_window_set_policy(GTK_WINDOW(beval->balloonShell), FALSE, FALSE, TRUE);
1062 # endif
1063 gtk_widget_set_name(beval->balloonShell, "gtk-tooltips"); 1023 gtk_widget_set_name(beval->balloonShell, "gtk-tooltips");
1064 # if GTK_CHECK_VERSION(3,0,0)
1065 gtk_container_set_border_width(GTK_CONTAINER(beval->balloonShell), 4); 1024 gtk_container_set_border_width(GTK_CONTAINER(beval->balloonShell), 4);
1066 # else
1067 gtk_container_border_width(GTK_CONTAINER(beval->balloonShell), 4);
1068 # endif
1069 1025
1070 # if GTK_CHECK_VERSION(3,0,0) 1026 # if GTK_CHECK_VERSION(3,0,0)
1071 g_signal_connect(G_OBJECT(beval->balloonShell), "draw", 1027 g_signal_connect(G_OBJECT(beval->balloonShell), "draw",
1072 G_CALLBACK(balloon_draw_event_cb), NULL); 1028 G_CALLBACK(balloon_draw_event_cb), NULL);
1073 # else 1029 # else