]> granicus.if.org Git - vim/commitdiff
Make it possible to drag a tab page label to another position. (Paul B. Mahol)
authorBram Moolenaar <Bram@vim.org>
Sat, 17 Jul 2010 14:30:42 +0000 (16:30 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 17 Jul 2010 14:30:42 +0000 (16:30 +0200)
runtime/doc/tabpage.txt
runtime/doc/todo.txt
src/normal.c

index 4276ade2e7a9d8277035a975ac6ebbba7d8cf79d..34b424355e7c54bc7d5e812c35ed74ab9e2dcba3 100644 (file)
@@ -46,7 +46,7 @@ close the tab page.
 OPENING A NEW TAB PAGE:
 
 When starting Vim "vim -p filename ..." opens each file argument in a separate
-tab page (up to 'tabpagemax'). |-p|
+tab page (up to 'tabpagemax').  See |-p|
 
 A double click with the mouse in the non-GUI tab pages line opens a new, empty
 tab page.  It is placed left of the position of the click.  The first click
index 284968fbc4f961de417f5be008fa28c423d8f0bf..364ea491cc4a77bee206a8a4357f5027670bd0a2 100644 (file)
@@ -30,6 +30,8 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|.
                                                        *known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+GTK: torn-off menu doesn't work.
+
 Cursor positioning wrong with 0x200e character. (John Becket, 2010 May 6)
 
 Test 69 breaks on MS-Windows, both 32 and 64 builds. (George Reilly, 2010 Feb
@@ -1091,9 +1093,6 @@ Before (beta) release 7.3:
 
 Vim 7.3:
 Patches to possibly include:
-- 9   Make it possible to drag a tab page label to another position with the
-    mouse.
-    Patch by Paul B. Mahol, 2008 Aug 29.
 -   Mac: Patch to disable antialias. (LC Mi, 2008 Aug 23)  Tested on 10.5 and
     10.4.
 -   Patch for adding "J" flag to 'cinoptions': placement of jump label.  (Manuel
index 727ecd059004940f306880680ec3d320b9a16e2b..5d79f35cd59ab19be5378360c34f95819ceb71a2 100644 (file)
@@ -2281,6 +2281,9 @@ do_mouse(oap, c, dir, count, fixindent)
     pos_T      start_visual;
     int                moved;          /* Has cursor moved? */
     int                in_status_line; /* mouse in status line */
+#ifdef FEAT_WINDOWS
+    static int in_tab_line = FALSE; /* mouse clicked in tab line */
+#endif
 #ifdef FEAT_VERTSPLIT
     int                in_sep_line;    /* mouse in vertical separator line */
 #endif
@@ -2358,7 +2361,16 @@ do_mouse(oap, c, dir, count, fixindent)
        if (!got_click)                 /* didn't get click, ignore */
            return FALSE;
        if (!is_drag)                   /* release, reset got_click */
+       {
            got_click = FALSE;
+#ifdef FEAT_WINDOWS
+           if (in_tab_line)
+           {
+               in_tab_line = FALSE;
+               return FALSE;
+           }
+#endif
+       }
     }
 
 #ifndef FEAT_VISUAL
@@ -2512,8 +2524,14 @@ do_mouse(oap, c, dir, count, fixindent)
     if (mouse_row == 0 && firstwin->w_winrow > 0)
     {
        if (is_drag)
+       {
+           if (in_tab_line)
+           {
+               c1 = TabPageIdxs[mouse_col];
+               tabpage_move(c1 <= 0 ? 9999 : c1 - 1);
+           }
            return FALSE;
-       got_click = FALSE;      /* ignore mouse-up and drag events */
+       }
 
        /* click in a tab selects that tab page */
        if (is_click
@@ -2522,6 +2540,7 @@ do_mouse(oap, c, dir, count, fixindent)
 # endif
                && mouse_col < Columns)
        {
+           in_tab_line = TRUE;
            c1 = TabPageIdxs[mouse_col];
            if (c1 >= 0)
            {
@@ -2563,6 +2582,13 @@ do_mouse(oap, c, dir, count, fixindent)
        }
        return TRUE;
     }
+    else if (is_drag && in_tab_line)
+    {
+       c1 = TabPageIdxs[mouse_col];
+       tabpage_move(c1 <= 0 ? 9999 : c1 - 1);
+       return FALSE;
+    }
+
 #endif
 
     /*