comparison src/mbyte.c @ 8218:3456e2ebebd4 v7.4.1402

commit https://github.com/vim/vim/commit/9892189d2e7ab94b750f99e6da4cbfc3c8014517 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Feb 23 17:14:37 2016 +0100 patch 7.4.1402 Problem: GTK 3 is not supported. Solution: Add GTK 3 support. (Kazunobu Kuriyama)
author Christian Brabandt <cb@256bit.org>
date Tue, 23 Feb 2016 17:15:05 +0100
parents 05b88224cea1
children 54ac275e3fc4
comparison
equal deleted inserted replaced
8217:c52abf35df88 8218:3456e2ebebd4
107 #ifdef X_LOCALE 107 #ifdef X_LOCALE
108 #include <X11/Xlocale.h> 108 #include <X11/Xlocale.h>
109 #endif 109 #endif
110 110
111 #if defined(FEAT_GUI_GTK) && defined(FEAT_XIM) 111 #if defined(FEAT_GUI_GTK) && defined(FEAT_XIM)
112 # include <gdk/gdkkeysyms.h> 112 # if GTK_CHECK_VERSION(3,0,0)
113 # include <gdk/gdkkeysyms-compat.h>
114 # else
115 # include <gdk/gdkkeysyms.h>
116 # endif
113 # ifdef WIN3264 117 # ifdef WIN3264
114 # include <gdk/gdkwin32.h> 118 # include <gdk/gdkwin32.h>
115 # else 119 # else
116 # include <gdk/gdkx.h> 120 # include <gdk/gdkx.h>
117 # endif 121 # endif
4939 #ifdef XIM_DEBUG 4943 #ifdef XIM_DEBUG
4940 xim_log("xim_init()\n"); 4944 xim_log("xim_init()\n");
4941 #endif 4945 #endif
4942 4946
4943 g_return_if_fail(gui.drawarea != NULL); 4947 g_return_if_fail(gui.drawarea != NULL);
4948 #if GTK_CHECK_VERSION(3,0,0)
4949 g_return_if_fail(gtk_widget_get_window(gui.drawarea) != NULL);
4950 #else
4944 g_return_if_fail(gui.drawarea->window != NULL); 4951 g_return_if_fail(gui.drawarea->window != NULL);
4952 #endif
4945 4953
4946 xic = gtk_im_multicontext_new(); 4954 xic = gtk_im_multicontext_new();
4947 g_object_ref(xic); 4955 g_object_ref(xic);
4948 4956
4949 im_commit_handler_id = g_signal_connect(G_OBJECT(xic), "commit", 4957 im_commit_handler_id = g_signal_connect(G_OBJECT(xic), "commit",
4953 g_signal_connect(G_OBJECT(xic), "preedit_start", 4961 g_signal_connect(G_OBJECT(xic), "preedit_start",
4954 G_CALLBACK(&im_preedit_start_cb), NULL); 4962 G_CALLBACK(&im_preedit_start_cb), NULL);
4955 g_signal_connect(G_OBJECT(xic), "preedit_end", 4963 g_signal_connect(G_OBJECT(xic), "preedit_end",
4956 G_CALLBACK(&im_preedit_end_cb), NULL); 4964 G_CALLBACK(&im_preedit_end_cb), NULL);
4957 4965
4966 #if GTK_CHECK_VERSION(3,0,0)
4967 gtk_im_context_set_client_window(xic, gtk_widget_get_window(gui.drawarea));
4968 #else
4958 gtk_im_context_set_client_window(xic, gui.drawarea->window); 4969 gtk_im_context_set_client_window(xic, gui.drawarea->window);
4970 #endif
4959 } 4971 }
4960 4972
4961 void 4973 void
4962 im_shutdown(void) 4974 im_shutdown(void)
4963 { 4975 {
5052 { 5064 {
5053 GdkEventKey *event; 5065 GdkEventKey *event;
5054 5066
5055 # ifdef HAVE_GTK_MULTIHEAD 5067 # ifdef HAVE_GTK_MULTIHEAD
5056 event = (GdkEventKey *)gdk_event_new(GDK_KEY_PRESS); 5068 event = (GdkEventKey *)gdk_event_new(GDK_KEY_PRESS);
5069 # if GTK_CHECK_VERSION(3,0,0)
5070 g_object_ref(gtk_widget_get_window(gui.drawarea));
5071 /* unreffed by gdk_event_free() */
5072 # else
5057 g_object_ref(gui.drawarea->window); /* unreffed by gdk_event_free() */ 5073 g_object_ref(gui.drawarea->window); /* unreffed by gdk_event_free() */
5074 # endif
5058 # else 5075 # else
5059 event = (GdkEventKey *)g_malloc0((gulong)sizeof(GdkEvent)); 5076 event = (GdkEventKey *)g_malloc0((gulong)sizeof(GdkEvent));
5060 event->type = GDK_KEY_PRESS; 5077 event->type = GDK_KEY_PRESS;
5061 # endif 5078 # endif
5079 # if GTK_CHECK_VERSION(3,0,0)
5080 event->window = gtk_widget_get_window(gui.drawarea);
5081 # else
5062 event->window = gui.drawarea->window; 5082 event->window = gui.drawarea->window;
5083 # endif
5063 event->send_event = TRUE; 5084 event->send_event = TRUE;
5064 event->time = GDK_CURRENT_TIME; 5085 event->time = GDK_CURRENT_TIME;
5065 event->state = state; 5086 event->state = state;
5066 event->keyval = keyval; 5087 event->keyval = keyval;
5067 event->hardware_keycode = /* needed for XIM */ 5088 event->hardware_keycode = /* needed for XIM */