OSDN Git Service

Add "Enable Auto Max Width" menu item to Tab Bar context menu
authorsdottaka <sdottaka@sourceforge.net>
Sat, 19 Jul 2014 08:07:34 +0000 (17:07 +0900)
committersdottaka <sdottaka@sourceforge.net>
Sat, 19 Jul 2014 08:07:34 +0000 (17:07 +0900)
--HG--
branch : stable

Src/Common/MDITabBar.cpp
Src/Common/MDITabBar.h
Src/MainFrm.cpp
Src/Merge.rc
Src/OptionsDef.h
Src/OptionsInit.cpp
Src/resource.h

index 48e3ef3..afed9bf 100644 (file)
@@ -118,10 +118,13 @@ void CMDITabBar::OnContextMenu(CWnd *pWnd, CPoint point)
        if (!pPopup->GetMenuItemInfo(ID_CLOSE_OTHER_TABS, &mii, FALSE))
        {
                pPopup->AppendMenu(MF_SEPARATOR, 0, _T(""));
+               pPopup->AppendMenu(MF_STRING, ID_TABBAR_AUTO_MAXWIDTH, LoadResString(IDS_TABBAR_AUTO_MAXWIDTH).c_str());
+               pPopup->AppendMenu(MF_SEPARATOR, 0, _T(""));
                pPopup->AppendMenu(MF_STRING, ID_CLOSE_OTHER_TABS, LoadResString(IDS_CLOSE_OTHER_TABS).c_str());
                pPopup->AppendMenu(MF_STRING, ID_CLOSE_RIGHT_TABS, LoadResString(IDS_CLOSE_RIGHT_TABS).c_str());
                pPopup->AppendMenu(MF_STRING, ID_CLOSE_LEFT_TABS, LoadResString(IDS_CLOSE_LEFT_TABS).c_str());
        }
+       pPopup->CheckMenuItem(ID_TABBAR_AUTO_MAXWIDTH, m_bAutoMaxWidth ? MF_CHECKED : MF_UNCHECKED);
        // invoke context menu
        int command = pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD, point.x, point.y,
                this);
@@ -146,6 +149,10 @@ void CMDITabBar::OnContextMenu(CWnd *pWnd, CPoint point)
                }
                break;
        }
+       case ID_TABBAR_AUTO_MAXWIDTH:
+               m_bAutoMaxWidth = !m_bAutoMaxWidth;
+               UpdateTabs();
+               break;
        default:
                pMDIChild->SendMessage(WM_SYSCOMMAND, command);
        }
@@ -182,7 +189,11 @@ void CMDITabBar::UpdateTabs()
                }
        }
 
-       int nMaxTitleLength = static_cast<int>(MDITABBAR_MAXTITLELENGTH - (MDIFrameList.GetCount() - 1) * 6);
+       int nMaxTitleLength;
+       if (m_bAutoMaxWidth)
+               nMaxTitleLength = static_cast<int>(MDITABBAR_MAXTITLELENGTH - (MDIFrameList.GetCount() - 1) * 6);
+       else
+               nMaxTitleLength = MDITABBAR_MAXTITLELENGTH;
        if (nMaxTitleLength < MDITABBAR_MINTITLELENGTH)
                nMaxTitleLength = MDITABBAR_MINTITLELENGTH;
 
index e7db8fc..efe9d0f 100644 (file)
@@ -25,12 +25,15 @@ private:
        bool m_bMouseTracking;
        bool m_bCloseButtonDown;
        CRect m_rcCurrentCloseButtom;
+       bool  m_bAutoMaxWidth;
 
 public:
-       CMDITabBar() : m_bInSelchange(FALSE), m_pMainFrame(NULL), m_bMouseTracking(false), m_bCloseButtonDown(false) {}
+       CMDITabBar() : m_bInSelchange(FALSE), m_pMainFrame(NULL), m_bMouseTracking(false), m_bCloseButtonDown(false), m_bAutoMaxWidth(true) {}
        virtual ~CMDITabBar() {}
        BOOL Create(CMDIFrameWnd* pParentWnd);
        void UpdateTabs();
+       bool GetAutoMaxWidth() const { return m_bAutoMaxWidth; }
+       void SetAutoMaxWidth(bool bAutoMaxWidth) { m_bAutoMaxWidth = bAutoMaxWidth; }
 
        virtual void OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHndler) {}
        virtual CSize CalcFixedLayout(BOOL bStretch, BOOL bHorz);
index 1ca4e7d..f631d1c 100644 (file)
@@ -303,6 +303,7 @@ CMainFrame::CMainFrame()
 
 CMainFrame::~CMainFrame()
 {
+       GetOptionsMgr()->SaveOption(OPT_TABBAR_AUTO_MAXWIDTH, m_wndTabBar.GetAutoMaxWidth());
        sd_Close();
 }
 
@@ -371,6 +372,8 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
                TRACE0("Failed to create tab bar\n");
                return -1;      // fail to create
        }
+       m_wndTabBar.SetAutoMaxWidth(GetOptionsMgr()->GetBool(OPT_TABBAR_AUTO_MAXWIDTH));
+
        if (GetOptionsMgr()->GetBool(OPT_SHOW_TABBAR) == false)
                CMDIFrameWnd::ShowControlBar(&m_wndTabBar, false, 0);
 
index 7f2d6f8..f281da0 100644 (file)
@@ -3063,6 +3063,7 @@ BEGIN
     IDS_CLOSE_LEFT_TABS    "Close &Left Tabs"
     IDS_CLOSE_RIGHT_TABS   "Close R&ight Tabs"
     IDS_CLOSE_OTHER_TABS   "Close &Other Tabs"
+    IDS_TABBAR_AUTO_MAXWIDTH "Enable &Auto Max Width"
 END
 
 STRINGTABLE 
index 26d3476..98aba8b 100644 (file)
@@ -185,6 +185,9 @@ const TCHAR OPT_PLUGINS_ENABLED[] = _T("Settings/PluginsEnabled");
 // Startup options
 const TCHAR OPT_SHOW_SELECT_FILES_AT_STARTUP[] = _T("Settings/ShowFileDialog");
 
+// MDI Tab Bar
+const TCHAR OPT_TABBAR_AUTO_MAXWIDTH[] = _T("Settings/TabBarAutoMaxWidth");
+
 // Font options
 const TCHAR OPT_FONT_FILECMP[] = _T("Font/");
 const TCHAR OPT_FONT_DIRCMP[] = _T("FontDirCompare/");
index c5031fa..f1ae3f8 100644 (file)
@@ -159,6 +159,8 @@ void CMergeApp::OptionsInit()
 
        m_pOptions->InitOption(OPT_PLUGINS_ENABLED, true);
 
+       m_pOptions->InitOption(OPT_TABBAR_AUTO_MAXWIDTH, true);
+
        Options::DiffOptions::SetDefaults();
        Options::DiffColors::SetDefaults();
        Options::Font::SetDefaults();
index 7433df6..fd00170 100644 (file)
 #define ID_NO_MRU                       33208
 #define ID_MRU_FIRST                    33209
 #define ID_MRU_LAST                     33217
+#define ID_TABBAR_AUTO_MAXWIDTH         33218
+#define IDS_TABBAR_AUTO_MAXWIDTH        33219
 
 // Next default values for new objects
 //
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_3D_CONTROLS                     1
 #define _APS_NEXT_RESOURCE_VALUE        239
-#define _APS_NEXT_COMMAND_VALUE         33218
+#define _APS_NEXT_COMMAND_VALUE         33220
 #define _APS_NEXT_CONTROL_VALUE         1357
 #define _APS_NEXT_SYMED_VALUE           114
 #endif