Patch 7.4.2089
Problem: Color handling of X11 GUIs is too complicated.
Solution: Simplify the code. Use RGBA where appropriate. (Kazunobu
Kuriyama)
Files: src/gui.h, src/gui_beval.c, src/gui_gtk_x11.c, src/netbeans.c
*** ../vim-7.4.2088/src/gui.h 2016-03-19 22:11:47.436674835 +0100
--- src/gui.h 2016-07-21 21:46:49.941821567 +0200
***************
*** 380,388 ****
--- 380,394 ----
GtkWidget *menubar_h; /* menubar handle */
GtkWidget *toolbar_h; /* toolbar handle */
# endif
+ # ifdef USE_GTK3
+ GdkRGBA *fgcolor; /* GDK-styled foreground color */
+ GdkRGBA *bgcolor; /* GDK-styled background color */
+ GdkRGBA *spcolor; /* GDK-styled special color */
+ # else
GdkColor *fgcolor; /* GDK-styled foreground color */
GdkColor *bgcolor; /* GDK-styled background color */
GdkColor *spcolor; /* GDK-styled special color */
+ # endif
# ifdef USE_GTK3
cairo_surface_t *surface; /* drawarea surface */
gboolean by_signal; /* cause of draw operation */
*** ../vim-7.4.2088/src/gui_beval.c 2016-06-04 17:40:59.686126379 +0200
--- src/gui_beval.c 2016-07-21 21:46:49.941821567 +0200
***************
*** 1044,1050 ****
--- 1044,1055 ----
attrentry_T *aep;
PangoAttribute *attr;
guicolor_T pixel;
+ #if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA color = { 0.0, 0.0, 0.0, 1.0 };
+ PangoAttribute *attr_alpha;
+ #else
GdkColor color = { 0, 0, 0, 0 };
+ #endif
/* Look up the RGB values of the SpecialKey foreground color. */
aep = syn_gui_attr2entry(hl_attr(HLF_8));
***************
*** 1052,1081 ****
if (pixel != INVALCOLOR)
# if GTK_CHECK_VERSION(3,0,0)
{
! GdkVisual * const visual = gtk_widget_get_visual(gui.drawarea);
!
! if (visual == NULL)
! {
! color.red = 0;
! color.green = 0;
! color.blue = 0;
! }
! else
! {
! guint32 r_mask, g_mask, b_mask;
! gint r_shift, g_shift, b_shift;
!
! gdk_visual_get_red_pixel_details(visual, &r_mask, &r_shift,
! NULL);
! gdk_visual_get_green_pixel_details(visual, &g_mask, &g_shift,
! NULL);
! gdk_visual_get_blue_pixel_details(visual, &b_mask, &b_shift,
! NULL);
!
! color.red = ((pixel & r_mask) >> r_shift) / 255.0 * 65535;
! color.green = ((pixel & g_mask) >> g_shift) / 255.0 * 65535;
! color.blue = ((pixel & b_mask) >> b_shift) / 255.0 * 65535;
! }
}
# else
gdk_colormap_query_color(gtk_widget_get_colormap(gui.drawarea),
--- 1057,1066 ----
if (pixel != INVALCOLOR)
# if GTK_CHECK_VERSION(3,0,0)
{
! color.red = ((pixel & 0xff0000) >> 16) / 255.0;
! color.green = ((pixel & 0xff00) >> 8) / 255.0;
! color.blue = (pixel & 0xff) / 255.0;
! color.alpha = 1.0;
}
# else
gdk_colormap_query_color(gtk_widget_get_colormap(gui.drawarea),
***************
*** 1124,1134 ****
--- 1109,1135 ----
}
if (pixel != INVALCOLOR)
{
+ #if GTK_CHECK_VERSION(3,0,0)
+ # define DOUBLE2UINT16(val) ((guint16)((val) * 65535 + 0.5))
+ attr = pango_attr_foreground_new(
+ DOUBLE2UINT16(color.red),
+ DOUBLE2UINT16(color.green),
+ DOUBLE2UINT16(color.blue));
+ attr_alpha = pango_attr_foreground_alpha_new(
+ DOUBLE2UINT16(color.alpha));
+ # undef DOUBLE2UINT16
+ #else
attr = pango_attr_foreground_new(
color.red, color.green, color.blue);
+ #endif
attr->start_index = pdest - buf;
attr->end_index = pdest - buf + outlen;
pango_attr_list_insert(attr_list, attr);
+ #if GTK_CHECK_VERSION(3,0,0)
+ attr_alpha->start_index = pdest - buf;
+ attr_alpha->end_index = pdest - buf + outlen;
+ pango_attr_list_insert(attr_list, attr_alpha);
+ #endif
}
pdest += outlen;
p += charlen;
*** ../vim-7.4.2088/src/gui_gtk_x11.c 2016-07-15 17:49:53.211486136 +0200
--- src/gui_gtk_x11.c 2016-07-21 21:46:49.945821525 +0200
***************
*** 2865,2872 ****
GdkPixmap *blank_mask;
#endif
GdkCursor *cursor;
GdkColor color = { 0, 0, 0, 0 };
- #if !GTK_CHECK_VERSION(3,0,0)
char blank_data[] = { 0x0 };
#endif
--- 2865,2874 ----
GdkPixmap *blank_mask;
#endif
GdkCursor *cursor;
+ #if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA color = { 0.0, 0.0, 0.0, 1.0 };
+ #else
GdkColor color = { 0, 0, 0, 0 };
char blank_data[] = { 0x0 };
#endif
***************
*** 2892,2901 ****
surf = cairo_image_surface_create(CAIRO_FORMAT_A1, 1, 1);
cr = cairo_create(surf);
! cairo_set_source_rgb(cr,
! color.red / 65535.0,
! color.green / 65535.0,
! color.blue / 65535.0);
cairo_rectangle(cr, 0, 0, 1, 1);
cairo_fill(cr);
cairo_destroy(cr);
--- 2894,2904 ----
surf = cairo_image_surface_create(CAIRO_FORMAT_A1, 1, 1);
cr = cairo_create(surf);
! cairo_set_source_rgba(cr,
! color.red,
! color.green,
! color.blue,
! color.alpha);
cairo_rectangle(cr, 0, 0, 1, 1);
cairo_fill(cr);
cairo_destroy(cr);
***************
*** 3824,3835 ****
--- 3827,3844 ----
gui.border_width = 2;
gui.scrollbar_width = SB_DEFAULT_WIDTH;
gui.scrollbar_height = SB_DEFAULT_WIDTH;
+ #if GTK_CHECK_VERSION(3,0,0)
+ gui.fgcolor = g_new(GdkRGBA, 1);
+ gui.bgcolor = g_new(GdkRGBA, 1);
+ gui.spcolor = g_new(GdkRGBA, 1);
+ #else
/* LINTED: avoid warning: conversion to 'unsigned long' */
gui.fgcolor = g_new0(GdkColor, 1);
/* LINTED: avoid warning: conversion to 'unsigned long' */
gui.bgcolor = g_new0(GdkColor, 1);
/* LINTED: avoid warning: conversion to 'unsigned long' */
gui.spcolor = g_new0(GdkColor, 1);
+ #endif
/* Initialise atoms */
html_atom = gdk_atom_intern("text/html", FALSE);
***************
*** 4344,4406 ****
#endif /* FEAT_GUI_GNOME && FEAT_SESSION */
#if GTK_CHECK_VERSION(3,0,0)
! static void
! gui_gtk_get_rgb_from_pixel(guint32 pixel, GdkRGBA *result)
{
! GdkVisual * const visual = gtk_widget_get_visual(gui.drawarea);
! guint32 r_mask, g_mask, b_mask;
! gint r_shift, g_shift, b_shift;
!
! if (visual == NULL)
! {
! result->red = 0.0;
! result->green = 0.0;
! result->blue = 0.0;
! result->alpha = 0.0;
! return;
! }
!
! gdk_visual_get_red_pixel_details(visual, &r_mask, &r_shift, NULL);
! gdk_visual_get_green_pixel_details(visual, &g_mask, &g_shift, NULL);
! gdk_visual_get_blue_pixel_details(visual, &b_mask, &b_shift, NULL);
!
! result->red = ((pixel & r_mask) >> r_shift) / 255.0;
! result->green = ((pixel & g_mask) >> g_shift) / 255.0;
! result->blue = ((pixel & b_mask) >> b_shift) / 255.0;
! result->alpha = 1.0;
! }
!
! /* Convert a GdRGBA into a pixel value using drawarea's visual */
! static guint32
! gui_gtk_get_pixel_from_rgb(const GdkRGBA *rgba)
! {
! GdkVisual * const visual = gtk_widget_get_visual(gui.drawarea);
! guint32 r_mask, g_mask, b_mask;
! gint r_shift, g_shift, b_shift;
! guint32 r, g, b;
!
! if (visual == NULL)
! return 0;
!
! gdk_visual_get_red_pixel_details(visual, &r_mask, &r_shift, NULL);
! gdk_visual_get_green_pixel_details(visual, &g_mask, &g_shift, NULL);
! gdk_visual_get_blue_pixel_details(visual, &b_mask, &b_shift, NULL);
!
! r = rgba->red * 65535;
! g = rgba->green * 65535;
! b = rgba->blue * 65535;
!
! return ((r << r_shift) & r_mask) |
! ((g << g_shift) & g_mask) |
! ((b << b_shift) & b_mask);
}
static void
! set_cairo_source_rgb_from_pixel(cairo_t *cr, guint32 pixel)
{
! GdkRGBA result;
! gui_gtk_get_rgb_from_pixel(pixel, &result);
! cairo_set_source_rgb(cr, result.red, result.green, result.blue);
}
#endif /* GTK_CHECK_VERSION(3,0,0) */
--- 4353,4374 ----
#endif /* FEAT_GUI_GNOME && FEAT_SESSION */
#if GTK_CHECK_VERSION(3,0,0)
! static GdkRGBA
! color_to_rgba(guicolor_T color)
{
! GdkRGBA rgba;
! rgba.red = ((color & 0xff0000) >> 16) / 255.0;
! rgba.green = ((color & 0xff00) >> 8) / 255.0;
! rgba.blue = ((color & 0xff)) / 255.0;
! rgba.alpha = 1.0;
! return rgba;
}
static void
! set_cairo_source_rgba_from_color(cairo_t *cr, guicolor_T color)
{
! const GdkRGBA rgba = color_to_rgba(color);
! cairo_set_source_rgba(cr, rgba.red, rgba.green, rgba.blue, rgba.alpha);
}
#endif /* GTK_CHECK_VERSION(3,0,0) */
***************
*** 4421,4439 ****
#endif
{
#if GTK_CHECK_VERSION(3,4,0)
! GdkRGBA color;
! gui_gtk_get_rgb_from_pixel(gui.back_pixel, &color);
{
cairo_pattern_t * const pat = cairo_pattern_create_rgba(
! color.red, color.green, color.blue, color.alpha);
if (pat != NULL)
{
gdk_window_set_background_pattern(da_win, pat);
cairo_pattern_destroy(pat);
}
else
! gdk_window_set_background_rgba(da_win, &color);
}
#else /* !GTK_CHECK_VERSION(3,4,0) */
GdkColor color = { 0, 0, 0, 0 };
--- 4389,4407 ----
#endif
{
#if GTK_CHECK_VERSION(3,4,0)
! GdkRGBA rgba;
! rgba = color_to_rgba(gui.back_pixel);
{
cairo_pattern_t * const pat = cairo_pattern_create_rgba(
! rgba.red, rgba.green, rgba.blue, rgba.alpha);
if (pat != NULL)
{
gdk_window_set_background_pattern(da_win, pat);
cairo_pattern_destroy(pat);
}
else
! gdk_window_set_background_rgba(da_win, &rgba);
}
#else /* !GTK_CHECK_VERSION(3,4,0) */
GdkColor color = { 0, 0, 0, 0 };
***************
*** 5518,5610 ****
}
/*
! * Return the Pixel value (color) for the given color name. This routine was
! * pretty much taken from example code in the Silicon Graphics OSF/Motif
! * Programmer's Guide.
* Return INVALCOLOR for error.
*/
guicolor_T
gui_mch_get_color(char_u *name)
{
- /* A number of colors that some X11 systems don't have */
- static const char *const vimnames[][2] =
- {
- {"LightRed", "#FFBBBB"},
- {"LightGreen", "#88FF88"},
- {"LightMagenta","#FFBBFF"},
- {"DarkCyan", "#008888"},
- {"DarkBlue", "#0000BB"},
- {"DarkRed", "#BB0000"},
- {"DarkMagenta", "#BB00BB"},
- {"DarkGrey", "#BBBBBB"},
- {"DarkYellow", "#BBBB00"},
- {"Gray10", "#1A1A1A"},
- {"Grey10", "#1A1A1A"},
- {"Gray20", "#333333"},
- {"Grey20", "#333333"},
- {"Gray30", "#4D4D4D"},
- {"Grey30", "#4D4D4D"},
- {"Gray40", "#666666"},
- {"Grey40", "#666666"},
- {"Gray50", "#7F7F7F"},
- {"Grey50", "#7F7F7F"},
- {"Gray60", "#999999"},
- {"Grey60", "#999999"},
- {"Gray70", "#B3B3B3"},
- {"Grey70", "#B3B3B3"},
- {"Gray80", "#CCCCCC"},
- {"Grey80", "#CCCCCC"},
- {"Gray90", "#E5E5E5"},
- {"Grey90", "#E5E5E5"},
- {NULL, NULL}
- };
-
if (!gui.in_use) /* can't do this when GUI not running */
return INVALCOLOR;
- while (name != NULL)
- {
#if GTK_CHECK_VERSION(3,0,0)
! GdkRGBA color;
#else
! GdkColor color;
! #endif
! int parsed;
! int i;
! #if GTK_CHECK_VERSION(3,0,0)
! parsed = gdk_rgba_parse(&color, (const gchar *)name);
! #else
! parsed = gdk_color_parse((const char *)name, &color);
! #endif
! if (parsed)
! {
! #if GTK_CHECK_VERSION(3,0,0)
! return (guicolor_T)gui_gtk_get_pixel_from_rgb(&color);
! #else
! gdk_colormap_alloc_color(gtk_widget_get_colormap(gui.drawarea),
! &color, FALSE, TRUE);
! return (guicolor_T)color.pixel;
! #endif
! }
! /* add a few builtin names and try again */
! for (i = 0; ; ++i)
! {
! if (vimnames[i][0] == NULL)
! {
! name = NULL;
! break;
! }
! if (STRICMP(name, vimnames[i][0]) == 0)
! {
! name = (char_u *)vimnames[i][1];
! break;
! }
! }
! }
! return INVALCOLOR;
}
/*
--- 5486,5521 ----
}
/*
! * Return the Pixel value (color) for the given color name.
! *
* Return INVALCOLOR for error.
*/
guicolor_T
gui_mch_get_color(char_u *name)
{
if (!gui.in_use) /* can't do this when GUI not running */
return INVALCOLOR;
#if GTK_CHECK_VERSION(3,0,0)
! return name != NULL ? gui_get_color_cmn(name) : INVALCOLOR;
#else
! guicolor_T color;
! GdkColor gcolor;
! int ret;
! color = (name != NULL) ? gui_get_color_cmn(name) : INVALCOLOR;
! if (color == INVALCOLOR)
! return INVALCOLOR;
! gcolor.red = (guint16)(((color & 0xff0000) >> 16) / 255.0 * 65535 + 0.5);
! gcolor.green = (guint16)(((color & 0xff00) >> 8) / 255.0 * 65535 + 0.5);
! gcolor.blue = (guint16)((color & 0xff) / 255.0 * 65535 + 0.5);
! ret = gdk_colormap_alloc_color(gtk_widget_get_colormap(gui.drawarea),
! &gcolor, FALSE, TRUE);
!
! return ret != 0 ? (guicolor_T)gcolor.pixel : INVALCOLOR;
! #endif
}
/*
***************
*** 5613,5619 ****
--- 5524,5534 ----
void
gui_mch_set_fg_color(guicolor_T color)
{
+ #if GTK_CHECK_VERSION(3,0,0)
+ *gui.fgcolor = color_to_rgba(color);
+ #else
gui.fgcolor->pixel = (unsigned long)color;
+ #endif
}
/*
***************
*** 5622,5628 ****
--- 5537,5547 ----
void
gui_mch_set_bg_color(guicolor_T color)
{
+ #if GTK_CHECK_VERSION(3,0,0)
+ *gui.bgcolor = color_to_rgba(color);
+ #else
gui.bgcolor->pixel = (unsigned long)color;
+ #endif
}
/*
***************
*** 5631,5637 ****
--- 5550,5560 ----
void
gui_mch_set_sp_color(guicolor_T color)
{
+ #if GTK_CHECK_VERSION(3,0,0)
+ *gui.spcolor = color_to_rgba(color);
+ #else
gui.spcolor->pixel = (unsigned long)color;
+ #endif
}
/*
***************
*** 5792,5798 ****
if (!(flags & DRAW_TRANSP))
{
#if GTK_CHECK_VERSION(3,0,0)
! set_cairo_source_rgb_from_pixel(cr, gui.bgcolor->pixel);
cairo_rectangle(cr,
FILL_X(col), FILL_Y(row),
num_cells * gui.char_width, gui.char_height);
--- 5715,5723 ----
if (!(flags & DRAW_TRANSP))
{
#if GTK_CHECK_VERSION(3,0,0)
! cairo_set_source_rgba(cr,
! gui.bgcolor->red, gui.bgcolor->green, gui.bgcolor->blue,
! gui.bgcolor->alpha);
cairo_rectangle(cr,
FILL_X(col), FILL_Y(row),
num_cells * gui.char_width, gui.char_height);
***************
*** 5811,5817 ****
}
#if GTK_CHECK_VERSION(3,0,0)
! set_cairo_source_rgb_from_pixel(cr, gui.fgcolor->pixel);
cairo_move_to(cr, TEXT_X(col), TEXT_Y(row));
pango_cairo_show_glyph_string(cr, font, glyphs);
#else
--- 5736,5744 ----
}
#if GTK_CHECK_VERSION(3,0,0)
! cairo_set_source_rgba(cr,
! gui.fgcolor->red, gui.fgcolor->green, gui.fgcolor->blue,
! gui.fgcolor->alpha);
cairo_move_to(cr, TEXT_X(col), TEXT_Y(row));
pango_cairo_show_glyph_string(cr, font, glyphs);
#else
***************
*** 5829,5835 ****
if ((flags & DRAW_BOLD) && !gui.font_can_bold)
#if GTK_CHECK_VERSION(3,0,0)
{
! set_cairo_source_rgb_from_pixel(cr, gui.fgcolor->pixel);
cairo_move_to(cr, TEXT_X(col) + 1, TEXT_Y(row));
pango_cairo_show_glyph_string(cr, font, glyphs);
}
--- 5756,5764 ----
if ((flags & DRAW_BOLD) && !gui.font_can_bold)
#if GTK_CHECK_VERSION(3,0,0)
{
! cairo_set_source_rgba(cr,
! gui.fgcolor->red, gui.fgcolor->green, gui.fgcolor->blue,
! gui.fgcolor->alpha);
cairo_move_to(cr, TEXT_X(col) + 1, TEXT_Y(row));
pango_cairo_show_glyph_string(cr, font, glyphs);
}
***************
*** 5865,5871 ****
#if GTK_CHECK_VERSION(3,0,0)
cairo_set_line_width(cr, 1.0);
cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
! set_cairo_source_rgb_from_pixel(cr, gui.spcolor->pixel);
for (i = FILL_X(col); i < FILL_X(col + cells); ++i)
{
offset = val[i % 8];
--- 5794,5802 ----
#if GTK_CHECK_VERSION(3,0,0)
cairo_set_line_width(cr, 1.0);
cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
! cairo_set_source_rgba(cr,
! gui.spcolor->red, gui.spcolor->green, gui.spcolor->blue,
! gui.spcolor->alpha);
for (i = FILL_X(col); i < FILL_X(col + cells); ++i)
{
offset = val[i % 8];
***************
*** 5894,5900 ****
{
cairo_set_line_width(cr, 1.0);
cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
! set_cairo_source_rgb_from_pixel(cr, gui.fgcolor->pixel);
cairo_move_to(cr, FILL_X(col), y + 0.5);
cairo_line_to(cr, FILL_X(col + cells), y + 0.5);
cairo_stroke(cr);
--- 5825,5833 ----
{
cairo_set_line_width(cr, 1.0);
cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
! cairo_set_source_rgba(cr,
! gui.fgcolor->red, gui.fgcolor->green, gui.fgcolor->blue,
! gui.fgcolor->alpha);
cairo_move_to(cr, FILL_X(col), y + 0.5);
cairo_line_to(cr, FILL_X(col + cells), y + 0.5);
cairo_stroke(cr);
***************
*** 6361,6367 ****
};
cairo_t * const cr = cairo_create(gui.surface);
! set_cairo_source_rgb_from_pixel(cr, gui.norm_pixel ^ gui.back_pixel);
# if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1,9,2)
cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE);
# else
--- 6294,6300 ----
};
cairo_t * const cr = cairo_create(gui.surface);
! set_cairo_source_rgba_from_color(cr, gui.norm_pixel ^ gui.back_pixel);
# if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1,9,2)
cairo_set_operator(cr, CAIRO_OPERATOR_DIFFERENCE);
# else
***************
*** 6445,6451 ****
gui_mch_set_fg_color(color);
#if GTK_CHECK_VERSION(3,0,0)
! set_cairo_source_rgb_from_pixel(cr, gui.fgcolor->pixel);
#else
gdk_gc_set_foreground(gui.text_gc, gui.fgcolor);
#endif
--- 6378,6386 ----
gui_mch_set_fg_color(color);
#if GTK_CHECK_VERSION(3,0,0)
! cairo_set_source_rgba(cr,
! gui.fgcolor->red, gui.fgcolor->green, gui.fgcolor->blue,
! gui.fgcolor->alpha);
#else
gdk_gc_set_foreground(gui.text_gc, gui.fgcolor);
#endif
***************
*** 6488,6494 ****
cairo_t *cr;
cr = cairo_create(gui.surface);
! set_cairo_source_rgb_from_pixel(cr, gui.fgcolor->pixel);
cairo_rectangle(cr,
# ifdef FEAT_RIGHTLEFT
/* vertical line should be on the right of current point */
--- 6423,6431 ----
cairo_t *cr;
cr = cairo_create(gui.surface);
! cairo_set_source_rgba(cr,
! gui.fgcolor->red, gui.fgcolor->green, gui.fgcolor->blue,
! gui.fgcolor->alpha);
cairo_rectangle(cr,
# ifdef FEAT_RIGHTLEFT
/* vertical line should be on the right of current point */
***************
*** 6686,6692 ****
if (pat != NULL)
cairo_set_source(cr, pat);
else
! set_cairo_source_rgb_from_pixel(cr, gui.back_pixel);
gdk_cairo_rectangle(cr, &rect);
cairo_fill(cr);
cairo_destroy(cr);
--- 6623,6629 ----
if (pat != NULL)
cairo_set_source(cr, pat);
else
! set_cairo_source_rgba_from_color(cr, gui.back_pixel);
gdk_cairo_rectangle(cr, &rect);
cairo_fill(cr);
cairo_destroy(cr);
***************
*** 6719,6725 ****
if (pat != NULL)
cairo_set_source(cr, pat);
else
! set_cairo_source_rgb_from_pixel(cr, gui.back_pixel);
gdk_cairo_rectangle(cr, &rect);
cairo_fill(cr);
cairo_destroy(cr);
--- 6656,6662 ----
if (pat != NULL)
cairo_set_source(cr, pat);
else
! set_cairo_source_rgba_from_color(cr, gui.back_pixel);
gdk_cairo_rectangle(cr, &rect);
cairo_fill(cr);
cairo_destroy(cr);
***************
*** 7079,7101 ****
long_u
gui_mch_get_rgb(guicolor_T pixel)
{
- GdkColor color;
#if GTK_CHECK_VERSION(3,0,0)
! GdkRGBA rgba;
!
! gui_gtk_get_rgb_from_pixel(pixel, &rgba);
!
! color.red = rgba.red * 65535;
! color.green = rgba.green * 65535;
! color.blue = rgba.blue * 65535;
#else
gdk_colormap_query_color(gtk_widget_get_colormap(gui.drawarea),
(unsigned long)pixel, &color);
- #endif
return (((unsigned)color.red & 0xff00) << 8)
| ((unsigned)color.green & 0xff00)
| (((unsigned)color.blue & 0xff00) >> 8);
}
/*
--- 7016,7033 ----
long_u
gui_mch_get_rgb(guicolor_T pixel)
{
#if GTK_CHECK_VERSION(3,0,0)
! return (long_u)pixel;
#else
+ GdkColor color;
+
gdk_colormap_query_color(gtk_widget_get_colormap(gui.drawarea),
(unsigned long)pixel, &color);
return (((unsigned)color.red & 0xff00) << 8)
| ((unsigned)color.green & 0xff00)
| (((unsigned)color.blue & 0xff00) >> 8);
+ #endif
}
/*
***************
*** 7355,7361 ****
cairo_surface_get_content(gui.surface),
SIGN_WIDTH, SIGN_HEIGHT);
bg_cr = cairo_create(bg_surf);
! set_cairo_source_rgb_from_pixel(bg_cr, gui.bgcolor->pixel);
cairo_paint(bg_cr);
sign_surf = cairo_surface_create_similar(gui.surface,
--- 7287,7295 ----
cairo_surface_get_content(gui.surface),
SIGN_WIDTH, SIGN_HEIGHT);
bg_cr = cairo_create(bg_surf);
! cairo_set_source_rgba(bg_cr,
! gui.bgcolor->red, gui.bgcolor->green, gui.bgcolor->blue,
! gui.bgcolor->alpha);
cairo_paint(bg_cr);
sign_surf = cairo_surface_create_similar(gui.surface,
*** ../vim-7.4.2088/src/netbeans.c 2016-07-10 22:11:11.870751341 +0200
--- src/netbeans.c 2016-07-21 21:46:49.945821525 +0200
***************
*** 3097,3120 ****
#if GTK_CHECK_VERSION(3,0,0)
cr = cairo_create(gui.surface);
! {
! GdkVisual *visual = NULL;
! guint32 r_mask, g_mask, b_mask;
! gint r_shift, g_shift, b_shift;
!
! visual = gdk_window_get_visual(gtk_widget_get_window(gui.drawarea));
! if (visual != NULL)
! {
! gdk_visual_get_red_pixel_details(visual, &r_mask, &r_shift, NULL);
! gdk_visual_get_green_pixel_details(visual, &g_mask, &g_shift, NULL);
! gdk_visual_get_blue_pixel_details(visual, &b_mask, &b_shift, NULL);
!
! cairo_set_source_rgb(cr,
! ((gui.fgcolor->red & r_mask) >> r_shift) / 255.0,
! ((gui.fgcolor->green & g_mask) >> g_shift) / 255.0,
! ((gui.fgcolor->blue & b_mask) >> b_shift) / 255.0);
! }
! }
#endif
x = 0;
--- 3097,3105 ----
#if GTK_CHECK_VERSION(3,0,0)
cr = cairo_create(gui.surface);
! cairo_set_source_rgba(cr,
! gui.fgcolor->red, gui.fgcolor->green, gui.fgcolor->blue,
! gui.fgcolor->alpha);
#endif
x = 0;
*** ../vim-7.4.2088/src/version.c 2016-07-21 22:02:57.371744932 +0200
--- src/version.c 2016-07-21 22:09:18.831743247 +0200
***************
*** 760,761 ****
--- 760,763 ----
{ /* Add new patch number below this line */
+ /**/
+ 2089,
/**/
--
The early bird gets the worm. If you want something else for
breakfast, get up later.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.