mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-28 16:24:27 +02:00
Add "Show only pinned button" option to prevent from inacurate click
Fix #15963, close #16334
This commit is contained in:
parent
8537f022b1
commit
f7884726cf
@ -4087,7 +4087,7 @@ LRESULT Notepad_plus::process(HWND hwnd, UINT message, WPARAM wParam, LPARAM lPa
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
case NPPM_INTERNAL_DRAWINACTIVETABBARBUTTON:
|
||||
case NPPM_INTERNAL_REFRESHTABBAR:
|
||||
{
|
||||
::SendMessage(_mainDocTab.getHSelf(), NPPM_INTERNAL_REFRESHDARKMODE, 0, 0);
|
||||
::SendMessage(_subDocTab.getHSelf(), NPPM_INTERNAL_REFRESHDARKMODE, 0, 0);
|
||||
|
@ -4952,6 +4952,17 @@ void NppParameters::feedGUIParameters(TiXmlNode *node)
|
||||
_nppGUI._tabStatus |= TAB_PINBUTTON;
|
||||
}
|
||||
|
||||
val = element->Attribute(L"showOnlyPinnedButton");
|
||||
if (val)
|
||||
{
|
||||
if (!lstrcmp(val, L"yes"))
|
||||
_nppGUI._tabStatus |= TAB_SHOWONLYPINNEDBUTTON;
|
||||
else if (!lstrcmp(val, L"no"))
|
||||
_nppGUI._tabStatus |= 0;
|
||||
else
|
||||
isFailed = true;
|
||||
}
|
||||
|
||||
val = element->Attribute(L"buttonsOninactiveTabs");
|
||||
if (val)
|
||||
{
|
||||
@ -7297,7 +7308,7 @@ void NppParameters::createXmlTreeFromGUIParams()
|
||||
GUIConfigElement->InsertEndChild(TiXmlText(pStr));
|
||||
}
|
||||
|
||||
// <GUIConfig name="TabBar" dragAndDrop="yes" drawTopBar="yes" drawInactiveTab="yes" reduce="yes" closeButton="yes" doubleClick2Close="no" vertical="no" multiLine="no" hide="no" quitOnEmpty="no" iconSetNumber="0" />
|
||||
// <GUIConfig name="TabBar" dragAndDrop="yes" drawTopBar="yes" drawInactiveTab="yes" reduce="yes" closeButton="yes" pinButton="yes" showOnlyPinnedButton="no" buttonsOninactiveTabs="no" doubleClick2Close="no" vertical="no" multiLine="no" hide="no" quitOnEmpty="no" iconSetNumber="0" />
|
||||
{
|
||||
TiXmlElement *GUIConfigElement = (newGUIRoot->InsertEndChild(TiXmlElement(L"GUIConfig")))->ToElement();
|
||||
GUIConfigElement->SetAttribute(L"name", L"TabBar");
|
||||
@ -7320,6 +7331,9 @@ void NppParameters::createXmlTreeFromGUIParams()
|
||||
pStr = (_nppGUI._tabStatus & TAB_PINBUTTON) ? L"yes" : L"no";
|
||||
GUIConfigElement->SetAttribute(L"pinButton", pStr);
|
||||
|
||||
pStr = (_nppGUI._tabStatus & TAB_SHOWONLYPINNEDBUTTON) ? L"yes" : L"no";
|
||||
GUIConfigElement->SetAttribute(L"showOnlyPinnedButton", pStr);
|
||||
|
||||
pStr = (_nppGUI._tabStatus & TAB_INACTIVETABSHOWBUTTON) ? L"yes" : L"no";
|
||||
GUIConfigElement->SetAttribute(L"buttonsOninactiveTabs", pStr);
|
||||
|
||||
|
@ -77,6 +77,7 @@ const int TAB_QUITONEMPTY = 512; // 0000 0010 0000 0000
|
||||
const int TAB_ALTICONS = 1024; // 0000 0100 0000 0000
|
||||
const int TAB_PINBUTTON = 2048; // 0000 1000 0000 0000
|
||||
const int TAB_INACTIVETABSHOWBUTTON = 4096; // 0001 0000 0000 0000
|
||||
const int TAB_SHOWONLYPINNEDBUTTON = 8192; // 0010 0000 0000 0000
|
||||
|
||||
const bool activeText = true;
|
||||
const bool activeNumeric = false;
|
||||
|
@ -57,19 +57,20 @@ BEGIN
|
||||
CONTROL "Hide",IDC_CHECK_HIDESTATUSBAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,45,179,174,10
|
||||
|
||||
GROUPBOX "Tab Bar",IDC_TABBAR_GB_STATIC,235,0,177,195,BS_CENTER
|
||||
CONTROL "Hide",IDC_CHECK_TAB_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,15,100,10
|
||||
CONTROL "Multi-line",IDC_CHECK_TAB_MULTILINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,28,164,10
|
||||
CONTROL "Vertical",IDC_CHECK_TAB_VERTICAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,41,164,10
|
||||
CONTROL "Reduce",IDC_CHECK_REDUCE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,54,164,10
|
||||
CONTROL "Alternate icons",IDC_CHECK_TAB_ALTICONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,67,164,10
|
||||
CONTROL "Lock (no drag and drop)",IDC_CHECK_LOCK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,80,164,10
|
||||
CONTROL "Change inactive tab color",IDC_CHECK_DRAWINACTIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,93,164,10
|
||||
CONTROL "Draw a coloured bar on active tab",IDC_CHECK_ORANGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,106,164,10
|
||||
CONTROL "Show close button",IDC_CHECK_ENABLETABCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,119,164,10
|
||||
CONTROL "Enable pin tab feature",IDC_CHECK_ENABLETABPIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,132,164,10
|
||||
CONTROL "Show buttons on inactive tabs",IDC_CHECK_INACTTABDRAWBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,145,164,10
|
||||
CONTROL "Double click to close document",IDC_CHECK_DBCLICK2CLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,158,164,10
|
||||
CONTROL "Exit on close the last tab",IDC_CHECK_TAB_LAST_EXIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,171,164,10
|
||||
CONTROL "Hide",IDC_CHECK_TAB_HIDE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,10,100,10
|
||||
CONTROL "Multi-line",IDC_CHECK_TAB_MULTILINE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,23,164,10
|
||||
CONTROL "Vertical",IDC_CHECK_TAB_VERTICAL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,36,164,10
|
||||
CONTROL "Reduce",IDC_CHECK_REDUCE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,49,164,10
|
||||
CONTROL "Alternate icons",IDC_CHECK_TAB_ALTICONS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,62,164,10
|
||||
CONTROL "Lock (no drag and drop)",IDC_CHECK_LOCK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,75,164,10
|
||||
CONTROL "Change inactive tab color",IDC_CHECK_DRAWINACTIVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,88,164,10
|
||||
CONTROL "Draw a coloured bar on active tab",IDC_CHECK_ORANGE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,101,164,10
|
||||
CONTROL "Show close button",IDC_CHECK_ENABLETABCLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,114,164,10
|
||||
CONTROL "Enable pin tab feature",IDC_CHECK_ENABLETABPIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,127,164,10
|
||||
CONTROL "Show only pinned button",IDC_CHECK_SHOWONLYPINNEDBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,140,164,10
|
||||
CONTROL "Show buttons on inactive tabs",IDC_CHECK_INACTTABDRAWBUTTON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,153,164,10
|
||||
CONTROL "Double click to close document",IDC_CHECK_DBCLICK2CLOSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,166,164,10
|
||||
CONTROL "Exit on close the last tab",IDC_CHECK_TAB_LAST_EXIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,241,179,164,10
|
||||
END
|
||||
|
||||
IDD_PREFERENCE_SUB_EDITING DIALOGEX 115, 10, 460, 205
|
||||
|
@ -604,10 +604,12 @@ intptr_t CALLBACK GeneralSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
|
||||
bool showCloseButton = tabBarStatus & TAB_CLOSEBUTTON;
|
||||
bool enablePinButton = tabBarStatus & TAB_PINBUTTON;
|
||||
bool showOnlyPinnedButton = tabBarStatus & TAB_SHOWONLYPINNEDBUTTON;
|
||||
bool showButtonOnInactiveTabs = tabBarStatus & TAB_INACTIVETABSHOWBUTTON;
|
||||
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_ENABLETABCLOSE, BM_SETCHECK, showCloseButton, 0);
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_ENABLETABPIN, BM_SETCHECK, enablePinButton, 0);
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_SHOWONLYPINNEDBUTTON, BM_SETCHECK, showOnlyPinnedButton, 0);
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_INACTTABDRAWBUTTON, BM_SETCHECK, showButtonOnInactiveTabs, 0);
|
||||
|
||||
if (!(showCloseButton || enablePinButton))
|
||||
@ -617,6 +619,11 @@ intptr_t CALLBACK GeneralSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_INACTTABDRAWBUTTON), FALSE);
|
||||
}
|
||||
|
||||
if (!enablePinButton)
|
||||
{
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_SHOWONLYPINNEDBUTTON), FALSE);
|
||||
}
|
||||
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_DBCLICK2CLOSE, BM_SETCHECK, tabBarStatus & TAB_DBCLK2CLOSE, 0);
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_TAB_VERTICAL, BM_SETCHECK, tabBarStatus & TAB_VERTICAL, 0);
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_TAB_MULTILINE, BM_SETCHECK, tabBarStatus & TAB_MULTILINE, 0);
|
||||
@ -727,6 +734,7 @@ intptr_t CALLBACK GeneralSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_DRAWINACTIVE), !toBeHidden);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_ENABLETABCLOSE), !toBeHidden);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_ENABLETABPIN), !toBeHidden);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_SHOWONLYPINNEDBUTTON), !toBeHidden);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_INACTTABDRAWBUTTON), !toBeHidden);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_DBCLICK2CLOSE), !toBeHidden);
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_TAB_LAST_EXIT), !toBeHidden);
|
||||
@ -862,9 +870,14 @@ intptr_t CALLBACK GeneralSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
{
|
||||
nppGUI._tabStatus &= ~TAB_INACTIVETABSHOWBUTTON;
|
||||
::SendDlgItemMessage(_hSelf, IDC_CHECK_INACTTABDRAWBUTTON, BM_SETCHECK, FALSE, 0);
|
||||
::SendMessage(::GetParent(_hParent), NPPM_INTERNAL_DRAWINACTIVETABBARBUTTON, 0, 0);
|
||||
::SendMessage(::GetParent(_hParent), NPPM_INTERNAL_REFRESHTABBAR, 0, 0);
|
||||
}
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_INACTTABDRAWBUTTON), showCloseButton || enablePinButton);
|
||||
|
||||
if (wParam == IDC_CHECK_ENABLETABPIN)
|
||||
{
|
||||
::EnableWindow(::GetDlgItem(_hSelf, IDC_CHECK_SHOWONLYPINNEDBUTTON), enablePinButton);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@ -877,7 +890,19 @@ intptr_t CALLBACK GeneralSubDlg::run_dlgProc(UINT message, WPARAM wParam, LPARAM
|
||||
else
|
||||
nppGUI._tabStatus &= ~TAB_INACTIVETABSHOWBUTTON;
|
||||
|
||||
::SendMessage(::GetParent(_hParent), NPPM_INTERNAL_DRAWINACTIVETABBARBUTTON, 0, 0);
|
||||
::SendMessage(::GetParent(_hParent), NPPM_INTERNAL_REFRESHTABBAR, 0, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
case IDC_CHECK_SHOWONLYPINNEDBUTTON:
|
||||
{
|
||||
const bool isChecked = isCheckedOrNot(IDC_CHECK_SHOWONLYPINNEDBUTTON);
|
||||
if (isChecked)
|
||||
nppGUI._tabStatus |= TAB_SHOWONLYPINNEDBUTTON;
|
||||
else
|
||||
nppGUI._tabStatus &= ~TAB_SHOWONLYPINNEDBUTTON;
|
||||
|
||||
::SendMessage(::GetParent(_hParent), NPPM_INTERNAL_REFRESHTABBAR, 0, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -54,6 +54,7 @@
|
||||
#define IDC_CHECK_HIDERIGHTSHORTCUTSOFMENUBAR (IDD_PREFERENCE_SUB_GENRAL + 32)
|
||||
#define IDC_STATUSBAR_GB_STATIC (IDD_PREFERENCE_SUB_GENRAL + 33)
|
||||
#define IDC_CHECK_HIDESTATUSBAR (IDD_PREFERENCE_SUB_GENRAL + 34)
|
||||
#define IDC_CHECK_SHOWONLYPINNEDBUTTON (IDD_PREFERENCE_SUB_GENRAL + 35)
|
||||
|
||||
#define IDD_PREFERENCE_SUB_MULTIINSTANCE 6150 //(IDD_PREFERENCE_BOX + 150)
|
||||
#define IDC_MULTIINST_GB_STATIC (IDD_PREFERENCE_SUB_MULTIINSTANCE + 1)
|
||||
|
@ -25,8 +25,6 @@
|
||||
#define IDC_DRAG_PLUS_TAB 1406
|
||||
#define IDC_DRAG_OUT_TAB 1407
|
||||
|
||||
|
||||
|
||||
COLORREF TabBarPlus::_activeTextColour = ::GetSysColor(COLOR_BTNTEXT);
|
||||
COLORREF TabBarPlus::_activeTopBarFocusedColour = RGB(250, 170, 60);
|
||||
COLORREF TabBarPlus::_activeTopBarUnfocusedColour = RGB(250, 210, 150);
|
||||
@ -570,18 +568,18 @@ void TabBarPlus::setPinBtnImageList()
|
||||
iconSize = g_TabPinBtnSize_DM;
|
||||
|
||||
if (showInactiveTabButtons)
|
||||
ids = { IDR_PINTAB_DM, IDR_PINTAB_INACT_DM, IDR_PINTAB_HOVERIN_DM, IDR_PINTAB_HOVERONTAB_DM, IDR_PINTAB_PINNED_DM, IDR_PINTAB_PINNEDHOVERIN_DM };
|
||||
ids = { IDR_PINTAB_DM, IDR_PINTAB_INACT_DM, IDR_PINTAB_HOVERIN_DM, IDR_PINTAB_HOVERONTAB_DM, IDR_PINTAB_PINNED_DM, IDR_PINTAB_PINNEDHOVERIN_DM, IDR_PINTAB_INACT_EMPTY_DM };
|
||||
else
|
||||
ids = { IDR_PINTAB_DM, IDR_PINTAB_INACT_EMPTY_DM, IDR_PINTAB_HOVERIN_DM, IDR_PINTAB_HOVERONTAB_DM, IDR_PINTAB_PINNED_DM, IDR_PINTAB_PINNEDHOVERIN_DM };
|
||||
ids = { IDR_PINTAB_DM, IDR_PINTAB_INACT_EMPTY_DM, IDR_PINTAB_HOVERIN_DM, IDR_PINTAB_HOVERONTAB_DM, IDR_PINTAB_PINNED_DM, IDR_PINTAB_PINNEDHOVERIN_DM, IDR_PINTAB_INACT_EMPTY_DM };
|
||||
}
|
||||
else
|
||||
{
|
||||
iconSize = g_TabPinBtnSize;
|
||||
|
||||
if (showInactiveTabButtons)
|
||||
ids = { IDR_PINTAB, IDR_PINTAB_INACT, IDR_PINTAB_HOVERIN, IDR_PINTAB_HOVERONTAB, IDR_PINTAB_PINNED, IDR_PINTAB_PINNEDHOVERIN };
|
||||
ids = { IDR_PINTAB, IDR_PINTAB_INACT, IDR_PINTAB_HOVERIN, IDR_PINTAB_HOVERONTAB, IDR_PINTAB_PINNED, IDR_PINTAB_PINNEDHOVERIN, IDR_PINTAB_INACT_EMPTY };
|
||||
else
|
||||
ids = { IDR_PINTAB, IDR_PINTAB_INACT_EMPTY, IDR_PINTAB_HOVERIN, IDR_PINTAB_HOVERONTAB, IDR_PINTAB_PINNED, IDR_PINTAB_PINNEDHOVERIN };
|
||||
ids = { IDR_PINTAB, IDR_PINTAB_INACT_EMPTY, IDR_PINTAB_HOVERIN, IDR_PINTAB_HOVERONTAB, IDR_PINTAB_PINNED, IDR_PINTAB_PINNEDHOVERIN, IDR_PINTAB_INACT_EMPTY };
|
||||
}
|
||||
|
||||
if (_hPinBtnImgLst != nullptr)
|
||||
@ -795,9 +793,9 @@ LRESULT TabBarPlus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPara
|
||||
int xPos = LOWORD(lParam);
|
||||
int yPos = HIWORD(lParam);
|
||||
|
||||
int nTab = getTabIndexAt(xPos, yPos);
|
||||
if (::GetWindowLongPtr(_hSelf, GWL_STYLE) & TCS_BUTTONS)
|
||||
{
|
||||
int nTab = getTabIndexAt(xPos, yPos);
|
||||
if (nTab != -1 && nTab != static_cast<int32_t>(::SendMessage(_hSelf, TCM_GETCURSEL, 0, 0)))
|
||||
{
|
||||
setActiveTab(nTab);
|
||||
@ -808,6 +806,7 @@ LRESULT TabBarPlus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPara
|
||||
bool isVertical = nppGUI._tabStatus & TAB_VERTICAL;
|
||||
bool drawTabCloseButton = nppGUI._tabStatus & TAB_CLOSEBUTTON;
|
||||
bool drawTabPinButton = nppGUI._tabStatus & TAB_PINBUTTON;
|
||||
bool isPinSimplest = nppGUI._tabStatus & TAB_SHOWONLYPINNEDBUTTON;
|
||||
|
||||
if (drawTabCloseButton)
|
||||
{
|
||||
@ -819,9 +818,15 @@ LRESULT TabBarPlus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPara
|
||||
}
|
||||
}
|
||||
|
||||
TCITEM tci{};
|
||||
tci.mask = TCIF_PARAM;
|
||||
::SendMessage(_hSelf, TCM_GETITEM, nTab, reinterpret_cast<LPARAM>(&tci));
|
||||
Buffer* buf = reinterpret_cast<Buffer*>(tci.lParam);
|
||||
|
||||
if (drawTabPinButton)
|
||||
{
|
||||
if (_pinButtonZone.isHit(xPos, yPos, _currentHoverTabRect, isVertical))
|
||||
if (_pinButtonZone.isHit(xPos, yPos, _currentHoverTabRect, isVertical) &&
|
||||
((isPinSimplest && buf->isPinned()) || !isPinSimplest))
|
||||
{
|
||||
_whichPinClickDown = getTabIndexAt(xPos, yPos);
|
||||
::SendMessage(_hParent, WM_SIZE, 0, 0);
|
||||
@ -1078,6 +1083,7 @@ LRESULT TabBarPlus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPara
|
||||
bool isVertical = nppGUI._tabStatus & TAB_VERTICAL;
|
||||
bool drawTabCloseButton = nppGUI._tabStatus & TAB_CLOSEBUTTON;
|
||||
bool drawTabPinButton = nppGUI._tabStatus & TAB_PINBUTTON;
|
||||
bool isPinSimplest = nppGUI._tabStatus & TAB_SHOWONLYPINNEDBUTTON;
|
||||
|
||||
if (drawTabCloseButton)
|
||||
{
|
||||
@ -1103,7 +1109,14 @@ LRESULT TabBarPlus::runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lPara
|
||||
|
||||
if (drawTabPinButton)
|
||||
{
|
||||
if ((_whichPinClickDown == currentTabOn) && _pinButtonZone.isHit(xPos, yPos, _currentHoverTabRect, isVertical))
|
||||
int nTab = getTabIndexAt(xPos, yPos);
|
||||
TCITEM tci{};
|
||||
tci.mask = TCIF_PARAM;
|
||||
::SendMessage(_hSelf, TCM_GETITEM, nTab, reinterpret_cast<LPARAM>(&tci));
|
||||
Buffer* buf = reinterpret_cast<Buffer*>(tci.lParam);
|
||||
|
||||
if ((_whichPinClickDown == currentTabOn) && _pinButtonZone.isHit(xPos, yPos, _currentHoverTabRect, isVertical) &&
|
||||
((isPinSimplest && buf->isPinned()) || !isPinSimplest))
|
||||
{
|
||||
notify(TCN_TABPINNED, currentTabOn);
|
||||
_whichPinClickDown = -1;
|
||||
@ -1608,31 +1621,39 @@ void TabBarPlus::drawItem(DRAWITEMSTRUCT* pDrawItemStruct, bool isDarkMode)
|
||||
}
|
||||
else // unpinned
|
||||
{
|
||||
if (!isSelected) // inactive
|
||||
bool isPinSimplest = nppGUI._tabStatus & TAB_SHOWONLYPINNEDBUTTON;
|
||||
if (isPinSimplest)
|
||||
{
|
||||
if (_isPinHover && (_currentHoverTabItem == nTab))
|
||||
{
|
||||
if (_whichPinClickDown == -1) // hover
|
||||
{
|
||||
idxPinImg = _unpinnedHoverInIdx;
|
||||
}
|
||||
else if (_whichPinClickDown == _currentHoverTabItem) // pushed
|
||||
{
|
||||
idxPinImg = _pinnedIdx;
|
||||
}
|
||||
|
||||
}
|
||||
else // unpinned inactive
|
||||
{
|
||||
idxPinImg = (_currentHoverTabItem == nTab) ? _unpinnedHoverOnTabIdx : _unpinnedInactIdx;
|
||||
}
|
||||
idxPinImg = _unpinnedEmptyIdx;
|
||||
}
|
||||
else // current
|
||||
else
|
||||
{
|
||||
if (_isPinHover && (_currentHoverTabItem == nTab)) // hover
|
||||
idxPinImg = _unpinnedHoverInIdx;
|
||||
else
|
||||
idxPinImg = _unpinnedIdx;
|
||||
if (!isSelected) // inactive
|
||||
{
|
||||
if (_isPinHover && (_currentHoverTabItem == nTab))
|
||||
{
|
||||
if (_whichPinClickDown == -1) // hover
|
||||
{
|
||||
idxPinImg = _unpinnedHoverInIdx;
|
||||
}
|
||||
else if (_whichPinClickDown == _currentHoverTabItem) // pushed
|
||||
{
|
||||
idxPinImg = _pinnedIdx;
|
||||
}
|
||||
|
||||
}
|
||||
else // unpinned inactive
|
||||
{
|
||||
idxPinImg = (_currentHoverTabItem == nTab) ? _unpinnedHoverOnTabIdx : _unpinnedInactIdx;
|
||||
}
|
||||
}
|
||||
else // current
|
||||
{
|
||||
if (_isPinHover && (_currentHoverTabItem == nTab)) // hover
|
||||
idxPinImg = _unpinnedHoverInIdx;
|
||||
else
|
||||
idxPinImg = _unpinnedIdx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -243,6 +243,7 @@ protected:
|
||||
const int _unpinnedHoverOnTabIdx = 3; // hover on the tab, but outside of box
|
||||
const int _pinnedIdx = 4;
|
||||
const int _pinnedHoverIdx = 5;
|
||||
const int _unpinnedEmptyIdx = 6;
|
||||
|
||||
bool _isCloseHover = false;
|
||||
bool _isPinHover = false;
|
||||
|
@ -720,7 +720,7 @@
|
||||
#define NPPM_INTERNAL_DOCMODIFIEDBYREPLACEALL (NOTEPADPLUS_USER_INTERNAL + 79)
|
||||
#define NPPM_INTERNAL_DRAWTABBARPINBUTTON (NOTEPADPLUS_USER_INTERNAL + 80)
|
||||
#define NPPM_INTERNAL_DRAWTABBARCLOSEBUTTON (NOTEPADPLUS_USER_INTERNAL + 81)
|
||||
#define NPPM_INTERNAL_DRAWINACTIVETABBARBUTTON (NOTEPADPLUS_USER_INTERNAL + 82)
|
||||
#define NPPM_INTERNAL_REFRESHTABBAR (NOTEPADPLUS_USER_INTERNAL + 82)
|
||||
#define NPPM_INTERNAL_REDUCETABBAR (NOTEPADPLUS_USER_INTERNAL + 83)
|
||||
//#define NPPM_INTERNAL_LOCKTABBAR (NOTEPADPLUS_USER_INTERNAL + 84)
|
||||
#define NPPM_INTERNAL_DRAWINACIVETAB (NOTEPADPLUS_USER_INTERNAL + 85)
|
||||
|
Loading…
x
Reference in New Issue
Block a user