# HG changeset patch # User Christian Brabandt # Date 1471900507 -7200 # Node ID ccb6461b82dfc073562d4f63c4eb7a0b444b13b7 # Parent 5eb7fba8ec4eb164a1c443529bd2e37480bc65fe commit https://github.com/vim/vim/commit/1b58cdd160c2e0ada0f638679a2aa27e4665fc48 Author: Bram Moolenaar Date: Mon Aug 22 23:04:33 2016 +0200 patch 7.4.2243 Problem: Warning for assigning negative value to unsigned. (Danek Duvall) Solution: Make cterm_normal_fg_gui_color and _bg_ guicolor_T, cast to long_u only when an unsigned is needed. diff --git a/src/globals.h b/src/globals.h --- a/src/globals.h +++ b/src/globals.h @@ -368,8 +368,8 @@ EXTERN int cterm_normal_fg_color INIT(= EXTERN int cterm_normal_fg_bold INIT(= 0); EXTERN int cterm_normal_bg_color INIT(= 0); #ifdef FEAT_TERMGUICOLORS -EXTERN long_u cterm_normal_fg_gui_color INIT(= INVALCOLOR); -EXTERN long_u cterm_normal_bg_gui_color INIT(= INVALCOLOR); +EXTERN guicolor_T cterm_normal_fg_gui_color INIT(= INVALCOLOR); +EXTERN guicolor_T cterm_normal_bg_gui_color INIT(= INVALCOLOR); #endif #ifdef FEAT_AUTOCMD diff --git a/src/gui.c b/src/gui.c --- a/src/gui.c +++ b/src/gui.c @@ -4741,7 +4741,7 @@ gui_get_color(char_u *name) int gui_get_lightness(guicolor_T pixel) { - long_u rgb = gui_mch_get_rgb(pixel); + long_u rgb = (long_u)gui_mch_get_rgb(pixel); return (int)( (((rgb >> 16) & 0xff) * 299) + (((rgb >> 8) & 0xff) * 587) diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c --- a/src/gui_gtk_x11.c +++ b/src/gui_gtk_x11.c @@ -7020,7 +7020,7 @@ gui_mch_enable_scrollbar(scrollbar_T *sb /* * Return the RGB value of a pixel as long. */ - long_u + guicolor_T gui_mch_get_rgb(guicolor_T pixel) { #if GTK_CHECK_VERSION(3,0,0) @@ -7031,9 +7031,10 @@ gui_mch_get_rgb(guicolor_T pixel) gdk_colormap_query_color(gtk_widget_get_colormap(gui.drawarea), (unsigned long)pixel, &color); - return (((unsigned)color.red & 0xff00) << 8) + return (guicolor_T)( + (((unsigned)color.red & 0xff00) << 8) | ((unsigned)color.green & 0xff00) - | (((unsigned)color.blue & 0xff00) >> 8); + | (((unsigned)color.blue & 0xff00) >> 8)); #endif } diff --git a/src/gui_mac.c b/src/gui_mac.c --- a/src/gui_mac.c +++ b/src/gui_mac.c @@ -5181,10 +5181,10 @@ gui_mch_start_blink(void) /* * Return the RGB value of a pixel as long. */ - long_u + guicolor_T gui_mch_get_rgb(guicolor_T pixel) { - return (Red(pixel) << 16) + (Green(pixel) << 8) + Blue(pixel); + return (guicolor_T)((Red(pixel) << 16) + (Green(pixel) << 8) + Blue(pixel)); } diff --git a/src/gui_photon.c b/src/gui_photon.c --- a/src/gui_photon.c +++ b/src/gui_photon.c @@ -1933,10 +1933,11 @@ gui_mch_setmouse(int x, int y) /* * Return the RGB value of a pixel as a long. */ - long_u + guicolor_T gui_mch_get_rgb(guicolor_T pixel) { - return PgRGB(PgRedValue(pixel), PgGreenValue(pixel), PgBlueValue(pixel)); + return (guicolor_T)(PgRGB(PgRedValue(pixel), + PgGreenValue(pixel), PgBlueValue(pixel))); } void diff --git a/src/gui_w32.c b/src/gui_w32.c --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -2263,11 +2263,11 @@ SaveInst(HINSTANCE hInst) /* * Return the RGB value of a pixel as a long. */ - long_u + guicolor_T gui_mch_get_rgb(guicolor_T pixel) { - return (GetRValue(pixel) << 16) + (GetGValue(pixel) << 8) - + GetBValue(pixel); + return (guicolor_T)((GetRValue(pixel) << 16) + (GetGValue(pixel) << 8) + + GetBValue(pixel)); } #if defined(FEAT_GUI_DIALOG) || defined(PROTO) diff --git a/src/gui_x11.c b/src/gui_x11.c --- a/src/gui_x11.c +++ b/src/gui_x11.c @@ -3095,7 +3095,7 @@ gui_x11_blink_cb( /* * Return the RGB value of a pixel as a long. */ - long_u + guicolor_T gui_mch_get_rgb(guicolor_T pixel) { XColor xc; @@ -3105,8 +3105,8 @@ gui_mch_get_rgb(guicolor_T pixel) xc.pixel = pixel; XQueryColor(gui.dpy, colormap, &xc); - return ((xc.red & 0xff00) << 8) + (xc.green & 0xff00) - + ((unsigned)xc.blue >> 8); + return (guicolor_T)(((xc.red & 0xff00) << 8) + (xc.green & 0xff00) + + ((unsigned)xc.blue >> 8)); } /* diff --git a/src/proto/gui_gtk_x11.pro b/src/proto/gui_gtk_x11.pro --- a/src/proto/gui_gtk_x11.pro +++ b/src/proto/gui_gtk_x11.pro @@ -66,7 +66,7 @@ void gui_mch_menu_grey(vimmenu_T *menu, void gui_mch_menu_hidden(vimmenu_T *menu, int hidden); void gui_mch_draw_menubar(void); void gui_mch_enable_scrollbar(scrollbar_T *sb, int flag); -long_u gui_mch_get_rgb(guicolor_T pixel); +guicolor_T gui_mch_get_rgb(guicolor_T pixel); void gui_mch_getmouse(int *x, int *y); void gui_mch_setmouse(int x, int y); void gui_mch_mousehide(int hide); diff --git a/src/proto/gui_mac.pro b/src/proto/gui_mac.pro --- a/src/proto/gui_mac.pro +++ b/src/proto/gui_mac.pro @@ -78,7 +78,7 @@ void gui_mch_menu_grey(vimmenu_T *menu, void gui_mch_menu_hidden(vimmenu_T *menu, int hidden); void gui_mch_draw_menubar(void); int gui_mch_get_lightness(guicolor_T pixel); -long_u gui_mch_get_rgb(guicolor_T pixel); +guicolor_T gui_mch_get_rgb(guicolor_T pixel); int gui_mch_get_mouse_x(void); int gui_mch_get_mouse_y(void); void gui_mch_setmouse(int x, int y); diff --git a/src/proto/gui_photon.pro b/src/proto/gui_photon.pro --- a/src/proto/gui_photon.pro +++ b/src/proto/gui_photon.pro @@ -25,7 +25,7 @@ void mch_set_mouse_shape(int shape); void gui_mch_mousehide(int hide); void gui_mch_getmouse(int *x, int *y); void gui_mch_setmouse(int x, int y); -long_u gui_mch_get_rgb(guicolor_T pixel); +guicolor_T gui_mch_get_rgb(guicolor_T pixel); void gui_mch_new_colors(void); guicolor_T gui_mch_get_color(char_u *name); void gui_mch_set_fg_color(guicolor_T color); diff --git a/src/proto/gui_w32.pro b/src/proto/gui_w32.pro --- a/src/proto/gui_w32.pro +++ b/src/proto/gui_w32.pro @@ -35,7 +35,7 @@ void gui_mch_enable_menu(int flag); void gui_mch_set_menu_pos(int x, int y, int w, int h); void gui_mch_menu_hidden(vimmenu_T *menu, int hidden); void gui_mch_draw_menubar(void); -long_u gui_mch_get_rgb(guicolor_T pixel); +guicolor_T gui_mch_get_rgb(guicolor_T pixel); void gui_mch_activate_window(void); void gui_mch_show_toolbar(int showit); void gui_mch_show_tabline(int showit); diff --git a/src/proto/gui_x11.pro b/src/proto/gui_x11.pro --- a/src/proto/gui_x11.pro +++ b/src/proto/gui_x11.pro @@ -24,7 +24,7 @@ void gui_mch_free_fontset(GuiFontset fon GuiFontset gui_mch_get_fontset(char_u *name, int giveErrorIfMissing, int fixed_width); int fontset_height(XFontSet fs); int fontset_height2(XFontSet fs); -guicolor_T gui_mch_get_color(char_u *reqname); +guicolor_T gui_mch_get_color(char_u *name); void gui_mch_set_fg_color(guicolor_T color); void gui_mch_set_bg_color(guicolor_T color); void gui_mch_set_sp_color(guicolor_T color); @@ -58,7 +58,7 @@ int gui_mch_is_blink_off(void); void gui_mch_set_blinking(long waittime, long on, long off); void gui_mch_stop_blink(void); void gui_mch_start_blink(void); -long_u gui_mch_get_rgb(guicolor_T pixel); +guicolor_T gui_mch_get_rgb(guicolor_T pixel); void gui_x11_callbacks(Widget textArea, Widget vimForm); void gui_mch_getmouse(int *x, int *y); void gui_mch_setmouse(int x, int y); diff --git a/src/proto/term.pro b/src/proto/term.pro --- a/src/proto/term.pro +++ b/src/proto/term.pro @@ -1,7 +1,7 @@ /* term.c */ guicolor_T termgui_mch_get_color(char_u *name); guicolor_T termgui_get_color(char_u *name); -long_u termgui_mch_get_rgb(guicolor_T color); +guicolor_T termgui_mch_get_rgb(guicolor_T color); int set_termname(char_u *term); void set_mouse_termcode(int n, char_u *s); void del_mouse_termcode(int n); @@ -25,8 +25,8 @@ void term_set_winpos(int x, int y); void term_set_winsize(int width, int height); void term_fg_color(int n); void term_bg_color(int n); -void term_fg_rgb_color(long_u rgb); -void term_bg_rgb_color(long_u rgb); +void term_fg_rgb_color(guicolor_T rgb); +void term_bg_rgb_color(guicolor_T rgb); void term_settitle(char_u *title); void ttest(int pairs); void add_long_to_buf(long_u val, char_u *dst); diff --git a/src/screen.c b/src/screen.c --- a/src/screen.c +++ b/src/screen.c @@ -7865,7 +7865,7 @@ screen_start_highlight(int attr) else if (aep != NULL && cterm_normal_fg_bold && #ifdef FEAT_TERMGUICOLORS (p_tgc ? - (aep->ae_u.cterm.fg_rgb != (long_u)INVALCOLOR): + (aep->ae_u.cterm.fg_rgb != INVALCOLOR): #endif (t_colors > 1 && aep->ae_u.cterm.fg_color) #ifdef FEAT_TERMGUICOLORS @@ -7894,9 +7894,9 @@ screen_start_highlight(int attr) #ifdef FEAT_TERMGUICOLORS if (p_tgc) { - if (aep->ae_u.cterm.fg_rgb != (long_u)INVALCOLOR) + if (aep->ae_u.cterm.fg_rgb != INVALCOLOR) term_fg_rgb_color(aep->ae_u.cterm.fg_rgb); - if (aep->ae_u.cterm.bg_rgb != (long_u)INVALCOLOR) + if (aep->ae_u.cterm.bg_rgb != INVALCOLOR) term_bg_rgb_color(aep->ae_u.cterm.bg_rgb); } else @@ -7956,8 +7956,8 @@ screen_stop_highlight(void) if (aep != NULL && #ifdef FEAT_TERMGUICOLORS (p_tgc ? - (aep->ae_u.cterm.fg_rgb != (long_u)INVALCOLOR || - aep->ae_u.cterm.bg_rgb != (long_u)INVALCOLOR): + (aep->ae_u.cterm.fg_rgb != INVALCOLOR + || aep->ae_u.cterm.bg_rgb != INVALCOLOR): #endif (aep->ae_u.cterm.fg_color || aep->ae_u.cterm.bg_color) #ifdef FEAT_TERMGUICOLORS @@ -8014,9 +8014,9 @@ screen_stop_highlight(void) #ifdef FEAT_TERMGUICOLORS if (p_tgc) { - if (cterm_normal_fg_gui_color != (long_u)INVALCOLOR) + if (cterm_normal_fg_gui_color != INVALCOLOR) term_fg_rgb_color(cterm_normal_fg_gui_color); - if (cterm_normal_bg_gui_color != (long_u)INVALCOLOR) + if (cterm_normal_bg_gui_color != INVALCOLOR) term_bg_rgb_color(cterm_normal_bg_gui_color); } else @@ -8049,10 +8049,9 @@ reset_cterm_colors(void) { /* set Normal cterm colors */ #ifdef FEAT_TERMGUICOLORS - if (p_tgc ? - (cterm_normal_fg_gui_color != (long_u)INVALCOLOR - || cterm_normal_bg_gui_color != (long_u)INVALCOLOR): - (cterm_normal_fg_color > 0 || cterm_normal_bg_color > 0)) + if (p_tgc ? (cterm_normal_fg_gui_color != INVALCOLOR + || cterm_normal_bg_gui_color != INVALCOLOR) + : (cterm_normal_fg_color > 0 || cterm_normal_bg_color > 0)) #else if (cterm_normal_fg_color > 0 || cterm_normal_bg_color > 0) #endif @@ -8983,7 +8982,7 @@ can_clear(char_u *p) || gui.in_use #endif #ifdef FEAT_TERMGUICOLORS - || (p_tgc && cterm_normal_bg_gui_color == (long_u)INVALCOLOR) + || (p_tgc && cterm_normal_bg_gui_color == INVALCOLOR) || (!p_tgc && cterm_normal_bg_color == 0) #else || cterm_normal_bg_color == 0 diff --git a/src/structs.h b/src/structs.h --- a/src/structs.h +++ b/src/structs.h @@ -92,8 +92,7 @@ typedef struct { # ifdef FEAT_XCLIPBOARD # include # endif -# define guicolor_T long_u /* avoid error in prototypes and - * make FEAT_TERMGUICOLORS work */ +# define guicolor_T long # define INVALCOLOR ((guicolor_T)0x1ffffff) #endif @@ -929,8 +928,8 @@ typedef struct attr_entry short_u fg_color; /* foreground color number */ short_u bg_color; /* background color number */ # ifdef FEAT_TERMGUICOLORS - long_u fg_rgb; /* foreground color RGB */ - long_u bg_rgb; /* background color RGB */ + guicolor_T fg_rgb; /* foreground color RGB */ + guicolor_T bg_rgb; /* background color RGB */ # endif } cterm; # ifdef FEAT_GUI diff --git a/src/syntax.c b/src/syntax.c --- a/src/syntax.c +++ b/src/syntax.c @@ -8488,7 +8488,7 @@ color_name2handle(char_u *name) return gui.norm_pixel; #endif #ifdef FEAT_TERMGUICOLORS - if (cterm_normal_fg_gui_color != (long_u)INVALCOLOR) + if (cterm_normal_fg_gui_color != INVALCOLOR) return cterm_normal_fg_gui_color; /* Guess that the foreground is black or white. */ return GUI_GET_COLOR((char_u *)(*p_bg == 'l' ? "black" : "white")); @@ -8503,7 +8503,7 @@ color_name2handle(char_u *name) return gui.back_pixel; #endif #ifdef FEAT_TERMGUICOLORS - if (cterm_normal_bg_gui_color != (long_u)INVALCOLOR) + if (cterm_normal_bg_gui_color != INVALCOLOR) return cterm_normal_bg_gui_color; /* Guess that the background is white or black. */ return GUI_GET_COLOR((char_u *)(*p_bg == 'l' ? "white" : "black")); @@ -8782,9 +8782,9 @@ hl_combine_attr(int char_attr, int prim_ if (spell_aep->ae_u.cterm.bg_color > 0) new_en.ae_u.cterm.bg_color = spell_aep->ae_u.cterm.bg_color; #ifdef FEAT_TERMGUICOLORS - if (spell_aep->ae_u.cterm.fg_rgb != (long_u)INVALCOLOR) + if (spell_aep->ae_u.cterm.fg_rgb != INVALCOLOR) new_en.ae_u.cterm.fg_rgb = spell_aep->ae_u.cterm.fg_rgb; - if (spell_aep->ae_u.cterm.bg_rgb != (long_u)INVALCOLOR) + if (spell_aep->ae_u.cterm.bg_rgb != INVALCOLOR) new_en.ae_u.cterm.bg_rgb = spell_aep->ae_u.cterm.bg_rgb; #endif } @@ -9076,7 +9076,7 @@ highlight_color( color = HL_TABLE()[id - 1].sg_gui_bg; if (color == INVALCOLOR) return NULL; - rgb = GUI_MCH_GET_RGB(color); + rgb = (long_u)GUI_MCH_GET_RGB(color); sprintf((char *)buf, "#%02x%02x%02x", (unsigned)(rgb >> 16), (unsigned)(rgb >> 8) & 255, diff --git a/src/term.c b/src/term.c --- a/src/term.c +++ b/src/term.c @@ -77,9 +77,6 @@ struct builtin_term static struct builtin_term *find_builtin_term(char_u *name); static void parse_builtin_tcap(char_u *s); static void term_color(char_u *s, int n); -#ifdef FEAT_TERMGUICOLORS -static void term_rgb_color(char_u *s, long_u rgb); -#endif static void gather_termleader(void); #ifdef FEAT_TERMRESPONSE static void req_codes_from_term(void); @@ -1282,10 +1279,10 @@ termgui_get_color(char_u *name) return t; } - long_u + guicolor_T termgui_mch_get_rgb(guicolor_T color) { - return (long_u)color; + return color; } #endif @@ -2634,24 +2631,13 @@ term_color(char_u *s, int n) } #if defined(FEAT_TERMGUICOLORS) || defined(PROTO) - void -term_fg_rgb_color(long_u rgb) -{ - term_rgb_color(T_8F, rgb); -} - - void -term_bg_rgb_color(long_u rgb) -{ - term_rgb_color(T_8B, rgb); -} - -#define RED(rgb) ((rgb>>16)&0xFF) -#define GREEN(rgb) ((rgb>> 8)&0xFF) -#define BLUE(rgb) ((rgb )&0xFF) + +#define RED(rgb) (((long_u)(rgb) >> 16) & 0xFF) +#define GREEN(rgb) (((long_u)(rgb) >> 8) & 0xFF) +#define BLUE(rgb) (((long_u)(rgb) ) & 0xFF) static void -term_rgb_color(char_u *s, long_u rgb) +term_rgb_color(char_u *s, guicolor_T rgb) { #define MAX_COLOR_STR_LEN 100 char buf[MAX_COLOR_STR_LEN]; @@ -2660,6 +2646,18 @@ term_rgb_color(char_u *s, long_u rgb) (char *)s, RED(rgb), GREEN(rgb), BLUE(rgb)); OUT_STR(buf); } + + void +term_fg_rgb_color(guicolor_T rgb) +{ + term_rgb_color(T_8F, rgb); +} + + void +term_bg_rgb_color(guicolor_T rgb) +{ + term_rgb_color(T_8B, rgb); +} #endif #if (defined(FEAT_TITLE) && (defined(UNIX) || defined(VMS) \ diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -764,6 +764,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2243, +/**/ 2242, /**/ 2241,