Mercurial > vim
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 */ |