]> granicus.if.org Git - vim/commitdiff
patch 9.0.1158: code is indented more than necessary v9.0.1158
authorYegappan Lakshmanan <yegappan@yahoo.com>
Sun, 8 Jan 2023 13:44:24 +0000 (13:44 +0000)
committerBram Moolenaar <Bram@vim.org>
Sun, 8 Jan 2023 13:44:24 +0000 (13:44 +0000)
Problem:    Code is indented more than necessary.
Solution:   Use an early return where it makes sense. (Yegappan Lakshmanan,
            closes #11787)

14 files changed:
src/findfile.c
src/fold.c
src/getchar.c
src/gui.c
src/gui_beval.c
src/gui_gtk.c
src/gui_gtk_f.c
src/gui_gtk_x11.c
src/gui_motif.c
src/gui_photon.c
src/gui_w32.c
src/gui_x11.c
src/gui_xim.c
src/version.c

index 9ce733cfd687e60d0dffe4031b4cf5011a822fe7..017e1c6629399ca206e0ba77489403aec8d8f564 100644 (file)
@@ -1426,11 +1426,11 @@ ff_push(ff_search_ctx_T *search_ctx, ff_stack_T *stack_ptr)
 {
     // check for NULL pointer, not to return an error to the user, but
     // to prevent a crash
-    if (stack_ptr != NULL)
-    {
-       stack_ptr->ffs_prev = search_ctx->ffsc_stack_ptr;
-       search_ctx->ffsc_stack_ptr = stack_ptr;
-    }
+    if (stack_ptr == NULL)
+       return;
+
+    stack_ptr->ffs_prev = search_ctx->ffsc_stack_ptr;
+    search_ctx->ffsc_stack_ptr = stack_ptr;
 }
 
 /*
index d722a56d0c7ff9cb4b33b9c9fa691f63881877d2..61bffb5d01fcb103a31f81a6ff1c51aef190d324 100644 (file)
@@ -513,13 +513,14 @@ newFoldLevelWin(win_T *wp)
     void
 foldCheckClose(void)
 {
-    if (*p_fcl != NUL) // can only be "all" right now
-    {
-       checkupdate(curwin);
-       if (checkCloseRec(&curwin->w_folds, curwin->w_cursor.lnum,
-                                                       (int)curwin->w_p_fdl))
-           changed_window_setting();
-    }
+    if (*p_fcl == NUL)
+       return;
+
+    // can only be "all" right now
+    checkupdate(curwin);
+    if (checkCloseRec(&curwin->w_folds, curwin->w_cursor.lnum,
+               (int)curwin->w_p_fdl))
+       changed_window_setting();
 }
 
 // checkCloseRec() {{{2
@@ -1077,16 +1078,17 @@ foldAdjustVisual(void)
     }
     if (hasFolding(start->lnum, &start->lnum, NULL))
        start->col = 0;
-    if (hasFolding(end->lnum, NULL, &end->lnum))
-    {
-       ptr = ml_get(end->lnum);
-       end->col = (colnr_T)STRLEN(ptr);
-       if (end->col > 0 && *p_sel == 'o')
-           --end->col;
-       // prevent cursor from moving on the trail byte
-       if (has_mbyte)
-           mb_adjust_cursor();
-    }
+
+    if (!hasFolding(end->lnum, NULL, &end->lnum))
+       return;
+
+    ptr = ml_get(end->lnum);
+    end->col = (colnr_T)STRLEN(ptr);
+    if (end->col > 0 && *p_sel == 'o')
+       --end->col;
+    // prevent cursor from moving on the trail byte
+    if (has_mbyte)
+       mb_adjust_cursor();
 }
 
 // cursor_foldstart() {{{2
@@ -1215,11 +1217,11 @@ foldLevelWin(win_T *wp, linenr_T lnum)
     static void
 checkupdate(win_T *wp)
 {
-    if (wp->w_foldinvalid)
-    {
-       foldUpdate(wp, (linenr_T)1, (linenr_T)MAXLNUM); // will update all
-       wp->w_foldinvalid = FALSE;
-    }
+    if (!wp->w_foldinvalid)
+       return;
+
+    foldUpdate(wp, (linenr_T)1, (linenr_T)MAXLNUM); // will update all
+    wp->w_foldinvalid = FALSE;
 }
 
 // setFoldRepeat() {{{2
index 3fd518b00d951c7d4ea6e9159410a79c1e0d5bce..2fb9baaf85c14fad247929c32cd332c84f7c5656 100644 (file)
@@ -259,11 +259,11 @@ delete_buff_tail(buffheader_T *buf, int slen)
     if (buf->bh_curr == NULL)
        return;  // nothing to delete
     len = (int)STRLEN(buf->bh_curr->b_str);
-    if (len >= slen)
-    {
-       buf->bh_curr->b_str[len - slen] = NUL;
-       buf->bh_space += slen;
-    }
+    if (len < slen)
+       return;
+
+    buf->bh_curr->b_str[len - slen] = NUL;
+    buf->bh_space += slen;
 }
 
 /*
@@ -478,12 +478,12 @@ flush_buffers(flush_buffers_T flush_typeahead)
     void
 ResetRedobuff(void)
 {
-    if (!block_redo)
-    {
-       free_buff(&old_redobuff);
-       old_redobuff = redobuff;
-       redobuff.bh_first.b_next = NULL;
-    }
+    if (block_redo)
+       return;
+
+    free_buff(&old_redobuff);
+    old_redobuff = redobuff;
+    redobuff.bh_first.b_next = NULL;
 }
 
 /*
@@ -493,15 +493,15 @@ ResetRedobuff(void)
     void
 CancelRedo(void)
 {
-    if (!block_redo)
-    {
-       free_buff(&redobuff);
-       redobuff = old_redobuff;
-       old_redobuff.bh_first.b_next = NULL;
-       start_stuff();
-       while (read_readbuffers(TRUE) != NUL)
-           ;
-    }
+    if (block_redo)
+       return;
+
+    free_buff(&redobuff);
+    redobuff = old_redobuff;
+    old_redobuff.bh_first.b_next = NULL;
+    start_stuff();
+    while (read_readbuffers(TRUE) != NUL)
+       ;
 }
 
 /*
@@ -520,11 +520,11 @@ saveRedobuff(save_redo_T *save_redo)
 
     // Make a copy, so that ":normal ." in a function works.
     s = get_buffcont(&save_redo->sr_redobuff, FALSE);
-    if (s != NULL)
-    {
-       add_buff(&redobuff, s, -1L);
-       vim_free(s);
-    }
+    if (s == NULL)
+       return;
+
+    add_buff(&redobuff, s, -1L);
+    vim_free(s);
 }
 
 /*
@@ -944,15 +944,15 @@ stop_redo_ins(void)
     static void
 init_typebuf(void)
 {
-    if (typebuf.tb_buf == NULL)
-    {
-       typebuf.tb_buf = typebuf_init;
-       typebuf.tb_noremap = noremapbuf_init;
-       typebuf.tb_buflen = TYPELEN_INIT;
-       typebuf.tb_len = 0;
-       typebuf.tb_off = MAXMAPLEN + 4;
-       typebuf.tb_change_cnt = 1;
-    }
+    if (typebuf.tb_buf != NULL)
+       return;
+
+    typebuf.tb_buf = typebuf_init;
+    typebuf.tb_noremap = noremapbuf_init;
+    typebuf.tb_buflen = TYPELEN_INIT;
+    typebuf.tb_len = 0;
+    typebuf.tb_off = MAXMAPLEN + 4;
+    typebuf.tb_change_cnt = 1;
 }
 
 /*
@@ -1324,11 +1324,11 @@ gotchars(char_u *chars, int len)
     void
 ungetchars(int len)
 {
-    if (reg_recording != 0)
-    {
-       delete_buff_tail(&recordbuff, len);
-       last_recorded_len -= len;
-    }
+    if (reg_recording == 0)
+       return;
+
+    delete_buff_tail(&recordbuff, len);
+    last_recorded_len -= len;
 }
 
 /*
@@ -2230,23 +2230,23 @@ f_getcharstr(typval_T *argvars, typval_T *rettv)
 {
     getchar_common(argvars, rettv);
 
-    if (rettv->v_type == VAR_NUMBER)
-    {
-       char_u          temp[7];   // mbyte-char: 6, NUL: 1
-       varnumber_T     n = rettv->vval.v_number;
-       int             i = 0;
+    if (rettv->v_type != VAR_NUMBER)
+       return;
 
-       if (n != 0)
-       {
-           if (has_mbyte)
-               i += (*mb_char2bytes)(n, temp + i);
-           else
-               temp[i++] = n;
-       }
-       temp[i++] = NUL;
-       rettv->v_type = VAR_STRING;
-       rettv->vval.v_string = vim_strsave(temp);
+    char_u             temp[7];   // mbyte-char: 6, NUL: 1
+    varnumber_T        n = rettv->vval.v_number;
+    int                i = 0;
+
+    if (n != 0)
+    {
+       if (has_mbyte)
+           i += (*mb_char2bytes)(n, temp + i);
+       else
+           temp[i++] = n;
     }
+    temp[i++] = NUL;
+    rettv->v_type = VAR_STRING;
+    rettv->vval.v_string = vim_strsave(temp);
 }
 
 /*
@@ -4031,10 +4031,10 @@ do_cmdkey_command(int key UNUSED, int flags)
     void
 reset_last_used_map(mapblock_T *mp)
 {
-    if (last_used_map == mp)
-    {
-       last_used_map = NULL;
-       last_used_sid = -1;
-    }
+    if (last_used_map != mp)
+       return;
+
+    last_used_map = NULL;
+    last_used_sid = -1;
 }
 #endif
index 585ead00d5a492ebb752b319ffac922e549e734b..b8910054b0e5d36ca229b74141e8b8f2d614a499 100644 (file)
--- a/src/gui.c
+++ b/src/gui.c
@@ -1171,71 +1171,73 @@ gui_update_cursor(
        return;
 
     gui_check_pos();
-    if (!gui.cursor_is_valid || force
-                   || gui.row != gui.cursor_row || gui.col != gui.cursor_col)
-    {
-       gui_undraw_cursor();
 
-       // If a cursor-less sleep is ongoing, leave the cursor invisible
-       if (cursor_is_sleeping())
-           return;
+    if (gui.cursor_is_valid && !force
+               && gui.row == gui.cursor_row && gui.col == gui.cursor_col)
+       return;
 
-       if (gui.row < 0)
-           return;
+    gui_undraw_cursor();
+
+    // If a cursor-less sleep is ongoing, leave the cursor invisible
+    if (cursor_is_sleeping())
+       return;
+
+    if (gui.row < 0)
+       return;
 #ifdef HAVE_INPUT_METHOD
-       if (gui.row != gui.cursor_row || gui.col != gui.cursor_col)
-           im_set_position(gui.row, gui.col);
+    if (gui.row != gui.cursor_row || gui.col != gui.cursor_col)
+       im_set_position(gui.row, gui.col);
 #endif
-       gui.cursor_row = gui.row;
-       gui.cursor_col = gui.col;
+    gui.cursor_row = gui.row;
+    gui.cursor_col = gui.col;
 
-       // Only write to the screen after ScreenLines[] has been initialized
-       if (!screen_cleared || ScreenLines == NULL)
-           return;
+    // Only write to the screen after ScreenLines[] has been initialized
+    if (!screen_cleared || ScreenLines == NULL)
+       return;
 
-       // Clear the selection if we are about to write over it
-       if (clear_selection)
-           clip_may_clear_selection(gui.row, gui.row);
-       // Check that the cursor is inside the shell (resizing may have made
-       // it invalid)
-       if (gui.row >= screen_Rows || gui.col >= screen_Columns)
-           return;
+    // Clear the selection if we are about to write over it
+    if (clear_selection)
+       clip_may_clear_selection(gui.row, gui.row);
+    // Check that the cursor is inside the shell (resizing may have made
+    // it invalid)
+    if (gui.row >= screen_Rows || gui.col >= screen_Columns)
+       return;
 
-       gui.cursor_is_valid = TRUE;
+    gui.cursor_is_valid = TRUE;
 
-       /*
-        * How the cursor is drawn depends on the current mode.
-        * When in a terminal window use the shape/color specified there.
-        */
+    /*
+     * How the cursor is drawn depends on the current mode.
+     * When in a terminal window use the shape/color specified there.
+     */
 #ifdef FEAT_TERMINAL
-       if (terminal_is_active())
-           shape = term_get_cursor_shape(&shape_fg, &shape_bg);
-       else
+    if (terminal_is_active())
+       shape = term_get_cursor_shape(&shape_fg, &shape_bg);
+    else
 #endif
-           shape = &shape_table[get_shape_idx(FALSE)];
-       if (State & MODE_LANGMAP)
-           id = shape->id_lm;
-       else
-           id = shape->id;
-
-       // get the colors and attributes for the cursor.  Default is inverted
-       cfg = INVALCOLOR;
-       cbg = INVALCOLOR;
-       cattr = HL_INVERSE;
-       gui_mch_set_blinking(shape->blinkwait,
-                            shape->blinkon,
-                            shape->blinkoff);
-       if (shape->blinkwait == 0 || shape->blinkon == 0
-                                                      || shape->blinkoff == 0)
-           gui_mch_stop_blink(FALSE);
+       shape = &shape_table[get_shape_idx(FALSE)];
+    if (State & MODE_LANGMAP)
+       id = shape->id_lm;
+    else
+       id = shape->id;
+
+    // get the colors and attributes for the cursor.  Default is inverted
+    cfg = INVALCOLOR;
+    cbg = INVALCOLOR;
+    cattr = HL_INVERSE;
+    gui_mch_set_blinking(shape->blinkwait,
+           shape->blinkon,
+           shape->blinkoff);
+    if (shape->blinkwait == 0 || shape->blinkon == 0
+           || shape->blinkoff == 0)
+       gui_mch_stop_blink(FALSE);
 #ifdef FEAT_TERMINAL
-       if (shape_bg != INVALCOLOR)
-       {
-           cattr = 0;
-           cfg = shape_fg;
-           cbg = shape_bg;
-       }
-       else
+    if (shape_bg != INVALCOLOR)
+    {
+       cattr = 0;
+       cfg = shape_fg;
+       cbg = shape_bg;
+    }
+    else
 #endif
        if (id > 0)
        {
@@ -1251,7 +1253,7 @@ gui_update_cursor(
 # else
                        im_get_status()
 # endif
-                       )
+                  )
                {
                    iid = syn_name2id((char_u *)"CursorIM");
                    if (iid > 0)
@@ -1267,132 +1269,131 @@ gui_update_cursor(
 #endif
        }
 
-       /*
-        * Get the attributes for the character under the cursor.
-        * When no cursor color was given, use the character color.
-        */
-       attr = ScreenAttrs[LineOffset[gui.row] + gui.col];
-       if (attr > HL_ALL)
-           aep = syn_gui_attr2entry(attr);
-       if (aep != NULL)
-       {
-           attr = aep->ae_attr;
-           if (cfg == INVALCOLOR)
-               cfg = ((attr & HL_INVERSE)  ? aep->ae_u.gui.bg_color
-                                           : aep->ae_u.gui.fg_color);
-           if (cbg == INVALCOLOR)
-               cbg = ((attr & HL_INVERSE)  ? aep->ae_u.gui.fg_color
-                                           : aep->ae_u.gui.bg_color);
-       }
+    /*
+     * Get the attributes for the character under the cursor.
+     * When no cursor color was given, use the character color.
+     */
+    attr = ScreenAttrs[LineOffset[gui.row] + gui.col];
+    if (attr > HL_ALL)
+       aep = syn_gui_attr2entry(attr);
+    if (aep != NULL)
+    {
+       attr = aep->ae_attr;
        if (cfg == INVALCOLOR)
-           cfg = (attr & HL_INVERSE) ? gui.back_pixel : gui.norm_pixel;
+           cfg = ((attr & HL_INVERSE)  ? aep->ae_u.gui.bg_color
+                   : aep->ae_u.gui.fg_color);
        if (cbg == INVALCOLOR)
-           cbg = (attr & HL_INVERSE) ? gui.norm_pixel : gui.back_pixel;
+           cbg = ((attr & HL_INVERSE)  ? aep->ae_u.gui.fg_color
+                   : aep->ae_u.gui.bg_color);
+    }
+    if (cfg == INVALCOLOR)
+       cfg = (attr & HL_INVERSE) ? gui.back_pixel : gui.norm_pixel;
+    if (cbg == INVALCOLOR)
+       cbg = (attr & HL_INVERSE) ? gui.norm_pixel : gui.back_pixel;
 
 #ifdef FEAT_XIM
-       if (aep != NULL)
-       {
-           xim_bg_color = ((attr & HL_INVERSE) ? aep->ae_u.gui.fg_color
-                                               : aep->ae_u.gui.bg_color);
-           xim_fg_color = ((attr & HL_INVERSE) ? aep->ae_u.gui.bg_color
-                                               : aep->ae_u.gui.fg_color);
-           if (xim_bg_color == INVALCOLOR)
-               xim_bg_color = (attr & HL_INVERSE) ? gui.norm_pixel
-                                                  : gui.back_pixel;
-           if (xim_fg_color == INVALCOLOR)
-               xim_fg_color = (attr & HL_INVERSE) ? gui.back_pixel
-                                                  : gui.norm_pixel;
-       }
-       else
-       {
+    if (aep != NULL)
+    {
+       xim_bg_color = ((attr & HL_INVERSE) ? aep->ae_u.gui.fg_color
+               : aep->ae_u.gui.bg_color);
+       xim_fg_color = ((attr & HL_INVERSE) ? aep->ae_u.gui.bg_color
+               : aep->ae_u.gui.fg_color);
+       if (xim_bg_color == INVALCOLOR)
            xim_bg_color = (attr & HL_INVERSE) ? gui.norm_pixel
-                                              : gui.back_pixel;
+               : gui.back_pixel;
+       if (xim_fg_color == INVALCOLOR)
            xim_fg_color = (attr & HL_INVERSE) ? gui.back_pixel
-                                              : gui.norm_pixel;
-       }
+               : gui.norm_pixel;
+    }
+    else
+    {
+       xim_bg_color = (attr & HL_INVERSE) ? gui.norm_pixel
+           : gui.back_pixel;
+       xim_fg_color = (attr & HL_INVERSE) ? gui.back_pixel
+           : gui.norm_pixel;
+    }
 #endif
 
-       attr &= ~HL_INVERSE;
-       if (cattr & HL_INVERSE)
-       {
-           cc = cbg;
-           cbg = cfg;
-           cfg = cc;
-       }
-       cattr &= ~HL_INVERSE;
+    attr &= ~HL_INVERSE;
+    if (cattr & HL_INVERSE)
+    {
+       cc = cbg;
+       cbg = cfg;
+       cfg = cc;
+    }
+    cattr &= ~HL_INVERSE;
+
+    /*
+     * When we don't have window focus, draw a hollow cursor.
+     */
+    if (!gui.in_focus)
+    {
+       gui_mch_draw_hollow_cursor(cbg);
+       return;
+    }
 
+    old_hl_mask = gui.highlight_mask;
+    if (shape->shape == SHAPE_BLOCK)
+    {
        /*
-        * When we don't have window focus, draw a hollow cursor.
+        * Draw the text character with the cursor colors.      Use the
+        * character attributes plus the cursor attributes.
         */
-       if (!gui.in_focus)
+       gui.highlight_mask = (cattr | attr);
+       (void)gui_screenchar(LineOffset[gui.row] + gui.col,
+               GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, cfg, cbg, 0);
+    }
+    else
+    {
+#if defined(FEAT_RIGHTLEFT)
+       int         col_off = FALSE;
+#endif
+       /*
+        * First draw the partial cursor, then overwrite with the text
+        * character, using a transparent background.
+        */
+       if (shape->shape == SHAPE_VER)
        {
-           gui_mch_draw_hollow_cursor(cbg);
-           return;
+           cur_height = gui.char_height;
+           cur_width = (gui.char_width * shape->percentage + 99) / 100;
        }
-
-       old_hl_mask = gui.highlight_mask;
-       if (shape->shape == SHAPE_BLOCK)
+       else
        {
-           /*
-            * Draw the text character with the cursor colors.  Use the
-            * character attributes plus the cursor attributes.
-            */
-           gui.highlight_mask = (cattr | attr);
-           (void)gui_screenchar(LineOffset[gui.row] + gui.col,
-                       GUI_MON_IS_CURSOR | GUI_MON_NOCLEAR, cfg, cbg, 0);
+           cur_height = (gui.char_height * shape->percentage + 99) / 100;
+           cur_width = gui.char_width;
        }
-       else
+       if (has_mbyte && (*mb_off2cells)(LineOffset[gui.row] + gui.col,
+                   LineOffset[gui.row] + screen_Columns) > 1)
        {
-#if defined(FEAT_RIGHTLEFT)
-           int     col_off = FALSE;
-#endif
-           /*
-            * First draw the partial cursor, then overwrite with the text
-            * character, using a transparent background.
-            */
-           if (shape->shape == SHAPE_VER)
-           {
-               cur_height = gui.char_height;
-               cur_width = (gui.char_width * shape->percentage + 99) / 100;
-           }
-           else
+           // Double wide character.
+           if (shape->shape != SHAPE_VER)
+               cur_width += gui.char_width;
+#ifdef FEAT_RIGHTLEFT
+           if (CURSOR_BAR_RIGHT)
            {
-               cur_height = (gui.char_height * shape->percentage + 99) / 100;
-               cur_width = gui.char_width;
+               // gui.col points to the left half of the character but
+               // the vertical line needs to be on the right half.
+               // A double-wide horizontal line is also drawn from the
+               // right half in gui_mch_draw_part_cursor().
+               col_off = TRUE;
+               ++gui.col;
            }
-           if (has_mbyte && (*mb_off2cells)(LineOffset[gui.row] + gui.col,
-                                   LineOffset[gui.row] + screen_Columns) > 1)
-           {
-               // Double wide character.
-               if (shape->shape != SHAPE_VER)
-                   cur_width += gui.char_width;
-#ifdef FEAT_RIGHTLEFT
-               if (CURSOR_BAR_RIGHT)
-               {
-                   // gui.col points to the left half of the character but
-                   // the vertical line needs to be on the right half.
-                   // A double-wide horizontal line is also drawn from the
-                   // right half in gui_mch_draw_part_cursor().
-                   col_off = TRUE;
-                   ++gui.col;
-               }
 #endif
-           }
-           gui_mch_draw_part_cursor(cur_width, cur_height, cbg);
+       }
+       gui_mch_draw_part_cursor(cur_width, cur_height, cbg);
 #if defined(FEAT_RIGHTLEFT)
-           if (col_off)
-               --gui.col;
+       if (col_off)
+           --gui.col;
 #endif
 
 #ifndef FEAT_GUI_MSWIN     // doesn't seem to work for MSWindows
-           gui.highlight_mask = ScreenAttrs[LineOffset[gui.row] + gui.col];
-           (void)gui_screenchar(LineOffset[gui.row] + gui.col,
-                   GUI_MON_TRS_CURSOR | GUI_MON_NOCLEAR,
-                   (guicolor_T)0, (guicolor_T)0, 0);
+       gui.highlight_mask = ScreenAttrs[LineOffset[gui.row] + gui.col];
+       (void)gui_screenchar(LineOffset[gui.row] + gui.col,
+               GUI_MON_TRS_CURSOR | GUI_MON_NOCLEAR,
+               (guicolor_T)0, (guicolor_T)0, 0);
 #endif
-       }
-       gui.highlight_mask = old_hl_mask;
     }
+    gui.highlight_mask = old_hl_mask;
 }
 
 #if defined(FEAT_MENU) || defined(PROTO)
@@ -2054,13 +2055,13 @@ gui_write(
     void
 gui_dont_update_cursor(int undraw)
 {
-    if (gui.in_use)
-    {
-       // Undraw the cursor now, we probably can't do it after the change.
-       if (undraw)
-           gui_undraw_cursor();
-       can_update_cursor = FALSE;
-    }
+    if (!gui.in_use)
+       return;
+
+    // Undraw the cursor now, we probably can't do it after the change.
+    if (undraw)
+       gui_undraw_cursor();
+    can_update_cursor = FALSE;
 }
 
     void
@@ -2679,23 +2680,23 @@ gui_outstr_nowrap(
     void
 gui_undraw_cursor(void)
 {
-    if (gui.cursor_is_valid)
-    {
-       // Always redraw the character just before if there is one, because
-       // with some fonts and characters there can be a one pixel overlap.
-       int startcol = gui.cursor_col > 0 ? gui.cursor_col - 1 : gui.cursor_col;
-       int endcol = gui.cursor_col;
+    if (!gui.cursor_is_valid)
+       return;
+
+    // Always redraw the character just before if there is one, because
+    // with some fonts and characters there can be a one pixel overlap.
+    int startcol = gui.cursor_col > 0 ? gui.cursor_col - 1 : gui.cursor_col;
+    int endcol = gui.cursor_col;
 
 #ifdef FEAT_GUI_GTK
-       gui_adjust_undraw_cursor_for_ligatures(&startcol, &endcol);
+    gui_adjust_undraw_cursor_for_ligatures(&startcol, &endcol);
 #endif
-       gui_redraw_block(gui.cursor_row, startcol,
-                                     gui.cursor_row, endcol, GUI_MON_NOCLEAR);
+    gui_redraw_block(gui.cursor_row, startcol,
+           gui.cursor_row, endcol, GUI_MON_NOCLEAR);
 
-       // Cursor_is_valid is reset when the cursor is undrawn, also reset it
-       // here in case it wasn't needed to undraw it.
-       gui.cursor_is_valid = FALSE;
-    }
+    // Cursor_is_valid is reset when the cursor is undrawn, also reset it
+    // here in case it wasn't needed to undraw it.
+    gui.cursor_is_valid = FALSE;
 }
 
     void
@@ -3559,137 +3560,137 @@ gui_init_which_components(char_u *oldval UNUSED)
                break;
        }
 
-    if (gui.in_use)
-    {
-       need_set_size = 0;
-       fix_size = FALSE;
+    if (!gui.in_use)
+       return;
+
+    need_set_size = 0;
+    fix_size = FALSE;
 
 #ifdef FEAT_GUI_DARKTHEME
-       if (using_dark_theme != prev_dark_theme)
-       {
-           gui_mch_set_dark_theme(using_dark_theme);
-           prev_dark_theme = using_dark_theme;
-       }
+    if (using_dark_theme != prev_dark_theme)
+    {
+       gui_mch_set_dark_theme(using_dark_theme);
+       prev_dark_theme = using_dark_theme;
+    }
 #endif
 
 #ifdef FEAT_GUI_TABLINE
-       // Update the GUI tab line, it may appear or disappear.  This may
-       // cause the non-GUI tab line to disappear or appear.
-       using_tabline = gui_has_tabline();
-       if (!gui_mch_showing_tabline() != !using_tabline)
-       {
-           // We don't want a resize event change "Rows" here, save and
-           // restore it.  Resizing is handled below.
-           i = Rows;
-           gui_update_tabline();
-           Rows = i;
-           need_set_size |= RESIZE_VERT;
-           if (using_tabline)
-               fix_size = TRUE;
-           if (!gui_use_tabline())
-               redraw_tabline = TRUE;    // may draw non-GUI tab line
-       }
+    // Update the GUI tab line, it may appear or disappear.  This may
+    // cause the non-GUI tab line to disappear or appear.
+    using_tabline = gui_has_tabline();
+    if (!gui_mch_showing_tabline() != !using_tabline)
+    {
+       // We don't want a resize event change "Rows" here, save and
+       // restore it.  Resizing is handled below.
+       i = Rows;
+       gui_update_tabline();
+       Rows = i;
+       need_set_size |= RESIZE_VERT;
+       if (using_tabline)
+           fix_size = TRUE;
+       if (!gui_use_tabline())
+           redraw_tabline = TRUE;    // may draw non-GUI tab line
+    }
 #endif
 
-       for (i = 0; i < 3; i++)
+    for (i = 0; i < 3; i++)
+    {
+       // The scrollbar needs to be updated when it is shown/unshown and
+       // when switching tab pages.  But the size only changes when it's
+       // shown/unshown.  Thus we need two places to remember whether a
+       // scrollbar is there or not.
+       if (gui.which_scrollbars[i] != prev_which_scrollbars[i]
+               || gui.which_scrollbars[i]
+               != curtab->tp_prev_which_scrollbars[i])
        {
-           // The scrollbar needs to be updated when it is shown/unshown and
-           // when switching tab pages.  But the size only changes when it's
-           // shown/unshown.  Thus we need two places to remember whether a
-           // scrollbar is there or not.
-           if (gui.which_scrollbars[i] != prev_which_scrollbars[i]
-                   || gui.which_scrollbars[i]
-                                       != curtab->tp_prev_which_scrollbars[i])
+           if (i == SBAR_BOTTOM)
+               gui_mch_enable_scrollbar(&gui.bottom_sbar,
+                       gui.which_scrollbars[i]);
+           else
+           {
+               FOR_ALL_WINDOWS(wp)
+                   gui_do_scrollbar(wp, i, gui.which_scrollbars[i]);
+           }
+           if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
            {
                if (i == SBAR_BOTTOM)
-                   gui_mch_enable_scrollbar(&gui.bottom_sbar,
-                                                    gui.which_scrollbars[i]);
+                   need_set_size |= RESIZE_VERT;
                else
-               {
-                   FOR_ALL_WINDOWS(wp)
-                       gui_do_scrollbar(wp, i, gui.which_scrollbars[i]);
-               }
-               if (gui.which_scrollbars[i] != prev_which_scrollbars[i])
-               {
-                   if (i == SBAR_BOTTOM)
-                       need_set_size |= RESIZE_VERT;
-                   else
-                       need_set_size |= RESIZE_HOR;
-                   if (gui.which_scrollbars[i])
-                       fix_size = TRUE;
-               }
+                   need_set_size |= RESIZE_HOR;
+               if (gui.which_scrollbars[i])
+                   fix_size = TRUE;
            }
-           curtab->tp_prev_which_scrollbars[i] = gui.which_scrollbars[i];
-           prev_which_scrollbars[i] = gui.which_scrollbars[i];
        }
+       curtab->tp_prev_which_scrollbars[i] = gui.which_scrollbars[i];
+       prev_which_scrollbars[i] = gui.which_scrollbars[i];
+    }
 
 #ifdef FEAT_MENU
-       if (gui.menu_is_active != prev_menu_is_active)
-       {
-           // We don't want a resize event change "Rows" here, save and
-           // restore it.  Resizing is handled below.
-           i = Rows;
-           gui_mch_enable_menu(gui.menu_is_active);
-           Rows = i;
-           prev_menu_is_active = gui.menu_is_active;
-           need_set_size |= RESIZE_VERT;
-           if (gui.menu_is_active)
-               fix_size = TRUE;
-       }
+    if (gui.menu_is_active != prev_menu_is_active)
+    {
+       // We don't want a resize event change "Rows" here, save and
+       // restore it.  Resizing is handled below.
+       i = Rows;
+       gui_mch_enable_menu(gui.menu_is_active);
+       Rows = i;
+       prev_menu_is_active = gui.menu_is_active;
+       need_set_size |= RESIZE_VERT;
+       if (gui.menu_is_active)
+           fix_size = TRUE;
+    }
 #endif
 
 #ifdef FEAT_TOOLBAR
-       if (using_toolbar != prev_toolbar)
-       {
-           gui_mch_show_toolbar(using_toolbar);
-           prev_toolbar = using_toolbar;
-           need_set_size |= RESIZE_VERT;
-           if (using_toolbar)
-               fix_size = TRUE;
-       }
+    if (using_toolbar != prev_toolbar)
+    {
+       gui_mch_show_toolbar(using_toolbar);
+       prev_toolbar = using_toolbar;
+       need_set_size |= RESIZE_VERT;
+       if (using_toolbar)
+           fix_size = TRUE;
+    }
 #endif
 #if defined(FEAT_MENU) && !(defined(MSWIN) && !defined(FEAT_TEAROFF))
-       if (using_tearoff != prev_tearoff)
-       {
-           gui_mch_toggle_tearoffs(using_tearoff);
-           prev_tearoff = using_tearoff;
-       }
+    if (using_tearoff != prev_tearoff)
+    {
+       gui_mch_toggle_tearoffs(using_tearoff);
+       prev_tearoff = using_tearoff;
+    }
 #endif
-       if (need_set_size != 0)
-       {
+    if (need_set_size != 0)
+    {
 #ifdef FEAT_GUI_GTK
-           long    prev_Columns = Columns;
-           long    prev_Rows = Rows;
+       long    prev_Columns = Columns;
+       long    prev_Rows = Rows;
 #endif
-           // Adjust the size of the window to make the text area keep the
-           // same size and to avoid that part of our window is off-screen
-           // and a scrollbar can't be used, for example.
-           gui_set_shellsize(FALSE, fix_size, need_set_size);
+       // Adjust the size of the window to make the text area keep the
+       // same size and to avoid that part of our window is off-screen
+       // and a scrollbar can't be used, for example.
+       gui_set_shellsize(FALSE, fix_size, need_set_size);
 
 #ifdef FEAT_GUI_GTK
-           // GTK has the annoying habit of sending us resize events when
-           // changing the window size ourselves.  This mostly happens when
-           // waiting for a character to arrive, quite unpredictably, and may
-           // change Columns and Rows when we don't want it.  Wait for a
-           // character here to avoid this effect.
-           // If you remove this, please test this command for resizing
-           // effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
-           // Don't do this while starting up though.
-           // Don't change Rows when adding menu/toolbar/tabline.
-           // Don't change Columns when adding vertical toolbar.
-           if (!gui.starting && need_set_size != (RESIZE_VERT | RESIZE_HOR))
-               (void)char_avail();
-           if ((need_set_size & RESIZE_VERT) == 0)
-               Rows = prev_Rows;
-           if ((need_set_size & RESIZE_HOR) == 0)
-               Columns = prev_Columns;
+       // GTK has the annoying habit of sending us resize events when
+       // changing the window size ourselves.  This mostly happens when
+       // waiting for a character to arrive, quite unpredictably, and may
+       // change Columns and Rows when we don't want it.  Wait for a
+       // character here to avoid this effect.
+       // If you remove this, please test this command for resizing
+       // effects (with optional left scrollbar): ":vsp|q|vsp|q|vsp|q".
+       // Don't do this while starting up though.
+       // Don't change Rows when adding menu/toolbar/tabline.
+       // Don't change Columns when adding vertical toolbar.
+       if (!gui.starting && need_set_size != (RESIZE_VERT | RESIZE_HOR))
+           (void)char_avail();
+       if ((need_set_size & RESIZE_VERT) == 0)
+           Rows = prev_Rows;
+       if ((need_set_size & RESIZE_HOR) == 0)
+           Columns = prev_Columns;
 #endif
-       }
-       // When the console tabline appears or disappears the window positions
-       // change.
-       if (firstwin->w_winrow != tabline_height())
-           shell_new_rows();   // recompute window positions and heights
     }
+    // When the console tabline appears or disappears the window positions
+    // change.
+    if (firstwin->w_winrow != tabline_height())
+       shell_new_rows();       // recompute window positions and heights
 }
 
 #if defined(FEAT_GUI_TABLINE) || defined(PROTO)
@@ -4768,7 +4769,7 @@ gui_mouse_focus(int x, int y)
            return;
 
        /*
-        * format a mouse click on status line input
+        * Format a mouse click on status line input,
         * ala gui_send_mouse_event(0, x, y, 0, 0);
         * Trick: Use a column number -1, so that get_pseudo_mouse_code() will
         * generate a K_LEFTMOUSE_NM key code.
@@ -4852,13 +4853,14 @@ gui_mouse_correct(void)
     need_mouse_correct = FALSE;
 
     wp = gui_mouse_window(IGNORE_POPUP);
-    if (wp != curwin && wp != NULL)    // If in other than current window
-    {
-       validate_cline_row();
-       gui_mch_setmouse((int)W_ENDCOL(curwin) * gui.char_width - 3,
-               (W_WINROW(curwin) + curwin->w_wrow) * gui.char_height
-                                                    + (gui.char_height) / 2);
-    }
+    if (wp == curwin || wp == NULL)
+       return;
+
+    // If in other than current window
+    validate_cline_row();
+    gui_mch_setmouse((int)W_ENDCOL(curwin) * gui.char_width - 3,
+           (W_WINROW(curwin) + curwin->w_wrow) * gui.char_height
+           + (gui.char_height) / 2);
 }
 
 /*
@@ -5014,22 +5016,26 @@ display_errors(void)
     char_u     *p;
 
     if (isatty(2))
-       fflush(stderr);
-    else if (error_ga.ga_data != NULL)
     {
-       // avoid putting up a message box with blanks only
-       for (p = (char_u *)error_ga.ga_data; *p != NUL; ++p)
-           if (!isspace(*p))
-           {
-               // Truncate a very long message, it will go off-screen.
-               if (STRLEN(p) > 2000)
-                   STRCPY(p + 2000 - 14, "...(truncated)");
-               (void)do_dialog(VIM_ERROR, (char_u *)_("Error"),
-                                      p, (char_u *)_("&Ok"), 1, NULL, FALSE);
-               break;
-           }
-       ga_clear(&error_ga);
+       fflush(stderr);
+       return;
     }
+
+    if (error_ga.ga_data == NULL)
+       return;
+
+    // avoid putting up a message box with blanks only
+    for (p = (char_u *)error_ga.ga_data; *p != NUL; ++p)
+       if (!isspace(*p))
+       {
+           // Truncate a very long message, it will go off-screen.
+           if (STRLEN(p) > 2000)
+               STRCPY(p + 2000 - 14, "...(truncated)");
+           (void)do_dialog(VIM_ERROR, (char_u *)_("Error"),
+                   p, (char_u *)_("&Ok"), 1, NULL, FALSE);
+           break;
+       }
+    ga_clear(&error_ga);
 }
 #endif
 
@@ -5339,12 +5345,12 @@ gui_wingoto_xy(int x, int y)
     int                col = X_2_COL(x);
     win_T      *wp;
 
-    if (row >= 0 && col >= 0)
-    {
-       wp = mouse_find_win(&row, &col, FAIL_POPUP);
-       if (wp != NULL && wp != curwin)
-           win_goto(wp);
-    }
+    if (row < 0 || col < 0)
+       return;
+
+    wp = mouse_find_win(&row, &col, FAIL_POPUP);
+    if (wp != NULL && wp != curwin)
+       win_goto(wp);
 }
 
 /*
index e1b0e4bfd909c9dbf533738c0958a091da02556b..daeac8f3b7409aa1106d7985fd7074445a9d351b 100644 (file)
@@ -373,40 +373,40 @@ pointer_event(BalloonEval *beval, int x, int y, unsigned state)
 
     distance = ABS(x - beval->x) + ABS(y - beval->y);
 
-    if (distance > 4)
+    if (distance <= 4)
+       return;
+
+    /*
+     * Moved out of the balloon location: cancel it.
+     * Remember button state
+     */
+    beval->state = state;
+    cancelBalloon(beval);
+
+    // Mouse buttons are pressed - no balloon now
+    if (!(state & ((int)GDK_BUTTON1_MASK | (int)GDK_BUTTON2_MASK
+                   | (int)GDK_BUTTON3_MASK)))
     {
-       /*
-        * Moved out of the balloon location: cancel it.
-        * Remember button state
-        */
-       beval->state = state;
-       cancelBalloon(beval);
+       beval->x = x;
+       beval->y = y;
 
-       // Mouse buttons are pressed - no balloon now
-       if (!(state & ((int)GDK_BUTTON1_MASK | (int)GDK_BUTTON2_MASK
-                                                   | (int)GDK_BUTTON3_MASK)))
+       if (state & (int)GDK_MOD1_MASK)
        {
-           beval->x = x;
-           beval->y = y;
-
-           if (state & (int)GDK_MOD1_MASK)
-           {
-               /*
-                * Alt is pressed -- enter super-evaluate-mode,
-                * where there is no time delay
-                */
-               if (beval->msgCB != NULL)
-               {
-                   beval->showState = ShS_PENDING;
-                   (*beval->msgCB)(beval, state);
-               }
-           }
-           else
+           /*
+            * Alt is pressed -- enter super-evaluate-mode,
+            * where there is no time delay
+            */
+           if (beval->msgCB != NULL)
            {
-               beval->timerID = g_timeout_add((guint)p_bdlay,
-                                              &timeout_cb, beval);
+               beval->showState = ShS_PENDING;
+               (*beval->msgCB)(beval, state);
            }
        }
+       else
+       {
+           beval->timerID = g_timeout_add((guint)p_bdlay,
+                   &timeout_cb, beval);
+       }
     }
 }
 
@@ -698,17 +698,17 @@ timerRoutine(XtPointer dx, XtIntervalId *id UNUSED)
     static void
 requestBalloon(BalloonEval *beval)
 {
-    if (beval->showState != ShS_PENDING)
+    if (beval->showState == ShS_PENDING)
+       return;
+
+    // Determine the beval to display
+    if (beval->msgCB != NULL)
     {
-       // Determine the beval to display
-       if (beval->msgCB != NULL)
-       {
-           beval->showState = ShS_PENDING;
-           (*beval->msgCB)(beval, beval->state);
-       }
-       else if (beval->msg != NULL)
-           drawBalloon(beval);
+       beval->showState = ShS_PENDING;
+       (*beval->msgCB)(beval, beval->state);
     }
+    else if (beval->msg != NULL)
+       drawBalloon(beval);
 }
 
 #ifdef FEAT_GUI_GTK
@@ -900,85 +900,85 @@ set_printable_label_text(GtkLabel *label, char_u *text)
     static void
 drawBalloon(BalloonEval *beval)
 {
-    if (beval->msg != NULL)
-    {
-       GtkRequisition  requisition;
-       int             screen_w;
-       int             screen_h;
-       int             screen_x;
-       int             screen_y;
-       int             x;
-       int             y;
-       int             x_offset = EVAL_OFFSET_X;
-       int             y_offset = EVAL_OFFSET_Y;
-       PangoLayout     *layout;
+    if (beval->msg == NULL)
+       return;
+
+    GtkRequisition     requisition;
+    int                screen_w;
+    int                screen_h;
+    int                screen_x;
+    int                screen_y;
+    int                x;
+    int                y;
+    int                x_offset = EVAL_OFFSET_X;
+    int                y_offset = EVAL_OFFSET_Y;
+    PangoLayout        *layout;
 
 # if !GTK_CHECK_VERSION(3,22,2)
-       GdkScreen       *screen;
+    GdkScreen  *screen;
 
-       screen = gtk_widget_get_screen(beval->target);
-       gtk_window_set_screen(GTK_WINDOW(beval->balloonShell), screen);
+    screen = gtk_widget_get_screen(beval->target);
+    gtk_window_set_screen(GTK_WINDOW(beval->balloonShell), screen);
 # endif
-       gui_gtk_get_screen_geom_of_win(beval->target, 0, 0,
-                                   &screen_x, &screen_y, &screen_w, &screen_h);
+    gui_gtk_get_screen_geom_of_win(beval->target, 0, 0,
+           &screen_x, &screen_y, &screen_w, &screen_h);
 # if !GTK_CHECK_VERSION(3,0,0)
-       gtk_widget_ensure_style(beval->balloonShell);
-       gtk_widget_ensure_style(beval->balloonLabel);
+    gtk_widget_ensure_style(beval->balloonShell);
+    gtk_widget_ensure_style(beval->balloonLabel);
 # endif
 
-       set_printable_label_text(GTK_LABEL(beval->balloonLabel), beval->msg);
-       /*
-        * Dirty trick:  Enable wrapping mode on the label's layout behind its
-        * back.  This way GtkLabel won't try to constrain the wrap width to a
-        * builtin maximum value of about 65 Latin characters.
-        */
-       layout = gtk_label_get_layout(GTK_LABEL(beval->balloonLabel));
+    set_printable_label_text(GTK_LABEL(beval->balloonLabel), beval->msg);
+    /*
+     * Dirty trick:  Enable wrapping mode on the label's layout behind its
+     * back.  This way GtkLabel won't try to constrain the wrap width to a
+     * builtin maximum value of about 65 Latin characters.
+     */
+    layout = gtk_label_get_layout(GTK_LABEL(beval->balloonLabel));
 # ifdef PANGO_WRAP_WORD_CHAR
-       pango_layout_set_wrap(layout, PANGO_WRAP_WORD_CHAR);
+    pango_layout_set_wrap(layout, PANGO_WRAP_WORD_CHAR);
 # else
-       pango_layout_set_wrap(layout, PANGO_WRAP_WORD);
+    pango_layout_set_wrap(layout, PANGO_WRAP_WORD);
 # endif
-       pango_layout_set_width(layout,
-               // try to come up with some reasonable width
-               PANGO_SCALE * CLAMP(gui.num_cols * gui.char_width,
-                                   screen_w / 2,
-                                   MAX(20, screen_w - 20)));
+    pango_layout_set_width(layout,
+           // try to come up with some reasonable width
+           PANGO_SCALE * CLAMP(gui.num_cols * gui.char_width,
+               screen_w / 2,
+               MAX(20, screen_w - 20)));
 
-       // Calculate the balloon's width and height.
+    // Calculate the balloon's width and height.
 # if GTK_CHECK_VERSION(3,0,0)
-       gtk_widget_get_preferred_size(beval->balloonShell, &requisition, NULL);
+    gtk_widget_get_preferred_size(beval->balloonShell, &requisition, NULL);
 # else
-       gtk_widget_size_request(beval->balloonShell, &requisition);
+    gtk_widget_size_request(beval->balloonShell, &requisition);
 # endif
 
-       // Compute position of the balloon area
-       gdk_window_get_origin(gtk_widget_get_window(beval->target), &x, &y);
-       x += beval->x;
-       y += beval->y;
+    // Compute position of the balloon area
+    gdk_window_get_origin(gtk_widget_get_window(beval->target), &x, &y);
+    x += beval->x;
+    y += beval->y;
 
-       // Get out of the way of the mouse pointer
-       if (x + x_offset + requisition.width > screen_x + screen_w)
-           y_offset += 15;
-       if (y + y_offset + requisition.height > screen_y + screen_h)
-           y_offset = -requisition.height - EVAL_OFFSET_Y;
+    // Get out of the way of the mouse pointer
+    if (x + x_offset + requisition.width > screen_x + screen_w)
+       y_offset += 15;
+    if (y + y_offset + requisition.height > screen_y + screen_h)
+       y_offset = -requisition.height - EVAL_OFFSET_Y;
 
-       // Sanitize values
-       x = CLAMP(x + x_offset, 0,
-                           MAX(0, screen_x + screen_w - requisition.width));
-       y = CLAMP(y + y_offset, 0,
-                           MAX(0, screen_y + screen_h - requisition.height));
+    // Sanitize values
+    x = CLAMP(x + x_offset, 0,
+           MAX(0, screen_x + screen_w - requisition.width));
+    y = CLAMP(y + y_offset, 0,
+           MAX(0, screen_y + screen_h - requisition.height));
 
-       // Show the balloon
+    // Show the balloon
 # if GTK_CHECK_VERSION(3,0,0)
-       gtk_window_move(GTK_WINDOW(beval->balloonShell), x, y);
+    gtk_window_move(GTK_WINDOW(beval->balloonShell), x, y);
 # else
-       gtk_widget_set_uposition(beval->balloonShell, x, y);
+    gtk_widget_set_uposition(beval->balloonShell, x, y);
 # endif
-       gtk_widget_show(beval->balloonShell);
+    gtk_widget_show(beval->balloonShell);
 
-       beval->showState = ShS_SHOWING;
-       gui_mch_update();
-    }
+    beval->showState = ShS_SHOWING;
+    gui_mch_update();
 }
 
 /*
@@ -1060,65 +1060,65 @@ drawBalloon(BalloonEval *beval)
     Position tx;
     Position ty;
 
-    if (beval->msg != NULL)
-    {
-       XmString s;
-       // Show the Balloon
+    if (beval->msg == NULL)
+       return;
 
-       // Calculate the label's width and height
+    XmString s;
+    // Show the Balloon
 
-       // For the callback function we parse NL characters to create a
-       // multi-line label.  This doesn't work for all languages, but
-       // XmStringCreateLocalized() doesn't do multi-line labels...
-       if (beval->msgCB != NULL)
-           s = XmStringCreateLtoR((char *)beval->msg, XmFONTLIST_DEFAULT_TAG);
-       else
-           s = XmStringCreateLocalized((char *)beval->msg);
-       {
-           XmFontList fl;
+    // Calculate the label's width and height
 
-           fl = gui_motif_fontset2fontlist(&gui.tooltip_fontset);
-           if (fl == NULL)
-           {
-               XmStringFree(s);
-               return;
-           }
-           XmStringExtent(fl, s, &w, &h);
-           XmFontListFree(fl);
-       }
-       w += gui.border_offset << 1;
-       h += gui.border_offset << 1;
-       XtVaSetValues(beval->balloonLabel, XmNlabelString, s, NULL);
-       XmStringFree(s);
-
-       // Compute position of the balloon area
-       tx = beval->x_root + EVAL_OFFSET_X;
-       ty = beval->y_root + EVAL_OFFSET_Y;
-       if ((tx + w) > beval->screen_width)
-           tx = beval->screen_width - w;
-       if ((ty + h) > beval->screen_height)
-           ty = beval->screen_height - h;
-       XtVaSetValues(beval->balloonShell,
-               XmNx, tx,
-               XmNy, ty,
-               NULL);
-       // Set tooltip colors
-       {
-           Arg args[2];
+    // For the callback function we parse NL characters to create a
+    // multi-line label.  This doesn't work for all languages, but
+    // XmStringCreateLocalized() doesn't do multi-line labels...
+    if (beval->msgCB != NULL)
+       s = XmStringCreateLtoR((char *)beval->msg, XmFONTLIST_DEFAULT_TAG);
+    else
+       s = XmStringCreateLocalized((char *)beval->msg);
+    {
+       XmFontList fl;
 
-           args[0].name = XmNbackground;
-           args[0].value = gui.tooltip_bg_pixel;
-           args[1].name = XmNforeground;
-           args[1].value = gui.tooltip_fg_pixel;
-           XtSetValues(beval->balloonLabel, &args[0], XtNumber(args));
+       fl = gui_motif_fontset2fontlist(&gui.tooltip_fontset);
+       if (fl == NULL)
+       {
+           XmStringFree(s);
+           return;
        }
+       XmStringExtent(fl, s, &w, &h);
+       XmFontListFree(fl);
+    }
+    w += gui.border_offset << 1;
+    h += gui.border_offset << 1;
+    XtVaSetValues(beval->balloonLabel, XmNlabelString, s, NULL);
+    XmStringFree(s);
+
+    // Compute position of the balloon area
+    tx = beval->x_root + EVAL_OFFSET_X;
+    ty = beval->y_root + EVAL_OFFSET_Y;
+    if ((tx + w) > beval->screen_width)
+       tx = beval->screen_width - w;
+    if ((ty + h) > beval->screen_height)
+       ty = beval->screen_height - h;
+    XtVaSetValues(beval->balloonShell,
+           XmNx, tx,
+           XmNy, ty,
+           NULL);
+    // Set tooltip colors
+    {
+       Arg args[2];
 
-       XtPopup(beval->balloonShell, XtGrabNone);
+       args[0].name = XmNbackground;
+       args[0].value = gui.tooltip_bg_pixel;
+       args[1].name = XmNforeground;
+       args[1].value = gui.tooltip_fg_pixel;
+       XtSetValues(beval->balloonLabel, &args[0], XtNumber(args));
+    }
 
-       beval->showState = ShS_SHOWING;
+    XtPopup(beval->balloonShell, XtGrabNone);
 
-       current_beval = beval;
-    }
+    beval->showState = ShS_SHOWING;
+
+    current_beval = beval;
 }
 
 /*
@@ -1161,18 +1161,16 @@ createBalloonEvalWindow(BalloonEval *beval)
     beval->balloonShell = XtAppCreateShell("balloonEval", "BalloonEval",
                    overrideShellWidgetClass, gui.dpy, args, n);
 
-    {
-       XmFontList fl;
+    XmFontList fl;
 
-       n = 0;
-       fl = gui_motif_fontset2fontlist(&gui.tooltip_fontset);
-       XtSetArg(args[n], XmNforeground, gui.tooltip_fg_pixel); n++;
-       XtSetArg(args[n], XmNbackground, gui.tooltip_bg_pixel); n++;
-       XtSetArg(args[n], XmNfontList, fl); n++;
-       XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
-       beval->balloonLabel = XtCreateManagedWidget("balloonLabel",
-                       xmLabelWidgetClass, beval->balloonShell, args, n);
-    }
+    n = 0;
+    fl = gui_motif_fontset2fontlist(&gui.tooltip_fontset);
+    XtSetArg(args[n], XmNforeground, gui.tooltip_fg_pixel); n++;
+    XtSetArg(args[n], XmNbackground, gui.tooltip_bg_pixel); n++;
+    XtSetArg(args[n], XmNfontList, fl); n++;
+    XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
+    beval->balloonLabel = XtCreateManagedWidget("balloonLabel",
+           xmLabelWidgetClass, beval->balloonShell, args, n);
 }
 
 #endif // !FEAT_GUI_GTK
index 1ae15ca3e61783d5729c65cd298c2e2e0c3b2c37..6dbaf246b67da02cf5bf109761c237404e904412 100644 (file)
@@ -924,22 +924,22 @@ get_menu_position(vimmenu_T *menu)
     void
 gui_mch_menu_set_tip(vimmenu_T *menu)
 {
-    if (menu->id != NULL && menu->parent != NULL && gui.toolbar != NULL)
-    {
-       char_u *tooltip;
+    if (menu->id == NULL || menu->parent == NULL || gui.toolbar == NULL)
+       return;
+
+    char_u *tooltip;
 
-       tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
-       if (tooltip != NULL && utf_valid_string(tooltip, NULL))
+    tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
+    if (tooltip != NULL && utf_valid_string(tooltip, NULL))
 # if GTK_CHECK_VERSION(3,0,0)
-           // Only set the tooltip when it's valid utf-8.
-           gtk_widget_set_tooltip_text(menu->id, (const gchar *)tooltip);
+       // Only set the tooltip when it's valid utf-8.
+       gtk_widget_set_tooltip_text(menu->id, (const gchar *)tooltip);
 # else
-           // Only set the tooltip when it's valid utf-8.
-           gtk_tooltips_set_tip(GTK_TOOLBAR(gui.toolbar)->tooltips,
-                                menu->id, (const char *)tooltip, NULL);
+    // Only set the tooltip when it's valid utf-8.
+    gtk_tooltips_set_tip(GTK_TOOLBAR(gui.toolbar)->tooltips,
+           menu->id, (const char *)tooltip, NULL);
 # endif
-       CONVERT_TO_UTF8_FREE(tooltip);
-    }
+    CONVERT_TO_UTF8_FREE(tooltip);
 }
 #endif // FEAT_TOOLBAR
 
@@ -1007,34 +1007,34 @@ gui_mch_destroy_menu(vimmenu_T *menu)
     void
 gui_mch_set_scrollbar_thumb(scrollbar_T *sb, long val, long size, long max)
 {
-    if (sb->id != NULL)
-    {
-       GtkAdjustment *adjustment;
+    if (sb->id == NULL)
+       return;
+
+    GtkAdjustment *adjustment;
 
-       // ignore events triggered by moving the thumb (happens in GTK 3)
-       ++hold_gui_events;
+    // ignore events triggered by moving the thumb (happens in GTK 3)
+    ++hold_gui_events;
 
-       adjustment = gtk_range_get_adjustment(GTK_RANGE(sb->id));
+    adjustment = gtk_range_get_adjustment(GTK_RANGE(sb->id));
 
-       gtk_adjustment_set_lower(adjustment, 0.0);
-       gtk_adjustment_set_value(adjustment, val);
-       gtk_adjustment_set_upper(adjustment, max + 1);
-       gtk_adjustment_set_page_size(adjustment, size);
-       gtk_adjustment_set_page_increment(adjustment,
-                                         size < 3L ? 1L : size - 2L);
-       gtk_adjustment_set_step_increment(adjustment, 1.0);
+    gtk_adjustment_set_lower(adjustment, 0.0);
+    gtk_adjustment_set_value(adjustment, val);
+    gtk_adjustment_set_upper(adjustment, max + 1);
+    gtk_adjustment_set_page_size(adjustment, size);
+    gtk_adjustment_set_page_increment(adjustment,
+           size < 3L ? 1L : size - 2L);
+    gtk_adjustment_set_step_increment(adjustment, 1.0);
 
-       g_signal_handler_block(G_OBJECT(adjustment), (gulong)sb->handler_id);
+    g_signal_handler_block(G_OBJECT(adjustment), (gulong)sb->handler_id);
 
-       --hold_gui_events;
+    --hold_gui_events;
 
 #if !GTK_CHECK_VERSION(3,18,0)
-       gtk_adjustment_changed(adjustment);
+    gtk_adjustment_changed(adjustment);
 #endif
 
-       g_signal_handler_unblock(G_OBJECT(adjustment),
-                                                     (gulong)sb->handler_id);
-    }
+    g_signal_handler_unblock(G_OBJECT(adjustment),
+           (gulong)sb->handler_id);
 }
 
     void
@@ -1157,21 +1157,21 @@ gui_mch_create_scrollbar(scrollbar_T *sb, int orient)
        sb->id = gtk_vscrollbar_new(NULL);
 #endif
 
-    if (sb->id != NULL)
-    {
-       GtkAdjustment *adjustment;
+    if (sb->id == NULL)
+       return;
 
-       gtk_widget_set_can_focus(sb->id, FALSE);
-       gui_gtk_form_put(GTK_FORM(gui.formwin), sb->id, 0, 0);
+    GtkAdjustment *adjustment;
 
-       adjustment = gtk_range_get_adjustment(GTK_RANGE(sb->id));
+    gtk_widget_set_can_focus(sb->id, FALSE);
+    gui_gtk_form_put(GTK_FORM(gui.formwin), sb->id, 0, 0);
 
-       sb->handler_id = g_signal_connect(
-                            G_OBJECT(adjustment), "value-changed",
-                            G_CALLBACK(adjustment_value_changed),
-                            GINT_TO_POINTER(sb->ident));
-       gui_mch_update();
-    }
+    adjustment = gtk_range_get_adjustment(GTK_RANGE(sb->id));
+
+    sb->handler_id = g_signal_connect(
+           G_OBJECT(adjustment), "value-changed",
+           G_CALLBACK(adjustment_value_changed),
+           GINT_TO_POINTER(sb->ident));
+    gui_mch_update();
 }
 
     void
@@ -1994,59 +1994,58 @@ gui_make_popup(char_u *path_name, int mouse_pos)
     popup_mouse_pos = mouse_pos;
 
     menu = gui_find_menu(path_name);
+    if (menu == NULL || menu->submenu_id == NULL)
+       return;
 
-    if (menu != NULL && menu->submenu_id != NULL)
-    {
 # if GTK_CHECK_VERSION(3,22,2)
-       GdkWindow * const win = gtk_widget_get_window(gui.drawarea);
-       GdkEventButton trigger;
-
-       // A pseudo event to have gtk_menu_popup_at_*() functions work. Since
-       // the position where the menu pops up is automatically adjusted by
-       // the functions, none of the fields x, y, x_root and y_root has to be
-       // set to a specific value here; therefore, they are set to zero for
-       // convenience.
-       trigger.type       = GDK_BUTTON_PRESS;
-       trigger.window     = win;
-       trigger.send_event = FALSE;
-       trigger.time       = GDK_CURRENT_TIME;
-       trigger.x          = 0.0;
-       trigger.y          = 0.0;
-       trigger.axes       = NULL;
-       trigger.state      = 0;
-       trigger.button     = 0;
-       trigger.device     = NULL;
-       trigger.x_root     = 0.0;
-       trigger.y_root     = 0.0;
-
-       if (mouse_pos)
-           gtk_menu_popup_at_pointer(GTK_MENU(menu->submenu_id),
-                                     (GdkEvent *)&trigger);
-       else
-       {
-           gint origin_x, origin_y;
-           GdkRectangle rect = { 0, 0, 0, 0 };
+    GdkWindow * const win = gtk_widget_get_window(gui.drawarea);
+    GdkEventButton trigger;
+
+    // A pseudo event to have gtk_menu_popup_at_*() functions work. Since
+    // the position where the menu pops up is automatically adjusted by
+    // the functions, none of the fields x, y, x_root and y_root has to be
+    // set to a specific value here; therefore, they are set to zero for
+    // convenience.
+    trigger.type       = GDK_BUTTON_PRESS;
+    trigger.window     = win;
+    trigger.send_event = FALSE;
+    trigger.time       = GDK_CURRENT_TIME;
+    trigger.x     = 0.0;
+    trigger.y     = 0.0;
+    trigger.axes       = NULL;
+    trigger.state      = 0;
+    trigger.button     = 0;
+    trigger.device     = NULL;
+    trigger.x_root     = 0.0;
+    trigger.y_root     = 0.0;
+
+    if (mouse_pos)
+       gtk_menu_popup_at_pointer(GTK_MENU(menu->submenu_id),
+               (GdkEvent *)&trigger);
+    else
+    {
+       gint origin_x, origin_y;
+       GdkRectangle rect = { 0, 0, 0, 0 };
 
-           gdk_window_get_origin(win, &origin_x, &origin_y);
-           popup_menu_position_func(NULL, &rect.x, &rect.y, NULL, NULL);
+       gdk_window_get_origin(win, &origin_x, &origin_y);
+       popup_menu_position_func(NULL, &rect.x, &rect.y, NULL, NULL);
 
-           rect.x -= origin_x;
-           rect.y -= origin_y;
+       rect.x -= origin_x;
+       rect.y -= origin_y;
 
-           gtk_menu_popup_at_rect(GTK_MENU(menu->submenu_id),
-                                  win,
-                                  &rect,
-                                  GDK_GRAVITY_SOUTH_EAST,
-                                  GDK_GRAVITY_NORTH_WEST,
-                                  (GdkEvent *)&trigger);
-       }
+       gtk_menu_popup_at_rect(GTK_MENU(menu->submenu_id),
+               win,
+               &rect,
+               GDK_GRAVITY_SOUTH_EAST,
+               GDK_GRAVITY_NORTH_WEST,
+               (GdkEvent *)&trigger);
+    }
 # else
-       gtk_menu_popup(GTK_MENU(menu->submenu_id),
-                      NULL, NULL,
-                      &popup_menu_position_func, NULL,
-                      0U, (guint32)GDK_CURRENT_TIME);
+    gtk_menu_popup(GTK_MENU(menu->submenu_id),
+           NULL, NULL,
+           &popup_menu_position_func, NULL,
+           0U, (guint32)GDK_CURRENT_TIME);
 # endif
-    }
 }
 
 #endif // FEAT_MENU
index c8f90c2d79d93110ebbc9de7c5e53a7093f9c4da..1ae1bd795e7bd1d457f76dbb8075be3068637269 100644 (file)
@@ -188,13 +188,13 @@ gui_gtk_form_thaw(GtkForm *form)
 {
     g_return_if_fail(GTK_IS_FORM(form));
 
-    if (form->freeze_count)
+    if (!form->freeze_count)
+       return;
+
+    if (!(--form->freeze_count))
     {
-       if (!(--form->freeze_count))
-       {
-           form_position_children(form);
-           gtk_widget_queue_draw(GTK_WIDGET(form));
-       }
+       form_position_children(form);
+       gtk_widget_queue_draw(GTK_WIDGET(form));
     }
 }
 
@@ -610,32 +610,32 @@ form_remove(GtkContainer *container, GtkWidget *widget)
        tmp_list = tmp_list->next;
     }
 
-    if (tmp_list)
-    {
-#if GTK_CHECK_VERSION(3,0,0)
-       const gboolean was_visible = gtk_widget_get_visible(widget);
-#endif
-       if (child->window)
-       {
-           g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
-                   FUNC2GENERIC(&form_child_map), child);
-           g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
-                   FUNC2GENERIC(&form_child_unmap), child);
+    if (tmp_list == NULL)
+       return;
 
-           // FIXME: This will cause problems for reparenting NO_WINDOW
-           // widgets out of a GtkForm
-           gdk_window_set_user_data(child->window, NULL);
-           gdk_window_destroy(child->window);
-       }
-       gtk_widget_unparent(widget);
 #if GTK_CHECK_VERSION(3,0,0)
-       if (was_visible)
-           gtk_widget_queue_resize(GTK_WIDGET(container));
+    const gboolean was_visible = gtk_widget_get_visible(widget);
 #endif
-       form->children = g_list_remove_link(form->children, tmp_list);
-       g_list_free_1(tmp_list);
-       g_free(child);
+    if (child->window)
+    {
+       g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
+               FUNC2GENERIC(&form_child_map), child);
+       g_signal_handlers_disconnect_by_func(G_OBJECT(child->widget),
+               FUNC2GENERIC(&form_child_unmap), child);
+
+       // FIXME: This will cause problems for reparenting NO_WINDOW
+       // widgets out of a GtkForm
+       gdk_window_set_user_data(child->window, NULL);
+       gdk_window_destroy(child->window);
     }
+    gtk_widget_unparent(widget);
+#if GTK_CHECK_VERSION(3,0,0)
+    if (was_visible)
+       gtk_widget_queue_resize(GTK_WIDGET(container));
+#endif
+    form->children = g_list_remove_link(form->children, tmp_list);
+    g_list_free_1(tmp_list);
+    g_free(child);
 }
 
     static void
index ea76e3370aca3573002481c506b21afd0ec80953..b8e08f5ea4c99713a66f2d530919b6fafd758238 100644 (file)
@@ -2435,16 +2435,15 @@ setup_save_yourself(void)
     GnomeClient *client;
 
     client = gnome_master_client();
+    if (client == NULL)
+       return;
 
-    if (client != NULL)
-    {
-       // Must use the deprecated gtk_signal_connect() for compatibility
-       // with GNOME 1.  Arrgh, zombies!
-       gtk_signal_connect(GTK_OBJECT(client), "save_yourself",
-                          GTK_SIGNAL_FUNC(&sm_client_save_yourself), NULL);
-       gtk_signal_connect(GTK_OBJECT(client), "die",
-                          GTK_SIGNAL_FUNC(&sm_client_die), NULL);
-    }
+    // Must use the deprecated gtk_signal_connect() for compatibility
+    // with GNOME 1.  Arrgh, zombies!
+    gtk_signal_connect(GTK_OBJECT(client), "save_yourself",
+           GTK_SIGNAL_FUNC(&sm_client_save_yourself), NULL);
+    gtk_signal_connect(GTK_OBJECT(client), "die",
+           GTK_SIGNAL_FUNC(&sm_client_die), NULL);
 }
 
 #else // !USE_GNOME_SESSION
@@ -3379,13 +3378,13 @@ on_tab_reordered(
        gint            idx,
        gpointer        data UNUSED)
 {
-    if (!ignore_tabline_evt)
-    {
-       if ((tabpage_index(curtab) - 1) < idx)
-           tabpage_move(idx + 1);
-       else
-           tabpage_move(idx);
-    }
+    if (ignore_tabline_evt)
+       return;
+
+    if ((tabpage_index(curtab) - 1) < idx)
+       tabpage_move(idx + 1);
+    else
+       tabpage_move(idx);
 }
 # endif
 
@@ -4069,15 +4068,15 @@ gui_mch_init(void)
     void
 gui_mch_forked(void)
 {
-    if (using_gnome)
-    {
-       GnomeClient *client;
+    if (!using_gnome)
+       return;
 
-       client = gnome_master_client();
+    GnomeClient *client;
 
-       if (client != NULL)
-           gnome_client_set_process_id(client, getpid());
-    }
+    client = gnome_master_client();
+
+    if (client != NULL)
+       gnome_client_set_process_id(client, getpid());
 }
 #endif // USE_GNOME_SESSION
 
@@ -6860,11 +6859,11 @@ clip_mch_request_selection(Clipboard_T *cbd)
     void
 clip_mch_lose_selection(Clipboard_T *cbd UNUSED)
 {
-    if (!in_selection_clear_event)
-    {
-       gtk_selection_owner_set(NULL, cbd->gtk_sel_atom, gui.event_time);
-       gui_mch_update();
-    }
+    if (in_selection_clear_event)
+       return;
+
+    gtk_selection_owner_set(NULL, cbd->gtk_sel_atom, gui.event_time);
+    gui_mch_update();
 }
 
 /*
@@ -7029,21 +7028,21 @@ static int last_shape = 0;
     void
 gui_mch_mousehide(int hide)
 {
-    if (gui.pointer_hidden != hide)
+    if (gui.pointer_hidden == hide)
+       return;
+
+    gui.pointer_hidden = hide;
+    if (gtk_widget_get_window(gui.drawarea) && gui.blank_pointer != NULL)
     {
-       gui.pointer_hidden = hide;
-       if (gtk_widget_get_window(gui.drawarea) && gui.blank_pointer != NULL)
-       {
-           if (hide)
-               gdk_window_set_cursor(gtk_widget_get_window(gui.drawarea),
-                       gui.blank_pointer);
-           else
+       if (hide)
+           gdk_window_set_cursor(gtk_widget_get_window(gui.drawarea),
+                   gui.blank_pointer);
+       else
 #ifdef FEAT_MOUSESHAPE
-               mch_set_mouse_shape(last_shape);
+           mch_set_mouse_shape(last_shape);
 #else
-               gdk_window_set_cursor(gtk_widget_get_window(gui.drawarea), NULL);
+       gdk_window_set_cursor(gtk_widget_get_window(gui.drawarea), NULL);
 #endif
-       }
     }
 }
 
@@ -7132,141 +7131,141 @@ gui_mch_drawsign(int row, int col, int typenr)
 
     sign = (GdkPixbuf *)sign_get_image(typenr);
 
-    if (sign != NULL && gui.drawarea != NULL
-           && gtk_widget_get_window(gui.drawarea) != NULL)
-    {
-       int width;
-       int height;
-       int xoffset;
-       int yoffset;
-       int need_scale;
+    if (sign == NULL || gui.drawarea == NULL
+           || gtk_widget_get_window(gui.drawarea) == NULL)
+       return;
 
-       width  = gdk_pixbuf_get_width(sign);
-       height = gdk_pixbuf_get_height(sign);
-       /*
-        * Decide whether we need to scale.  Allow one pixel of border
-        * width to be cut off, in order to avoid excessive scaling for
-        * tiny differences in font size.
-        * Do scale to fit the height to avoid gaps because of linespacing.
-        */
-       need_scale = (width > SIGN_WIDTH + 2
-                     || height != SIGN_HEIGHT
-                     || (width < 3 * SIGN_WIDTH / 4
-                         && height < 3 * SIGN_HEIGHT / 4));
-       if (need_scale)
+    int width;
+    int height;
+    int xoffset;
+    int yoffset;
+    int need_scale;
+
+    width  = gdk_pixbuf_get_width(sign);
+    height = gdk_pixbuf_get_height(sign);
+    /*
+     * Decide whether we need to scale.  Allow one pixel of border
+     * width to be cut off, in order to avoid excessive scaling for
+     * tiny differences in font size.
+     * Do scale to fit the height to avoid gaps because of linespacing.
+     */
+    need_scale = (width > SIGN_WIDTH + 2
+           || height != SIGN_HEIGHT
+           || (width < 3 * SIGN_WIDTH / 4
+               && height < 3 * SIGN_HEIGHT / 4));
+    if (need_scale)
+    {
+       double  aspect;
+       int         w = width;
+       int         h = height;
+
+       // Keep the original aspect ratio
+       aspect = (double)height / (double)width;
+       width  = (double)SIGN_WIDTH * SIGN_ASPECT / aspect;
+       width  = MIN(width, SIGN_WIDTH);
+       if (((double)(MAX(height, SIGN_HEIGHT)) /
+                   (double)(MIN(height, SIGN_HEIGHT))) < 1.15)
        {
-           double  aspect;
-           int     w = width;
-           int     h = height;
-
-           // Keep the original aspect ratio
-           aspect = (double)height / (double)width;
-           width  = (double)SIGN_WIDTH * SIGN_ASPECT / aspect;
-           width  = MIN(width, SIGN_WIDTH);
-           if (((double)(MAX(height, SIGN_HEIGHT)) /
-                (double)(MIN(height, SIGN_HEIGHT))) < 1.15)
-           {
-               // Change the aspect ratio by at most 15% to fill the
-               // available space completely.
-               height = (double)SIGN_HEIGHT * SIGN_ASPECT / aspect;
-               height = MIN(height, SIGN_HEIGHT);
-           }
-           else
-               height = (double)width * aspect;
+           // Change the aspect ratio by at most 15% to fill the
+           // available space completely.
+           height = (double)SIGN_HEIGHT * SIGN_ASPECT / aspect;
+           height = MIN(height, SIGN_HEIGHT);
+       }
+       else
+           height = (double)width * aspect;
 
-           if (w == width && h == height)
-           {
-               // no change in dimensions; don't decrease reference counter
-               // (below)
-               need_scale = FALSE;
-           }
-           else
-           {
-               // This doesn't seem to be worth caching, and doing so would
-               // complicate the code quite a bit.
-               sign = gdk_pixbuf_scale_simple(sign, width, height,
-                                                        GDK_INTERP_BILINEAR);
-               if (sign == NULL)
-                   return; // out of memory
-           }
+       if (w == width && h == height)
+       {
+           // no change in dimensions; don't decrease reference counter
+           // (below)
+           need_scale = FALSE;
+       }
+       else
+       {
+           // This doesn't seem to be worth caching, and doing so would
+           // complicate the code quite a bit.
+           sign = gdk_pixbuf_scale_simple(sign, width, height,
+                   GDK_INTERP_BILINEAR);
+           if (sign == NULL)
+               return; // out of memory
        }
+    }
 
-       // The origin is the upper-left corner of the pixmap.  Therefore
-       // these offset may become negative if the pixmap is smaller than
-       // the 2x1 cells reserved for the sign icon.
-       xoffset = (width  - SIGN_WIDTH)  / 2;
-       yoffset = (height - SIGN_HEIGHT) / 2;
+    // The origin is the upper-left corner of the pixmap.  Therefore
+    // these offset may become negative if the pixmap is smaller than
+    // the 2x1 cells reserved for the sign icon.
+    xoffset = (width  - SIGN_WIDTH)  / 2;
+    yoffset = (height - SIGN_HEIGHT) / 2;
 
 # if GTK_CHECK_VERSION(3,0,0)
-       {
-           cairo_t         *cr;
-           cairo_surface_t *bg_surf;
-           cairo_t         *bg_cr;
-           cairo_surface_t *sign_surf;
-           cairo_t         *sign_cr;
-
-           cr = cairo_create(gui.surface);
-
-           bg_surf = cairo_surface_create_similar(gui.surface,
-                   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,
-                   cairo_surface_get_content(gui.surface),
-                   SIGN_WIDTH, SIGN_HEIGHT);
-           sign_cr = cairo_create(sign_surf);
-           gdk_cairo_set_source_pixbuf(sign_cr, sign, -xoffset, -yoffset);
-           cairo_paint(sign_cr);
-
-           cairo_set_operator(sign_cr, CAIRO_OPERATOR_DEST_OVER);
-           cairo_set_source_surface(sign_cr, bg_surf, 0, 0);
-           cairo_paint(sign_cr);
-
-           cairo_set_source_surface(cr, sign_surf, FILL_X(col), FILL_Y(row));
-           cairo_paint(cr);
-
-           cairo_destroy(sign_cr);
-           cairo_surface_destroy(sign_surf);
-           cairo_destroy(bg_cr);
-           cairo_surface_destroy(bg_surf);
-           cairo_destroy(cr);
-
-           gtk_widget_queue_draw_area(gui.drawarea,
-                   FILL_X(col), FILL_Y(col), width, height);
+    {
+       cairo_t     *cr;
+       cairo_surface_t *bg_surf;
+       cairo_t     *bg_cr;
+       cairo_surface_t *sign_surf;
+       cairo_t     *sign_cr;
 
-       }
+       cr = cairo_create(gui.surface);
+
+       bg_surf = cairo_surface_create_similar(gui.surface,
+               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,
+               cairo_surface_get_content(gui.surface),
+               SIGN_WIDTH, SIGN_HEIGHT);
+       sign_cr = cairo_create(sign_surf);
+       gdk_cairo_set_source_pixbuf(sign_cr, sign, -xoffset, -yoffset);
+       cairo_paint(sign_cr);
+
+       cairo_set_operator(sign_cr, CAIRO_OPERATOR_DEST_OVER);
+       cairo_set_source_surface(sign_cr, bg_surf, 0, 0);
+       cairo_paint(sign_cr);
+
+       cairo_set_source_surface(cr, sign_surf, FILL_X(col), FILL_Y(row));
+       cairo_paint(cr);
+
+       cairo_destroy(sign_cr);
+       cairo_surface_destroy(sign_surf);
+       cairo_destroy(bg_cr);
+       cairo_surface_destroy(bg_surf);
+       cairo_destroy(cr);
+
+       gtk_widget_queue_draw_area(gui.drawarea,
+               FILL_X(col), FILL_Y(col), width, height);
+
+    }
 # else // !GTK_CHECK_VERSION(3,0,0)
-       gdk_gc_set_foreground(gui.text_gc, gui.bgcolor);
+    gdk_gc_set_foreground(gui.text_gc, gui.bgcolor);
 
-       gdk_draw_rectangle(gui.drawarea->window,
-                          gui.text_gc,
-                          TRUE,
-                          FILL_X(col),
-                          FILL_Y(row),
-                          SIGN_WIDTH,
-                          SIGN_HEIGHT);
-
-       gdk_pixbuf_render_to_drawable_alpha(sign,
-                                           gui.drawarea->window,
-                                           MAX(0, xoffset),
-                                           MAX(0, yoffset),
-                                           FILL_X(col) - MIN(0, xoffset),
-                                           FILL_Y(row) - MIN(0, yoffset),
-                                           MIN(width,  SIGN_WIDTH),
-                                           MIN(height, SIGN_HEIGHT),
-                                           GDK_PIXBUF_ALPHA_BILEVEL,
-                                           127,
-                                           GDK_RGB_DITHER_NORMAL,
-                                           0, 0);
+    gdk_draw_rectangle(gui.drawarea->window,
+           gui.text_gc,
+           TRUE,
+           FILL_X(col),
+           FILL_Y(row),
+           SIGN_WIDTH,
+           SIGN_HEIGHT);
+
+    gdk_pixbuf_render_to_drawable_alpha(sign,
+           gui.drawarea->window,
+           MAX(0, xoffset),
+           MAX(0, yoffset),
+           FILL_X(col) - MIN(0, xoffset),
+           FILL_Y(row) - MIN(0, yoffset),
+           MIN(width,  SIGN_WIDTH),
+           MIN(height, SIGN_HEIGHT),
+           GDK_PIXBUF_ALPHA_BILEVEL,
+           127,
+           GDK_RGB_DITHER_NORMAL,
+           0, 0);
 # endif // !GTK_CHECK_VERSION(3,0,0)
-       if (need_scale)
-           g_object_unref(sign);
-    }
+    if (need_scale)
+       g_object_unref(sign);
 }
 
     void *
index 55c026eb48b9a91be2b457d6f36479590cc9ba4f..5e18f20c8e4eb421619a0cb232a41d07d93d95f0 100644 (file)
@@ -979,14 +979,14 @@ gui_motif_add_actext(vimmenu_T *menu)
     XmString   label;
 
     // Add accelerator text, if there is one
-    if (menu->actext != NULL && menu->id != (Widget)0)
-    {
-       label = XmStringCreate((char *)menu->actext, STRING_TAG);
-       if (label == NULL)
-           return;
-       XtVaSetValues(menu->id, XmNacceleratorText, label, NULL);
-       XmStringFree(label);
-    }
+    if (menu->actext == NULL || menu->id == (Widget)0)
+       return;
+
+    label = XmStringCreate((char *)menu->actext, STRING_TAG);
+    if (label == NULL)
+       return;
+    XtVaSetValues(menu->id, XmNacceleratorText, label, NULL);
+    XmStringFree(label);
 }
 
     void
@@ -1573,44 +1573,44 @@ gui_mch_destroy_menu(vimmenu_T *menu)
        menu->submenu_id = (Widget)0;
     }
 
-    if (menu->id != (Widget)0)
-    {
-       Widget      parent;
+    if (menu->id == (Widget)0)
+       return;
 
-       parent = XtParent(menu->id);
+    Widget         parent;
+
+    parent = XtParent(menu->id);
 #if defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL_GUI)
-       if (parent == toolBar && menu->tip != NULL)
-       {
-           // We try to destroy this before the actual menu, because there are
-           // callbacks, etc. that will be unregistered during the tooltip
-           // destruction.
-           //
-           // If you call "gui_mch_destroy_beval_area()" after destroying
-           // menu->id, then the tooltip's window will have already been
-           // deallocated by Xt, and unknown behaviour will ensue (probably
-           // a core dump).
-           gui_mch_destroy_beval_area(menu->tip);
-           menu->tip = NULL;
-       }
+    if (parent == toolBar && menu->tip != NULL)
+    {
+       // We try to destroy this before the actual menu, because there are
+       // callbacks, etc. that will be unregistered during the tooltip
+       // destruction.
+       //
+       // If you call "gui_mch_destroy_beval_area()" after destroying
+       // menu->id, then the tooltip's window will have already been
+       // deallocated by Xt, and unknown behaviour will ensue (probably
+       // a core dump).
+       gui_mch_destroy_beval_area(menu->tip);
+       menu->tip = NULL;
+    }
 #endif
-       XtDestroyWidget(menu->id);
-       menu->id = (Widget)0;
-       if (parent == menuBar)
-           gui_mch_compute_menu_height((Widget)0);
+    XtDestroyWidget(menu->id);
+    menu->id = (Widget)0;
+    if (parent == menuBar)
+       gui_mch_compute_menu_height((Widget)0);
 #ifdef FEAT_TOOLBAR
-       else if (parent == toolBar)
-       {
-           Cardinal    num_children;
+    else if (parent == toolBar)
+    {
+       Cardinal    num_children;
 
-           // When removing last toolbar item, don't display the toolbar.
-           XtVaGetValues(toolBar, XmNnumChildren, &num_children, NULL);
-           if (num_children == 0)
-               gui_mch_show_toolbar(FALSE);
-           else
-               gui.toolbar_height = gui_mch_compute_toolbar_height();
-       }
-#endif
+       // When removing last toolbar item, don't display the toolbar.
+       XtVaGetValues(toolBar, XmNnumChildren, &num_children, NULL);
+       if (num_children == 0)
+           gui_mch_show_toolbar(FALSE);
+       else
+           gui.toolbar_height = gui_mch_compute_toolbar_height();
     }
+#endif
 }
 
     void
@@ -1630,19 +1630,19 @@ gui_mch_show_popupmenu(vimmenu_T *menu UNUSED)
     void
 gui_mch_def_colors(void)
 {
-    if (gui.in_use)
-    {
-       gui.menu_fg_pixel = gui_get_color((char_u *)gui.rsrc_menu_fg_name);
-       gui.menu_bg_pixel = gui_get_color((char_u *)gui.rsrc_menu_bg_name);
-       gui.scroll_fg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_fg_name);
-       gui.scroll_bg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_bg_name);
+    if (!gui.in_use)
+       return;
+
+    gui.menu_fg_pixel = gui_get_color((char_u *)gui.rsrc_menu_fg_name);
+    gui.menu_bg_pixel = gui_get_color((char_u *)gui.rsrc_menu_bg_name);
+    gui.scroll_fg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_fg_name);
+    gui.scroll_bg_pixel = gui_get_color((char_u *)gui.rsrc_scroll_bg_name);
 #ifdef FEAT_BEVAL_GUI
-       gui.tooltip_fg_pixel =
-                       gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
-       gui.tooltip_bg_pixel =
-                       gui_get_color((char_u *)gui.rsrc_tooltip_bg_name);
+    gui.tooltip_fg_pixel =
+       gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
+    gui.tooltip_bg_pixel =
+       gui_get_color((char_u *)gui.rsrc_tooltip_bg_name);
 #endif
-    }
 }
 
 
@@ -1674,30 +1674,30 @@ gui_mch_set_scrollbar_pos(
     int                w,
     int                h)
 {
-    if (sb->id != (Widget)0)
+    if (sb->id == (Widget)0)
+       return;
+
+    if (sb->type == SBAR_LEFT || sb->type == SBAR_RIGHT)
     {
-       if (sb->type == SBAR_LEFT || sb->type == SBAR_RIGHT)
-       {
-           if (y == 0)
-               h -= gui.border_offset;
-           else
-               y -= gui.border_offset;
-           XtVaSetValues(sb->id,
-                         XmNtopOffset, y,
-                         XmNbottomOffset, -y - h,
-                         XmNwidth, w,
-                         NULL);
-       }
+       if (y == 0)
+           h -= gui.border_offset;
        else
-           XtVaSetValues(sb->id,
-                         XmNtopOffset, y,
-                         XmNleftOffset, x,
-                         XmNrightOffset, gui.which_scrollbars[SBAR_RIGHT]
-                                                   ? gui.scrollbar_width : 0,
-                         XmNheight, h,
-                         NULL);
-       XtManageChild(sb->id);
+           y -= gui.border_offset;
+       XtVaSetValues(sb->id,
+               XmNtopOffset, y,
+               XmNbottomOffset, -y - h,
+               XmNwidth, w,
+               NULL);
     }
+    else
+       XtVaSetValues(sb->id,
+               XmNtopOffset, y,
+               XmNleftOffset, x,
+               XmNrightOffset, gui.which_scrollbars[SBAR_RIGHT]
+               ? gui.scrollbar_width : 0,
+               XmNheight, h,
+               NULL);
+    XtManageChild(sb->id);
 }
 
     int
@@ -1732,52 +1732,52 @@ gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)
     Arg                args[16];
     int                n;
 
-    if (sb->id != (Widget)0)
+    if (sb->id == (Widget)0)
+       return;
+
+    n = 0;
+    if (flag)
     {
-       n = 0;
-       if (flag)
+       switch (sb->type)
        {
+           case SBAR_LEFT:
+               XtSetArg(args[n], XmNleftOffset, gui.scrollbar_width); n++;
+               break;
+
+           case SBAR_RIGHT:
+               XtSetArg(args[n], XmNrightOffset, gui.scrollbar_width); n++;
+               break;
+
+           case SBAR_BOTTOM:
+               XtSetArg(args[n], XmNbottomOffset, gui.scrollbar_height);n++;
+               break;
+       }
+       XtSetValues(textArea, args, n);
+       XtManageChild(sb->id);
+    }
+    else
+    {
+       if (!gui.which_scrollbars[sb->type])
+       {
+           // The scrollbars of this type are all disabled, adjust the
+           // textArea attachment offset.
            switch (sb->type)
            {
                case SBAR_LEFT:
-                   XtSetArg(args[n], XmNleftOffset, gui.scrollbar_width); n++;
+                   XtSetArg(args[n], XmNleftOffset, 0); n++;
                    break;
 
                case SBAR_RIGHT:
-                   XtSetArg(args[n], XmNrightOffset, gui.scrollbar_width); n++;
+                   XtSetArg(args[n], XmNrightOffset, 0); n++;
                    break;
 
                case SBAR_BOTTOM:
-                   XtSetArg(args[n], XmNbottomOffset, gui.scrollbar_height);n++;
+                   XtSetArg(args[n], XmNbottomOffset, 0);n++;
                    break;
            }
            XtSetValues(textArea, args, n);
-           XtManageChild(sb->id);
-       }
-       else
-       {
-           if (!gui.which_scrollbars[sb->type])
-           {
-               // The scrollbars of this type are all disabled, adjust the
-               // textArea attachment offset.
-               switch (sb->type)
-               {
-                   case SBAR_LEFT:
-                       XtSetArg(args[n], XmNleftOffset, 0); n++;
-                       break;
-
-                   case SBAR_RIGHT:
-                       XtSetArg(args[n], XmNrightOffset, 0); n++;
-                       break;
-
-                   case SBAR_BOTTOM:
-                       XtSetArg(args[n], XmNbottomOffset, 0);n++;
-                       break;
-               }
-               XtSetValues(textArea, args, n);
-           }
-           XtUnmanageChild(sb->id);
        }
+       XtUnmanageChild(sb->id);
     }
 }
 
@@ -1817,17 +1817,16 @@ gui_mch_create_scrollbar(
 
     sb->id = XtCreateWidget("scrollBar",
            xmScrollBarWidgetClass, textAreaForm, args, n);
+    if (sb->id == (Widget)0)
+       return;
 
-    if (sb->id != (Widget)0)
-    {
-       gui_mch_set_scrollbar_colors(sb);
-       XtAddCallback(sb->id, XmNvalueChangedCallback,
-                     scroll_cb, (XtPointer)sb->ident);
-       XtAddCallback(sb->id, XmNdragCallback,
-                     scroll_cb, (XtPointer)sb->ident);
-       XtAddEventHandler(sb->id, KeyPressMask, FALSE, gui_x11_key_hit_cb,
+    gui_mch_set_scrollbar_colors(sb);
+    XtAddCallback(sb->id, XmNvalueChangedCallback,
+           scroll_cb, (XtPointer)sb->ident);
+    XtAddCallback(sb->id, XmNdragCallback,
+           scroll_cb, (XtPointer)sb->ident);
+    XtAddEventHandler(sb->id, KeyPressMask, FALSE, gui_x11_key_hit_cb,
            (XtPointer)0);
-    }
 }
 
     void
index d48a1538fa219724c5455116081c54b8606ec91f..5671890470546e855c3b92d3e015be03f5aa3b63 100644 (file)
@@ -992,19 +992,19 @@ gui_ph_pg_add_buffer(char *name)
     char **new_titles = NULL;
 
     new_titles = ALLOC_MULT(char *, (num_panels + 1));
-    if (new_titles != NULL)
-    {
-       if (num_panels > 0)
-           memcpy(new_titles, panel_titles, num_panels * sizeof(char **));
+    if (new_titles == NULL)
+       return;
 
-       new_titles[ num_panels++ ] = name;
+    if (num_panels > 0)
+       memcpy(new_titles, panel_titles, num_panels * sizeof(char **));
 
-       PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
-               num_panels);
+    new_titles[ num_panels++ ] = name;
 
-       vim_free(panel_titles);
-       panel_titles = new_titles;
-    }
+    PtSetResource(gui.vimPanelGroup, Pt_ARG_PG_PANEL_TITLES, new_titles,
+           num_panels);
+
+    vim_free(panel_titles);
+    panel_titles = new_titles;
 }
 
     static void
@@ -1901,21 +1901,21 @@ mch_set_mouse_shape(int shape)
     void
 gui_mch_mousehide(int hide)
 {
-    if (gui.pointer_hidden != hide)
-    {
-       gui.pointer_hidden = hide;
+    if (gui.pointer_hidden == hide)
+       return;
+
+    gui.pointer_hidden = hide;
 #ifdef FEAT_MOUSESHAPE
-       if (hide)
-           PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
-                   Ph_CURSOR_NONE, 0);
-       else
-           mch_set_mouse_shape(last_shape);
-#else
+    if (hide)
        PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
-               (hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
-               0);
+               Ph_CURSOR_NONE, 0);
+    else
+       mch_set_mouse_shape(last_shape);
+#else
+    PtSetResource(gui.vimTextArea, Pt_ARG_CURSOR_TYPE,
+           (hide == MOUSE_SHOW) ? GUI_PH_MOUSE_TYPE : Ph_CURSOR_NONE,
+           0);
 #endif
-    }
 }
 
     void
index dfbb661eb68afd4690445a1d5fd6e4df8a8ccc9f..206645a4f181ec48a207ca83d04ed2c8d4321899 100644 (file)
@@ -434,12 +434,12 @@ directx_enabled(void)
     static void
 directx_binddc(void)
 {
-    if (s_textArea != NULL)
-    {
-       RECT    rect;
-       GetClientRect(s_textArea, &rect);
-       DWriteContext_BindDC(s_dwc, s_hdc, &rect);
-    }
+    if (s_textArea == NULL)
+       return;
+
+    RECT       rect;
+    GetClientRect(s_textArea, &rect);
+    DWriteContext_BindDC(s_dwc, s_hdc, &rect);
 }
 #endif
 
@@ -663,14 +663,14 @@ gui_mswin_rm_blink_timer(void)
 {
     MSG msg;
 
-    if (blink_timer != 0)
-    {
-       KillTimer(NULL, blink_timer);
-       // Eat spurious WM_TIMER messages
-       while (PeekMessageW(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
-           ;
-       blink_timer = 0;
-    }
+    if (blink_timer == 0)
+       return;
+
+    KillTimer(NULL, blink_timer);
+    // Eat spurious WM_TIMER messages
+    while (PeekMessageW(&msg, s_hwnd, WM_TIMER, WM_TIMER, PM_REMOVE))
+       ;
+    blink_timer = 0;
 }
 
 /*
@@ -888,7 +888,7 @@ _OnChar(
     modifiers = get_active_modifiers();
 
     ch = simplify_key(ch, &modifiers);
-    
+
     // Some keys need adjustment when the Ctrl modifier is used.
     ++no_reduce_keys;
     ch = may_adjust_key_for_ctrl(modifiers, ch);
@@ -1034,63 +1034,64 @@ _OnMouseButtonDown(
        else
            button = MOUSE_LEFT;
     }
-    if (button >= 0)
-    {
-       repeated_click = ((int)(currentTime - s_prevTime) < p_mouset);
 
+    if (button < 0)
+       return;
+
+    repeated_click = ((int)(currentTime - s_prevTime) < p_mouset);
+
+    /*
+     * Holding down the left and right buttons simulates pushing the middle
+     * button.
+     */
+    if (repeated_click
+           && ((button == MOUSE_LEFT && s_button_pending == MOUSE_RIGHT)
+               || (button == MOUSE_RIGHT
+                   && s_button_pending == MOUSE_LEFT)))
+    {
        /*
-        * Holding down the left and right buttons simulates pushing the middle
-        * button.
+        * Hmm, gui.c will ignore more than one button down at a time, so
+        * pretend we let go of it first.
         */
-       if (repeated_click
-               && ((button == MOUSE_LEFT && s_button_pending == MOUSE_RIGHT)
-                   || (button == MOUSE_RIGHT
-                                         && s_button_pending == MOUSE_LEFT)))
+       gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, 0x0);
+       button = MOUSE_MIDDLE;
+       repeated_click = FALSE;
+       s_button_pending = -1;
+       _OnMouseEvent(button, x, y, repeated_click, keyFlags);
+    }
+    else if ((repeated_click)
+           || (mouse_model_popup() && (button == MOUSE_RIGHT)))
+    {
+       if (s_button_pending > -1)
        {
-           /*
-            * Hmm, gui.c will ignore more than one button down at a time, so
-            * pretend we let go of it first.
-            */
-           gui_send_mouse_event(MOUSE_RELEASE, x, y, FALSE, 0x0);
-           button = MOUSE_MIDDLE;
-           repeated_click = FALSE;
+           _OnMouseEvent(s_button_pending, x, y, FALSE, keyFlags);
            s_button_pending = -1;
-           _OnMouseEvent(button, x, y, repeated_click, keyFlags);
-       }
-       else if ((repeated_click)
-               || (mouse_model_popup() && (button == MOUSE_RIGHT)))
-       {
-           if (s_button_pending > -1)
-           {
-               _OnMouseEvent(s_button_pending, x, y, FALSE, keyFlags);
-               s_button_pending = -1;
-           }
-           // TRACE("Button down at x %d, y %d\n", x, y);
-           _OnMouseEvent(button, x, y, repeated_click, keyFlags);
-       }
-       else
-       {
-           /*
-            * If this is the first press (i.e. not a multiple click) don't
-            * action immediately, but store and wait for:
-            * i) button-up
-            * ii) mouse move
-            * iii) another button press
-            * before using it.
-            * This enables us to make left+right simulate middle button,
-            * without left or right being actioned first.  The side-effect is
-            * that if you click and hold the mouse without dragging, the
-            * cursor doesn't move until you release the button. In practice
-            * this is hardly a problem.
-            */
-           s_button_pending = button;
-           s_x_pending = x;
-           s_y_pending = y;
-           s_kFlags_pending = keyFlags;
        }
-
-       s_prevTime = currentTime;
+       // TRACE("Button down at x %d, y %d\n", x, y);
+       _OnMouseEvent(button, x, y, repeated_click, keyFlags);
+    }
+    else
+    {
+       /*
+        * If this is the first press (i.e. not a multiple click) don't
+        * action immediately, but store and wait for:
+        * i) button-up
+        * ii) mouse move
+        * iii) another button press
+        * before using it.
+        * This enables us to make left+right simulate middle button,
+        * without left or right being actioned first.  The side-effect is
+        * that if you click and hold the mouse without dragging, the
+        * cursor doesn't move until you release the button. In practice
+        * this is hardly a problem.
+        */
+       s_button_pending = button;
+       s_x_pending = x;
+       s_y_pending = y;
+       s_kFlags_pending = keyFlags;
     }
+
+    s_prevTime = currentTime;
 }
 
     static void
@@ -1233,23 +1234,23 @@ _OnFindRepl(void)
        flags = FRD_REPLACEALL;
     }
 
-    if (flags != 0)
-    {
-       char_u  *p, *q;
+    if (flags == 0)
+       return;
 
-       // Call the generic GUI function to do the actual work.
-       if (s_findrep_struct.Flags & FR_WHOLEWORD)
-           flags |= FRD_WHOLE_WORD;
-       if (s_findrep_struct.Flags & FR_MATCHCASE)
-           flags |= FRD_MATCH_CASE;
-       down = (s_findrep_struct.Flags & FR_DOWN) != 0;
-       p = utf16_to_enc(s_findrep_struct.lpstrFindWhat, NULL);
-       q = utf16_to_enc(s_findrep_struct.lpstrReplaceWith, NULL);
-       if (p != NULL && q != NULL)
-           gui_do_findrepl(flags, p, q, down);
-       vim_free(p);
-       vim_free(q);
-    }
+    char_u     *p, *q;
+
+    // Call the generic GUI function to do the actual work.
+    if (s_findrep_struct.Flags & FR_WHOLEWORD)
+       flags |= FRD_WHOLE_WORD;
+    if (s_findrep_struct.Flags & FR_MATCHCASE)
+       flags |= FRD_MATCH_CASE;
+    down = (s_findrep_struct.Flags & FR_DOWN) != 0;
+    p = utf16_to_enc(s_findrep_struct.lpstrFindWhat, NULL);
+    q = utf16_to_enc(s_findrep_struct.lpstrReplaceWith, NULL);
+    if (p != NULL && q != NULL)
+       gui_do_findrepl(flags, p, q, down);
+    vim_free(p);
+    vim_free(q);
 }
 #endif
 
@@ -2932,11 +2933,11 @@ gui_mch_replace_dialog(exarg_T *eap)
     void
 gui_mch_mousehide(int hide)
 {
-    if (hide != gui.pointer_hidden)
-    {
-       ShowCursor(!hide);
-       gui.pointer_hidden = hide;
-    }
+    if (hide == gui.pointer_hidden)
+       return;
+
+    ShowCursor(!hide);
+    gui.pointer_hidden = hide;
 }
 
 #ifdef FEAT_MENU
@@ -2993,33 +2994,33 @@ _OnDestroy(HWND hwnd)
 _OnPaint(
     HWND hwnd)
 {
-    if (!IsMinimized(hwnd))
-    {
-       PAINTSTRUCT ps;
+    if (IsMinimized(hwnd))
+       return;
 
-       out_flush();        // make sure all output has been processed
-       (void)BeginPaint(hwnd, &ps);
+    PAINTSTRUCT ps;
 
-       // prevent multi-byte characters from misprinting on an invalid
-       // rectangle
-       if (has_mbyte)
-       {
-           RECT rect;
+    out_flush();           // make sure all output has been processed
+    (void)BeginPaint(hwnd, &ps);
 
-           GetClientRect(hwnd, &rect);
-           ps.rcPaint.left = rect.left;
-           ps.rcPaint.right = rect.right;
-       }
+    // prevent multi-byte characters from misprinting on an invalid
+    // rectangle
+    if (has_mbyte)
+    {
+       RECT rect;
 
-       if (!IsRectEmpty(&ps.rcPaint))
-       {
-           gui_redraw(ps.rcPaint.left, ps.rcPaint.top,
-                   ps.rcPaint.right - ps.rcPaint.left + 1,
-                   ps.rcPaint.bottom - ps.rcPaint.top + 1);
-       }
+       GetClientRect(hwnd, &rect);
+       ps.rcPaint.left = rect.left;
+       ps.rcPaint.right = rect.right;
+    }
 
-       EndPaint(hwnd, &ps);
+    if (!IsRectEmpty(&ps.rcPaint))
+    {
+       gui_redraw(ps.rcPaint.left, ps.rcPaint.top,
+               ps.rcPaint.right - ps.rcPaint.left + 1,
+               ps.rcPaint.bottom - ps.rcPaint.top + 1);
     }
+
+    EndPaint(hwnd, &ps);
 }
 
     static void
@@ -3904,21 +3905,21 @@ _OnDropFiles(
 
     DragFinish(hDrop);
 
-    if (fnames != NULL)
-    {
-       int kbd_modifiers = get_active_modifiers();
+    if (fnames == NULL)
+       return;
+
+    int kbd_modifiers = get_active_modifiers();
 
-       if ((kbd_modifiers & MOD_MASK_SHIFT) != 0)
-           modifiers |= MOUSE_SHIFT;
-       if ((kbd_modifiers & MOD_MASK_CTRL) != 0)
-           modifiers |= MOUSE_CTRL;
-       if ((kbd_modifiers & MOD_MASK_ALT) != 0)
-           modifiers |= MOUSE_ALT;
+    if ((kbd_modifiers & MOD_MASK_SHIFT) != 0)
+       modifiers |= MOUSE_SHIFT;
+    if ((kbd_modifiers & MOD_MASK_CTRL) != 0)
+       modifiers |= MOUSE_CTRL;
+    if ((kbd_modifiers & MOD_MASK_ALT) != 0)
+       modifiers |= MOUSE_ALT;
 
-       gui_handle_drop(pt.x, pt.y, modifiers, fnames, cFiles);
+    gui_handle_drop(pt.x, pt.y, modifiers, fnames, cFiles);
 
-       s_need_activate = TRUE;
-    }
+    s_need_activate = TRUE;
 }
 
     static int
@@ -4461,11 +4462,11 @@ show_sizing_tip(int cols, int rows)
     static void
 destroy_sizing_tip(void)
 {
-    if (hwndTip != NULL)
-    {
-       DestroyWindow(hwndTip);
-       hwndTip = NULL;
-    }
+    if (hwndTip == NULL)
+       return;
+
+    DestroyWindow(hwndTip);
+    hwndTip = NULL;
 }
 
     static int
@@ -5844,64 +5845,64 @@ im_set_active(int active)
     }
 # endif
 
-    if (pImmGetContext)            // if NULL imm32.dll wasn't loaded (yet)
+    if (!pImmGetContext)    // if NULL imm32.dll wasn't loaded (yet)
+       return;
+
+    if (p_imdisable)
     {
-       if (p_imdisable)
+       if (hImcOld == (HIMC)0)
        {
-           if (hImcOld == (HIMC)0)
-           {
-               hImcOld = pImmGetContext(s_hwnd);
-               if (hImcOld)
-                   pImmAssociateContext(s_hwnd, (HIMC)0);
-           }
-           active = FALSE;
+           hImcOld = pImmGetContext(s_hwnd);
+           if (hImcOld)
+               pImmAssociateContext(s_hwnd, (HIMC)0);
        }
-       else if (hImcOld != (HIMC)0)
+       active = FALSE;
+    }
+    else if (hImcOld != (HIMC)0)
+    {
+       pImmAssociateContext(s_hwnd, hImcOld);
+       hImcOld = (HIMC)0;
+    }
+
+    hImc = pImmGetContext(s_hwnd);
+    if (!hImc)
+       return;
+
+    /*
+     * for Korean ime
+     */
+    HKL hKL = GetKeyboardLayout(0);
+
+    if (LOWORD(hKL) == MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN))
+    {
+       static DWORD dwConversionSaved = 0, dwSentenceSaved = 0;
+       static BOOL bSaved = FALSE;
+
+       if (active)
        {
-           pImmAssociateContext(s_hwnd, hImcOld);
-           hImcOld = (HIMC)0;
+           // if we have a saved conversion status, restore it
+           if (bSaved)
+               pImmSetConversionStatus(hImc, dwConversionSaved,
+                       dwSentenceSaved);
+           bSaved = FALSE;
        }
-
-       hImc = pImmGetContext(s_hwnd);
-       if (hImc)
+       else
        {
-           /*
-            * for Korean ime
-            */
-           HKL hKL = GetKeyboardLayout(0);
-
-           if (LOWORD(hKL) == MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN))
+           // save conversion status and disable korean
+           if (pImmGetConversionStatus(hImc, &dwConversionSaved,
+                       &dwSentenceSaved))
            {
-               static DWORD dwConversionSaved = 0, dwSentenceSaved = 0;
-               static BOOL bSaved = FALSE;
-
-               if (active)
-               {
-                   // if we have a saved conversion status, restore it
-                   if (bSaved)
-                       pImmSetConversionStatus(hImc, dwConversionSaved,
-                                                            dwSentenceSaved);
-                   bSaved = FALSE;
-               }
-               else
-               {
-                   // save conversion status and disable korean
-                   if (pImmGetConversionStatus(hImc, &dwConversionSaved,
-                                                           &dwSentenceSaved))
-                   {
-                       bSaved = TRUE;
-                       pImmSetConversionStatus(hImc,
-                               dwConversionSaved & ~(IME_CMODE_NATIVE
-                                                      | IME_CMODE_FULLSHAPE),
-                               dwSentenceSaved);
-                   }
-               }
+               bSaved = TRUE;
+               pImmSetConversionStatus(hImc,
+                       dwConversionSaved & ~(IME_CMODE_NATIVE
+                           | IME_CMODE_FULLSHAPE),
+                       dwSentenceSaved);
            }
-
-           pImmSetOpenStatus(hImc, active);
-           pImmReleaseContext(s_hwnd, hImc);
        }
     }
+
+    pImmSetOpenStatus(hImc, active);
+    pImmReleaseContext(s_hwnd, hImc);
 }
 
 /*
@@ -6459,28 +6460,28 @@ gui_make_popup(char_u *path_name, int mouse_pos)
 {
     vimmenu_T  *menu = gui_find_menu(path_name);
 
-    if (menu != NULL)
-    {
-       POINT   p;
+    if (menu == NULL)
+       return;
 
-       // Find the position of the current cursor
-       GetDCOrgEx(s_hdc, &p);
-       if (mouse_pos)
-       {
-           int mx, my;
+    POINT      p;
 
-           gui_mch_getmouse(&mx, &my);
-           p.x += mx;
-           p.y += my;
-       }
-       else if (curwin != NULL)
-       {
-           p.x += TEXT_X(curwin->w_wincol + curwin->w_wcol + 1);
-           p.y += TEXT_Y(W_WINROW(curwin) + curwin->w_wrow + 1);
-       }
-       msg_scroll = FALSE;
-       gui_mch_show_popupmenu_at(menu, (int)p.x, (int)p.y);
+    // Find the position of the current cursor
+    GetDCOrgEx(s_hdc, &p);
+    if (mouse_pos)
+    {
+       int     mx, my;
+
+       gui_mch_getmouse(&mx, &my);
+       p.x += mx;
+       p.y += my;
     }
+    else if (curwin != NULL)
+    {
+       p.x += TEXT_X(curwin->w_wincol + curwin->w_wcol + 1);
+       p.y += TEXT_Y(W_WINROW(curwin) + curwin->w_wrow + 1);
+    }
+    msg_scroll = FALSE;
+    gui_mch_show_popupmenu_at(menu, (int)p.x, (int)p.y);
 }
 
 # if defined(FEAT_TEAROFF) || defined(PROTO)
@@ -8274,25 +8275,27 @@ gui_mch_drawsign(int row, int col, int typenr)
     static void
 close_signicon_image(signicon_t *sign)
 {
-    if (sign)
-       switch (sign->uType)
-       {
-           case IMAGE_BITMAP:
-               DeleteObject((HGDIOBJ)sign->hImage);
-               break;
-           case IMAGE_CURSOR:
-               DestroyCursor((HCURSOR)sign->hImage);
-               break;
-           case IMAGE_ICON:
-               DestroyIcon((HICON)sign->hImage);
-               break;
+    if (sign == NULL)
+       return;
+
+    switch (sign->uType)
+    {
+       case IMAGE_BITMAP:
+           DeleteObject((HGDIOBJ)sign->hImage);
+           break;
+       case IMAGE_CURSOR:
+           DestroyCursor((HCURSOR)sign->hImage);
+           break;
+       case IMAGE_ICON:
+           DestroyIcon((HICON)sign->hImage);
+           break;
 # ifdef FEAT_XPM_W32
-           case IMAGE_XPM:
-               DeleteObject((HBITMAP)sign->hImage);
-               DeleteObject((HBITMAP)sign->hShape);
-               break;
+       case IMAGE_XPM:
+           DeleteObject((HBITMAP)sign->hImage);
+           DeleteObject((HBITMAP)sign->hShape);
+           break;
 # endif
-       }
+    }
 }
 
     void *
@@ -8347,11 +8350,11 @@ gui_mch_register_sign(char_u *signfile)
     void
 gui_mch_destroy_sign(void *sign)
 {
-    if (sign)
-    {
-       close_signicon_image((signicon_t *)sign);
-       vim_free(sign);
-    }
+    if (sign == NULL)
+       return;
+
+    close_signicon_image((signicon_t *)sign);
+    vim_free(sign);
 }
 #endif
 
@@ -8561,10 +8564,11 @@ Handle_WM_Notify(HWND hwnd UNUSED, LPNMHDR pnmh)
     if (pnmh->idFrom != ID_BEVAL_TOOLTIP) // it is not our tooltip
        return;
 
-    if (cur_beval != NULL)
+    if (cur_beval == NULL)
+       return;
+
+    switch (pnmh->code)
     {
-       switch (pnmh->code)
-       {
        case TTN_SHOW:
            break;
        case TTN_POP: // Before tooltip disappear
@@ -8589,7 +8593,6 @@ Handle_WM_Notify(HWND hwnd UNUSED, LPNMHDR pnmh)
                info->uFlags |= TTF_DI_SETITEM;
            }
            break;
-       }
     }
 }
 
index fa81875437156ead17b9dc831a22356e0d4cd9f3..a239e0b547449cc17c5ef4a99474e8ec84c4fd6a 100644 (file)
@@ -2194,11 +2194,11 @@ gui_mch_get_rgb_color(int r, int g, int b)
     void
 gui_mch_set_fg_color(guicolor_T color)
 {
-    if (color != prev_fg_color)
-    {
-       XSetForeground(gui.dpy, gui.text_gc, (Pixel)color);
-       prev_fg_color = color;
-    }
+    if (color == prev_fg_color)
+       return;
+
+    XSetForeground(gui.dpy, gui.text_gc, (Pixel)color);
+    prev_fg_color = color;
 }
 
 /*
@@ -2207,11 +2207,11 @@ gui_mch_set_fg_color(guicolor_T color)
     void
 gui_mch_set_bg_color(guicolor_T color)
 {
-    if (color != prev_bg_color)
-    {
-       XSetBackground(gui.dpy, gui.text_gc, (Pixel)color);
-       prev_bg_color = color;
-    }
+    if (color == prev_bg_color)
+       return;
+
+    XSetBackground(gui.dpy, gui.text_gc, (Pixel)color);
+    prev_bg_color = color;
 }
 
 /*
@@ -2814,18 +2814,18 @@ clip_mch_set_selection(
     void
 gui_mch_menu_grey(vimmenu_T *menu, int grey)
 {
-    if (menu->id != (Widget)0)
-    {
-       gui_mch_menu_hidden(menu, False);
-       if (grey
+    if (menu->id == (Widget)0)
+       return;
+
+    gui_mch_menu_hidden(menu, False);
+    if (grey
 #ifdef FEAT_GUI_MOTIF
-               || !menu->sensitive
+           || !menu->sensitive
 #endif
-               )
-           XtSetSensitive(menu->id, False);
-       else
-           XtSetSensitive(menu->id, True);
-    }
+       )
+       XtSetSensitive(menu->id, False);
+    else
+       XtSetSensitive(menu->id, True);
 }
 
 /*
@@ -2834,13 +2834,13 @@ gui_mch_menu_grey(vimmenu_T *menu, int grey)
     void
 gui_mch_menu_hidden(vimmenu_T *menu, int hidden)
 {
-    if (menu->id != (Widget)0)
-    {
-       if (hidden)
-           XtUnmanageChild(menu->id);
-       else
-           XtManageChild(menu->id);
-    }
+    if (menu->id == (Widget)0)
+       return;
+
+    if (hidden)
+       XtUnmanageChild(menu->id);
+    else
+       XtManageChild(menu->id);
 }
 
 /*
@@ -3130,15 +3130,15 @@ gui_mch_drawsign(int row, int col, int typenr)
 {
     XImage     *sign;
 
-    if (gui.in_use && (sign = (XImage *)sign_get_image(typenr)) != NULL)
-    {
-       XClearArea(gui.dpy, gui.wid, TEXT_X(col), TEXT_Y(row) - sign->height,
-               SIGN_WIDTH, gui.char_height, FALSE);
-       XPutImage(gui.dpy, gui.wid, gui.text_gc, sign, 0, 0,
-               TEXT_X(col) + (SIGN_WIDTH - sign->width) / 2,
-               TEXT_Y(row) - sign->height,
-               sign->width, sign->height);
-    }
+    if (!gui.in_use || (sign = (XImage *)sign_get_image(typenr)) == NULL)
+       return;
+
+    XClearArea(gui.dpy, gui.wid, TEXT_X(col), TEXT_Y(row) - sign->height,
+           SIGN_WIDTH, gui.char_height, FALSE);
+    XPutImage(gui.dpy, gui.wid, gui.text_gc, sign, 0, 0,
+           TEXT_X(col) + (SIGN_WIDTH - sign->width) / 2,
+           TEXT_Y(row) - sign->height,
+           sign->width, sign->height);
 }
 
     void *
@@ -3202,18 +3202,18 @@ static int last_shape = 0;
 gui_mch_mousehide(
     int                hide)   // TRUE = use blank ptr, FALSE = use parent ptr
 {
-    if (gui.pointer_hidden != hide)
-    {
-       gui.pointer_hidden = hide;
-       if (hide)
-           XDefineCursor(gui.dpy, gui.wid, gui.blank_pointer);
-       else
+    if (gui.pointer_hidden == hide)
+       return;
+
+    gui.pointer_hidden = hide;
+    if (hide)
+       XDefineCursor(gui.dpy, gui.wid, gui.blank_pointer);
+    else
 #ifdef FEAT_MOUSESHAPE
-           mch_set_mouse_shape(last_shape);
+       mch_set_mouse_shape(last_shape);
 #else
-           XUndefineCursor(gui.dpy, gui.wid);
+    XUndefineCursor(gui.dpy, gui.wid);
 #endif
-    }
 }
 
 #if defined(FEAT_MOUSESHAPE) || defined(PROTO)
@@ -3280,22 +3280,22 @@ mch_set_mouse_shape(int shape)
     void
 gui_mch_menu_set_tip(vimmenu_T *menu)
 {
-    if (menu->id != NULL && menu->parent != NULL
-                                      && menu_is_toolbar(menu->parent->name))
+    if (menu->id == NULL || menu->parent == NULL
+                               || !menu_is_toolbar(menu->parent->name))
+       return;
+
+    // Always destroy and create the balloon, in case the string was
+    // changed.
+    if (menu->tip != NULL)
     {
-       // Always destroy and create the balloon, in case the string was
-       // changed.
-       if (menu->tip != NULL)
-       {
-           gui_mch_destroy_beval_area(menu->tip);
-           menu->tip = NULL;
-       }
-       if (menu->strings[MENU_INDEX_TIP] != NULL)
-           menu->tip = gui_mch_create_beval_area(
-                   menu->id,
-                   menu->strings[MENU_INDEX_TIP],
-                   NULL,
-                   NULL);
+       gui_mch_destroy_beval_area(menu->tip);
+       menu->tip = NULL;
     }
+    if (menu->strings[MENU_INDEX_TIP] != NULL)
+       menu->tip = gui_mch_create_beval_area(
+               menu->id,
+               menu->strings[MENU_INDEX_TIP],
+               NULL,
+               NULL);
 }
 #endif
index 6998f0c4363150e43a42dd1d999b890850027e16..163cbdaa0f86eee22fbaeeb2511deb4d35ea39d3 100644 (file)
@@ -199,32 +199,32 @@ im_set_active(int active)
     void
 xim_set_focus(int focus)
 {
-    if (xic != NULL)
-    {
-       if (focus)
-           gtk_im_context_focus_in(xic);
-       else
-           gtk_im_context_focus_out(xic);
-    }
+    if (xic == NULL)
+       return;
+
+    if (focus)
+       gtk_im_context_focus_in(xic);
+    else
+       gtk_im_context_focus_out(xic);
 }
 
     void
 im_set_position(int row, int col)
 {
-    if (xic != NULL)
-    {
-       GdkRectangle area;
+    if (xic == NULL)
+       return;
 
-       area.x = FILL_X(col);
-       area.y = FILL_Y(row);
-       area.width  = gui.char_width * (mb_lefthalve(row, col) ? 2 : 1);
-       area.height = gui.char_height;
+    GdkRectangle area;
 
-       gtk_im_context_set_cursor_location(xic, &area);
+    area.x = FILL_X(col);
+    area.y = FILL_Y(row);
+    area.width  = gui.char_width * (mb_lefthalve(row, col) ? 2 : 1);
+    area.height = gui.char_height;
 
-       if (p_imst == IM_OVER_THE_SPOT)
-           im_preedit_window_set_position();
-    }
+    gtk_im_context_set_cursor_location(xic, &area);
+
+    if (p_imst == IM_OVER_THE_SPOT)
+       im_preedit_window_set_position();
 }
 
 #  if 0 || defined(PROTO) // apparently only used in gui_x11.c
index d2efc12c60a92c522aa869fb8511971dfe096708..560fb9d00df19aed0c0072c1193a27b42fdd024c 100644 (file)
@@ -695,6 +695,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1158,
 /**/
     1157,
 /**/