Enhance Distraction Free mode: make dockable panels free
This commit is contained in:
parent
90016a8dc0
commit
432ad06108
|
@ -5482,6 +5482,13 @@ void Notepad_plus::distractionFreeToggle()
|
|||
_beforeSpecialView._was2ViewModeOn = false;
|
||||
}
|
||||
|
||||
// restore dockable panels
|
||||
for (auto i : _beforeSpecialView._pVisibleDockingContainers)
|
||||
{
|
||||
i->display();
|
||||
}
|
||||
_dockingManager.resize();
|
||||
|
||||
// hide restore button
|
||||
_restoreButton.setButtonStatus(0);
|
||||
_restoreButton.display(false);
|
||||
|
@ -5503,6 +5510,23 @@ void Notepad_plus::distractionFreeToggle()
|
|||
_beforeSpecialView._was2ViewModeOn = false;
|
||||
}
|
||||
|
||||
// check if any dockable panel is visible
|
||||
std::vector<DockingCont*> & container = _dockingManager.getContainerInfo();
|
||||
_beforeSpecialView._pVisibleDockingContainers.clear();
|
||||
for (auto i : container)
|
||||
{
|
||||
if (i->isVisible())
|
||||
{
|
||||
_beforeSpecialView._pVisibleDockingContainers.push_back(i);
|
||||
}
|
||||
}
|
||||
|
||||
for (auto i : _beforeSpecialView._pVisibleDockingContainers)
|
||||
{
|
||||
i->display(false);
|
||||
}
|
||||
_dockingManager.resize();
|
||||
|
||||
// set state of restore button (it's already shown by fullScreen & postIt toggling)
|
||||
_restoreButton.setButtonStatus(buttonStatus_distractionFree);
|
||||
}
|
||||
|
|
|
@ -98,6 +98,7 @@ struct VisibleGUIConf final
|
|||
|
||||
//used by distractionFree
|
||||
bool _was2ViewModeOn = false;
|
||||
std::vector<DockingCont*> _pVisibleDockingContainers;
|
||||
|
||||
VisibleGUIConf()
|
||||
{
|
||||
|
|
|
@ -200,15 +200,6 @@ void DockingManager::updateContainerInfo(HWND hClient)
|
|||
}
|
||||
}
|
||||
|
||||
void DockingManager::showContainer(HWND hCont, bool display)
|
||||
{
|
||||
for (size_t iCont = 0, len = _vContainer.size(); iCont < len; ++iCont)
|
||||
{
|
||||
if (_vContainer[iCont]->getHSelf() == hCont)
|
||||
showContainer(iCont, display);
|
||||
}
|
||||
}
|
||||
|
||||
void DockingManager::showFloatingContainers(bool show)
|
||||
{
|
||||
for (size_t i=0; i < _vContainer.size(); i++)
|
||||
|
@ -240,7 +231,7 @@ LRESULT DockingManager::runProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l
|
|||
case WM_MOVE:
|
||||
case WM_SIZE:
|
||||
{
|
||||
onSize();
|
||||
resize();
|
||||
break;
|
||||
}
|
||||
case WM_DESTROY:
|
||||
|
@ -344,7 +335,7 @@ LRESULT DockingManager::runProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l
|
|||
}
|
||||
break;
|
||||
}
|
||||
onSize();
|
||||
resize();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -394,7 +385,7 @@ LRESULT DockingManager::runProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l
|
|||
return ::DefWindowProc(_hSelf, message, wParam, lParam);
|
||||
}
|
||||
|
||||
void DockingManager::onSize()
|
||||
void DockingManager::resize()
|
||||
{
|
||||
reSizeTo(_rect);
|
||||
}
|
||||
|
@ -724,7 +715,7 @@ void DockingManager::setDockedContSize(int iCont, int iSize)
|
|||
_dockData.rcRegion[iCont].right = iSize;
|
||||
else
|
||||
return;
|
||||
onSize();
|
||||
resize();
|
||||
}
|
||||
|
||||
int DockingManager::getDockedContSize(int iCont)
|
||||
|
@ -813,7 +804,7 @@ DockingCont* DockingManager::toggleVisTb(DockingCont* pContSrc, UINT message, LP
|
|||
|
||||
// at first hide container and resize
|
||||
pContSrc->doDialog(false);
|
||||
onSize();
|
||||
resize();
|
||||
|
||||
for (size_t iTb = 0, len = vTbData.size(); iTb < len; ++iTb)
|
||||
{
|
||||
|
@ -874,7 +865,7 @@ void DockingManager::toggleVisTb(DockingCont* pContSrc, DockingCont* pContTgt)
|
|||
|
||||
// at first hide container and resize
|
||||
pContSrc->doDialog(false);
|
||||
onSize();
|
||||
resize();
|
||||
|
||||
for (size_t iTb = 0, len = vTbData.size(); iTb < len; ++iTb)
|
||||
{
|
||||
|
|
|
@ -42,13 +42,6 @@ public :
|
|||
_ppMainWindow = ppWin;
|
||||
};
|
||||
|
||||
void showContainer(HWND hCont, bool display = true);
|
||||
|
||||
void showContainer(size_t uCont, bool display = true) {
|
||||
_vContainer[uCont]->doDialog(display);
|
||||
onSize();
|
||||
}
|
||||
|
||||
void showFloatingContainers(bool show);
|
||||
|
||||
void updateContainerInfo(HWND hClient);
|
||||
|
@ -88,21 +81,9 @@ public :
|
|||
int getDockedContSize(int iCont);
|
||||
void setDockedContSize(int iCont, int iSize);
|
||||
virtual void destroy();
|
||||
void resize();
|
||||
|
||||
private :
|
||||
|
||||
static LRESULT CALLBACK staticWinProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
LRESULT runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
void onSize();
|
||||
|
||||
void toggleTb(DockingCont* pContSrc, DockingCont* pContTgt, tTbData TbData);
|
||||
|
||||
// test if container exists
|
||||
BOOL ContExists(size_t iCont);
|
||||
int FindEmptyContainer();
|
||||
LRESULT SendNotify(HWND hWnd, UINT message);
|
||||
|
||||
private:
|
||||
Window **_ppWindow = nullptr;
|
||||
RECT _rcWork;
|
||||
RECT _rect;
|
||||
|
@ -115,5 +96,18 @@ private:
|
|||
BOOL _isInitialized = FALSE;
|
||||
int _iContMap[CONT_MAP_MAX];
|
||||
std::vector<DockingSplitter *> _vSplitter;
|
||||
|
||||
|
||||
static LRESULT CALLBACK staticWinProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
LRESULT runProc(HWND hwnd, UINT Message, WPARAM wParam, LPARAM lParam);
|
||||
|
||||
void toggleTb(DockingCont* pContSrc, DockingCont* pContTgt, tTbData TbData);
|
||||
|
||||
// test if container exists
|
||||
BOOL ContExists(size_t iCont);
|
||||
int FindEmptyContainer();
|
||||
LRESULT SendNotify(HWND hWnd, UINT message);
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue