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 {