mirror of
https://github.com/vim/vim
synced 2025-07-16 09:12:00 +00:00
updated for version 7.0060
This commit is contained in:
@ -2966,6 +2966,8 @@ gui_mch_init(void)
|
||||
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);
|
||||
|
||||
/* Initialise atoms */
|
||||
#ifdef FEAT_MBYTE
|
||||
@ -4984,6 +4986,15 @@ gui_mch_set_bg_color(guicolor_T color)
|
||||
gui.bgcolor->pixel = (unsigned long)color;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set the current text special color.
|
||||
*/
|
||||
void
|
||||
gui_mch_set_sp_color(guicolor_T color)
|
||||
{
|
||||
gui.spcolor->pixel = (unsigned long)color;
|
||||
}
|
||||
|
||||
#ifdef HAVE_GTK2
|
||||
/*
|
||||
* Function-like convenience macro for the sake of efficiency.
|
||||
@ -5163,6 +5174,42 @@ draw_glyph_string(int row, int col, int num_cells, int flags,
|
||||
|
||||
#endif /* HAVE_GTK2 */
|
||||
|
||||
/*
|
||||
* Draw underline and undercurl at the bottom of the character cell.
|
||||
*/
|
||||
static void
|
||||
draw_under(int flags, int row, int col, int cells)
|
||||
{
|
||||
int i;
|
||||
int offset;
|
||||
const static int val[8] = {1, 0, 0, 0, 1, 2, 2, 2 };
|
||||
int y = FILL_Y(row + 1) - 1;
|
||||
|
||||
/* Undercurl: draw curl at the bottom of the character cell. */
|
||||
if (flags & DRAW_UNDERC)
|
||||
{
|
||||
gdk_gc_set_foreground(gui.text_gc, gui.spcolor);
|
||||
for (i = FILL_X(col); i < FILL_X(col + cells); ++i)
|
||||
{
|
||||
offset = val[i % 8];
|
||||
gdk_draw_point(gui.drawarea->window, gui.text_gc, i, y - offset);
|
||||
}
|
||||
gdk_gc_set_foreground(gui.text_gc, gui.fgcolor);
|
||||
}
|
||||
|
||||
/* Underline: draw a line at the bottom of the character cell. */
|
||||
if (flags & DRAW_UNDERL)
|
||||
{
|
||||
/* When p_linespace is 0, overwrite the bottom row of pixels.
|
||||
* Otherwise put the line just below the character. */
|
||||
if (p_linespace > 1)
|
||||
y -= p_linespace - 1;
|
||||
gdk_draw_line(gui.drawarea->window, gui.text_gc,
|
||||
FILL_X(col), y,
|
||||
FILL_X(col + cells) - 1, y);
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(HAVE_GTK2) || defined(PROTO)
|
||||
int
|
||||
gui_gtk2_draw_string(int row, int col, char_u *s, int len, int flags)
|
||||
@ -5413,13 +5460,8 @@ not_ascii:
|
||||
}
|
||||
|
||||
skipitall:
|
||||
if (flags & DRAW_UNDERL)
|
||||
gdk_draw_line(gui.drawarea->window,
|
||||
gui.text_gc,
|
||||
FILL_X(col),
|
||||
FILL_Y(row + 1) - 1,
|
||||
FILL_X(col + column_offset) - 1,
|
||||
FILL_Y(row + 1) - 1);
|
||||
/* Draw underline and undercurl. */
|
||||
draw_under(flags, row, col, column_offset);
|
||||
|
||||
pango_glyph_string_free(glyphs);
|
||||
vim_free(conv_buf);
|
||||
@ -5544,12 +5586,8 @@ gui_mch_draw_string(int row, int col, char_u *s, int len, int flags)
|
||||
TEXT_X(col) + 1, TEXT_Y(row),
|
||||
(const gchar *)text, textlen);
|
||||
|
||||
if (flags & DRAW_UNDERL)
|
||||
{
|
||||
gdk_draw_line(gui.drawarea->window,
|
||||
gui.text_gc, FILL_X(col),
|
||||
FILL_Y(row + 1) - 1, FILL_X(col + width) - 1, FILL_Y(row + 1) - 1);
|
||||
}
|
||||
/* Draw underline and undercurl. */
|
||||
draw_under(flags, row, col, width);
|
||||
}
|
||||
#endif /* !HAVE_GTK2 */
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
/* gui_beval.c */
|
||||
extern void general_beval_cb __ARGS((BalloonEval *beval, int state));
|
||||
extern BalloonEval *gui_mch_create_beval_area __ARGS((void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData));
|
||||
extern void gui_mch_destroy_beval_area __ARGS((BalloonEval *beval));
|
||||
extern void gui_mch_enable_beval_area __ARGS((BalloonEval *beval));
|
||||
extern void gui_mch_disable_beval_area __ARGS((BalloonEval *beval));
|
||||
extern BalloonEval *gui_mch_currently_showing_beval __ARGS((void));
|
||||
extern int get_beval_info __ARGS((BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp));
|
||||
extern void gui_mch_post_balloon __ARGS((BalloonEval *beval, char_u *mesg));
|
||||
extern void gui_mch_unpost_balloon __ARGS((BalloonEval *beval));
|
||||
void general_beval_cb __ARGS((BalloonEval *beval, int state));
|
||||
BalloonEval *gui_mch_create_beval_area __ARGS((void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData));
|
||||
void gui_mch_destroy_beval_area __ARGS((BalloonEval *beval));
|
||||
void gui_mch_enable_beval_area __ARGS((BalloonEval *beval));
|
||||
void gui_mch_disable_beval_area __ARGS((BalloonEval *beval));
|
||||
BalloonEval *gui_mch_currently_showing_beval __ARGS((void));
|
||||
int get_beval_info __ARGS((BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp));
|
||||
void gui_mch_post_balloon __ARGS((BalloonEval *beval, char_u *mesg));
|
||||
void gui_mch_unpost_balloon __ARGS((BalloonEval *beval));
|
||||
/* vim: set ft=c : */
|
||||
|
Reference in New Issue
Block a user