|
|
|
@ -21,6 +21,7 @@
|
|
|
|
|
#include "ToolTip.h"
|
|
|
|
|
#include "Parameters.h"
|
|
|
|
|
#include "NppDarkMode.h"
|
|
|
|
|
#include "localization.h"
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
@ -315,7 +316,7 @@ LRESULT DockingCont::runProcCaption(HWND hwnd, UINT Message, WPARAM wParam, LPAR
|
|
|
|
|
|
|
|
|
|
if (_isMouseOver == TRUE)
|
|
|
|
|
{
|
|
|
|
|
doClose();
|
|
|
|
|
doClose(GetKeyState(VK_SHIFT) < 0);
|
|
|
|
|
}
|
|
|
|
|
_isMouseClose = FALSE;
|
|
|
|
|
_isMouseOver = FALSE;
|
|
|
|
@ -407,7 +408,9 @@ LRESULT DockingCont::runProcCaption(HWND hwnd, UINT Message, WPARAM wParam, LPAR
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
toolTip.Show(rc, TEXT("Close"), pt.x, pt.y + 20);
|
|
|
|
|
NativeLangSpeaker *pNativeSpeaker = (NppParameters::getInstance()).getNativeLangSpeaker();
|
|
|
|
|
generic_string tip = pNativeSpeaker->getLocalizedStrFromID("close-panel-tip", TEXT("Close"));
|
|
|
|
|
toolTip.Show(rc, tip.c_str(), pt.x, pt.y + 20);
|
|
|
|
|
}
|
|
|
|
|
return TRUE;
|
|
|
|
|
}
|
|
|
|
@ -1035,7 +1038,7 @@ INT_PTR CALLBACK DockingCont::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lP
|
|
|
|
|
switch (LOWORD(wParam))
|
|
|
|
|
{
|
|
|
|
|
case IDCANCEL:
|
|
|
|
|
doClose();
|
|
|
|
|
doClose(GetKeyState(VK_SHIFT) < 0);
|
|
|
|
|
return TRUE;
|
|
|
|
|
default :
|
|
|
|
|
break;
|
|
|
|
@ -1170,13 +1173,13 @@ void DockingCont::onSize()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void DockingCont::doClose()
|
|
|
|
|
void DockingCont::doClose(BOOL closeAll)
|
|
|
|
|
{
|
|
|
|
|
int iItemCnt = static_cast<int32_t>(::SendMessage(_hContTab, TCM_GETITEMCOUNT, 0, 0));
|
|
|
|
|
int iItemCur = getActiveTb();
|
|
|
|
|
|
|
|
|
|
TCITEM tcItem = {0};
|
|
|
|
|
|
|
|
|
|
// Always close active tab first
|
|
|
|
|
int iItemCur = getActiveTb();
|
|
|
|
|
TCITEM tcItem = {0};
|
|
|
|
|
tcItem.mask = TCIF_PARAM;
|
|
|
|
|
::SendMessage(_hContTab, TCM_GETITEM, iItemCur, reinterpret_cast<LPARAM>(&tcItem));
|
|
|
|
|
if (tcItem.lParam)
|
|
|
|
@ -1189,6 +1192,35 @@ void DockingCont::doClose()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Close all other tabs if requested
|
|
|
|
|
if (closeAll)
|
|
|
|
|
{
|
|
|
|
|
iItemCnt = static_cast<int32_t>(::SendMessage(_hContTab, TCM_GETITEMCOUNT, 0, 0));
|
|
|
|
|
int iItemOff = 0;
|
|
|
|
|
for (int iItem = 0; iItem < iItemCnt; ++iItem)
|
|
|
|
|
{
|
|
|
|
|
TCITEM tcItem = {0};
|
|
|
|
|
// get item data
|
|
|
|
|
selectTab(iItemOff);
|
|
|
|
|
tcItem.mask = TCIF_PARAM;
|
|
|
|
|
::SendMessage(_hContTab, TCM_GETITEM, iItemOff, reinterpret_cast<LPARAM>(&tcItem));
|
|
|
|
|
if (!tcItem.lParam)
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
// notify child windows
|
|
|
|
|
if (NotifyParent(DMM_CLOSE) == 0)
|
|
|
|
|
{
|
|
|
|
|
// delete tab
|
|
|
|
|
hideToolbar((tTbData*)tcItem.lParam);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
++iItemOff;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Hide dialog window if all tabs closed
|
|
|
|
|
iItemCnt = static_cast<int32_t>(::SendMessage(_hContTab, TCM_GETITEMCOUNT, 0, 0));
|
|
|
|
|
if (iItemCnt == 0)
|
|
|
|
|
{
|
|
|
|
|