Mercurial > vim
comparison src/mbyte.c @ 12439:683fdeb89017 v8.0.1099
patch 8.0.1099: warnings for GDK calls
commit https://github.com/vim/vim/commit/518d6996998b35ccbc408b1b323f8869c0c1b4d8
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Sep 13 22:09:58 2017 +0200
patch 8.0.1099: warnings for GDK calls
Problem: Warnings for GDK calls.
Solution: Use other calls for GTK 3 and fix a few problems. (Kazunobu
Kuriyama)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 13 Sep 2017 22:15:04 +0200 |
parents | 2c020bc30f62 |
children | aa3f6d093f4b |
comparison
equal
deleted
inserted
replaced
12438:199f465df4d3 | 12439:683fdeb89017 |
---|---|
4889 | 4889 |
4890 static void | 4890 static void |
4891 im_preedit_window_open() | 4891 im_preedit_window_open() |
4892 { | 4892 { |
4893 char *preedit_string; | 4893 char *preedit_string; |
4894 #if !GTK_CHECK_VERSION(3,16,0) | |
4894 char buf[8]; | 4895 char buf[8]; |
4896 #endif | |
4895 PangoAttrList *attr_list; | 4897 PangoAttrList *attr_list; |
4896 PangoLayout *layout; | 4898 PangoLayout *layout; |
4899 #if GTK_CHECK_VERSION(3,0,0) | |
4900 # if !GTK_CHECK_VERSION(3,16,0) | |
4901 GdkRGBA color; | |
4902 # endif | |
4903 #else | |
4897 GdkColor color; | 4904 GdkColor color; |
4905 #endif | |
4898 gint w, h; | 4906 gint w, h; |
4899 | 4907 |
4900 if (preedit_window == NULL) | 4908 if (preedit_window == NULL) |
4901 { | 4909 { |
4902 preedit_window = gtk_window_new(GTK_WINDOW_POPUP); | 4910 preedit_window = gtk_window_new(GTK_WINDOW_POPUP); |
4911 gtk_window_set_transient_for(GTK_WINDOW(preedit_window), | |
4912 GTK_WINDOW(gui.mainwin)); | |
4903 preedit_label = gtk_label_new(""); | 4913 preedit_label = gtk_label_new(""); |
4914 gtk_widget_set_name(preedit_label, "vim-gui-preedit-area"); | |
4904 gtk_container_add(GTK_CONTAINER(preedit_window), preedit_label); | 4915 gtk_container_add(GTK_CONTAINER(preedit_window), preedit_label); |
4905 } | 4916 } |
4906 | 4917 |
4918 #if GTK_CHECK_VERSION(3,16,0) | |
4919 { | |
4920 GtkStyleContext * const context | |
4921 = gtk_widget_get_style_context(gui.drawarea); | |
4922 GtkCssProvider * const provider = gtk_css_provider_new(); | |
4923 gchar *css = NULL; | |
4924 const char * const fontname | |
4925 = pango_font_description_get_family(gui.norm_font); | |
4926 gint fontsize | |
4927 = pango_font_description_get_size(gui.norm_font) / PANGO_SCALE; | |
4928 gchar *fontsize_propval = NULL; | |
4929 | |
4930 if (!pango_font_description_get_size_is_absolute(gui.norm_font)) | |
4931 { | |
4932 /* fontsize was given in points. Convert it into that in pixels | |
4933 * to use with CSS. */ | |
4934 GdkScreen * const screen | |
4935 = gdk_window_get_screen(gtk_widget_get_window(gui.mainwin)); | |
4936 const gdouble dpi = gdk_screen_get_resolution(screen); | |
4937 fontsize = dpi * fontsize / 72; | |
4938 } | |
4939 if (fontsize > 0) | |
4940 fontsize_propval = g_strdup_printf("%dpx", fontsize); | |
4941 else | |
4942 fontsize_propval = g_strdup_printf("inherit"); | |
4943 | |
4944 css = g_strdup_printf( | |
4945 "widget#vim-gui-preedit-area {\n" | |
4946 " font-family: %s,monospace;\n" | |
4947 " font-size: %s;\n" | |
4948 " color: #%.2lx%.2lx%.2lx;\n" | |
4949 " background-color: #%.2lx%.2lx%.2lx;\n" | |
4950 "}\n", | |
4951 fontname != NULL ? fontname : "inherit", | |
4952 fontsize_propval, | |
4953 (gui.norm_pixel >> 16) & 0xff, | |
4954 (gui.norm_pixel >> 8) & 0xff, | |
4955 gui.norm_pixel & 0xff, | |
4956 (gui.back_pixel >> 16) & 0xff, | |
4957 (gui.back_pixel >> 8) & 0xff, | |
4958 gui.back_pixel & 0xff); | |
4959 | |
4960 gtk_css_provider_load_from_data(provider, css, -1, NULL); | |
4961 gtk_style_context_add_provider(context, | |
4962 GTK_STYLE_PROVIDER(provider), G_MAXUINT); | |
4963 | |
4964 g_free(css); | |
4965 g_free(fontsize_propval); | |
4966 g_object_unref(provider); | |
4967 } | |
4968 #elif GTK_CHECK_VERSION(3,0,0) | |
4969 gtk_widget_override_font(preedit_label, gui.norm_font); | |
4970 | |
4971 vim_snprintf(buf, sizeof(buf), "#%06X", gui.norm_pixel); | |
4972 gdk_rgba_parse(&color, buf); | |
4973 gtk_widget_override_color(preedit_label, GTK_STATE_FLAG_NORMAL, &color); | |
4974 | |
4975 vim_snprintf(buf, sizeof(buf), "#%06X", gui.back_pixel); | |
4976 gdk_rgba_parse(&color, buf); | |
4977 gtk_widget_override_background_color(preedit_label, GTK_STATE_FLAG_NORMAL, | |
4978 &color); | |
4979 #else | |
4907 gtk_widget_modify_font(preedit_label, gui.norm_font); | 4980 gtk_widget_modify_font(preedit_label, gui.norm_font); |
4908 | 4981 |
4909 vim_snprintf(buf, sizeof(buf), "#%06X", gui.norm_pixel); | 4982 vim_snprintf(buf, sizeof(buf), "#%06X", gui.norm_pixel); |
4910 gdk_color_parse(buf, &color); | 4983 gdk_color_parse(buf, &color); |
4911 gtk_widget_modify_fg(preedit_label, GTK_STATE_NORMAL, &color); | 4984 gtk_widget_modify_fg(preedit_label, GTK_STATE_NORMAL, &color); |
4912 | 4985 |
4913 vim_snprintf(buf, sizeof(buf), "#%06X", gui.back_pixel); | 4986 vim_snprintf(buf, sizeof(buf), "#%06X", gui.back_pixel); |
4914 gdk_color_parse(buf, &color); | 4987 gdk_color_parse(buf, &color); |
4915 gtk_widget_modify_bg(preedit_window, GTK_STATE_NORMAL, &color); | 4988 gtk_widget_modify_bg(preedit_window, GTK_STATE_NORMAL, &color); |
4989 #endif | |
4916 | 4990 |
4917 gtk_im_context_get_preedit_string(xic, &preedit_string, &attr_list, NULL); | 4991 gtk_im_context_get_preedit_string(xic, &preedit_string, &attr_list, NULL); |
4918 | 4992 |
4919 if (preedit_string[0] != NUL) | 4993 if (preedit_string[0] != NUL) |
4920 { | 4994 { |