■■■■■■□■■■■■■□■■■■■■□□□□□■■□■■■■■■
■■□□■■□■■□□■■□■■□□□□□■■■■■■□■■□□□□
■■□□■■□■■□□■■□■■□□□□□■■□□■■□■■■■■■
■■□□■■□■■□□■■□■■□□□□□■■□□■■□□□□□■■
■■□□■■□■■■■■■□■■■■■■□■■■■■■□■■■■■■

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

windows版gvimのタブをホイールクリックで閉じるパッチ(win32のみ)

以前同じパッチを記事に書いた事があるですが、バージョン上がってるので一応差分取り直し。
7.3.434 +kaoriyaパッチの上から当ててください。
[raw]
*** src/gui_w32.c   Fri Feb 17 00:30:36 2012
--- src/gui_w32.c.mod   Fri Feb 17 00:31:10 2012
***************
*** 4283,4288 ****
--- 4283,4349 ----
  #endif
  
  #if defined(FEAT_GUI_TABLINE) || defined(PROTO)
+ static tabpage_T* s_tp;
+ static LONG DefTabControlProc;
+ static tabpage_T* GetTabFromPoint(HWND hWnd, POINT pt){
+     tabpage_T* ptp;
+     ptp = NULL;
+     if (gui_mch_showing_tabline()){
+   TCHITTESTINFO htinfo;
+   htinfo.pt = pt;
+   /* ignore if a window under cusor is not tabcontrol. */
+   if (s_tabhwnd == hWnd){
+       int idx;
+       idx = TabCtrl_HitTest(s_tabhwnd, &htinfo);
+       if (idx != -1){
+       ptp = find_tabpage(idx + 1);
+       }
+   }
+     }
+     return ptp;
+ }
+ static LRESULT CALLBACK MyTabControlProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
+     POINT pt;
+     switch (uMsg){
+   case WM_MBUTTONDOWN:
+       {
+       pt.x = LOWORD(lParam);
+       pt.y = HIWORD(lParam);
+       s_tp = GetTabFromPoint(hWnd, pt);
+       SetCapture(hWnd);
+       break;
+       }
+   case WM_MBUTTONUP:
+       {
+       ReleaseCapture();
+       /* when the mouse events was executed on the same tab */
+       pt.x = LOWORD(lParam);
+       pt.y = HIWORD(lParam);
+       if (GetTabFromPoint(hWnd, pt) == s_tp){
+           BOOL bResult;
+           bResult = FALSE;
+           if (s_tp == curtab){
+           if (first_tabpage->tp_next != NULL){
+               tabpage_close(FALSE);
+               bResult = TRUE;
+           }
+           }
+           else if (s_tp != NULL){
+           tabpage_close_other(s_tp, FALSE);
+           bResult = TRUE;
+           }

+           if  (bResult == TRUE) update_screen(0);
+       }
+       s_tp = NULL;
+       break;
+       }
+   default:
+       break;
+     }
+     /* call default TabControl proc */
+     return CallWindowProc(DefTabControlProc, hWnd, uMsg, wParam, lParam);
+ }
      static void
  initialise_tabline(void)
  {
***************
*** 4293,4298 ****
--- 4354,4361 ----
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, s_hwnd, NULL, s_hinst, NULL);
  
+     DefTabControlProc = SetWindowLong(s_tabhwnd, GWL_WNDPROC, (LONG)MyTabControlProc);

      gui.tabline_height = TABLINE_HEIGHT;
  
  # ifdef USE_SYSMENU_FONT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2012/02/17(金) 00:45:39|
  2. フリーソフト
  3. | トラックバック:0
  4. | コメント:0
<<02/16のツイートまとめ | ホーム | 02/15のツイートまとめ>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://nocd5.blog59.fc2.com/tb.php/518-2f6f6864
この記事にトラックバックする(FC2ブログユーザー)
home

プロフィール

Author:nocd5
30歳(男)
会社員

Last.fm



最近の記事

カテゴリー

カレンダー

07 | 2017/08 | 09
Sun Mon Tue Wed Thu Fri Sat
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

最近のコメント

最近のトラックバック

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

Amazonアソシエイト

RSSフィード

リンク

このブログをリンクに追加する

FC2ブログランキング

FC2Blog Ranking

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。