mirror of
https://github.com/notepad-plus-plus/notepad-plus-plus.git
synced 2025-07-26 15:24:35 +02:00
Fix docked panels appear with "-nosession" cmd line parameters
Fix #8005
This commit is contained in:
parent
1961f708c1
commit
7399257f56
@ -687,6 +687,9 @@ LRESULT Notepad_plus::init(HWND hwnd)
|
|||||||
//
|
//
|
||||||
// launch the plugin dlg memorized at the last session
|
// launch the plugin dlg memorized at the last session
|
||||||
//
|
//
|
||||||
|
|
||||||
|
if (!nppGUI._isCmdlineNosessionActivated)
|
||||||
|
{
|
||||||
DockingManagerData& dmd = nppGUI._dockingData;
|
DockingManagerData& dmd = nppGUI._dockingData;
|
||||||
|
|
||||||
_dockingManager.setDockedContSize(CONT_LEFT, nppGUI._dockingData._leftWidth);
|
_dockingManager.setDockedContSize(CONT_LEFT, nppGUI._dockingData._leftWidth);
|
||||||
@ -711,6 +714,7 @@ LRESULT Notepad_plus::init(HWND hwnd)
|
|||||||
ContainerTabInfo & cti = dmd._containerTabInfo[i];
|
ContainerTabInfo & cti = dmd._containerTabInfo[i];
|
||||||
_dockingManager.setActiveTab(cti._cont, cti._activeTab);
|
_dockingManager.setActiveTab(cti._cont, cti._activeTab);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Load initial docs into doctab
|
//Load initial docs into doctab
|
||||||
loadBufferIntoView(_mainEditView.getCurrentBufferID(), MAIN_VIEW);
|
loadBufferIntoView(_mainEditView.getCurrentBufferID(), MAIN_VIEW);
|
||||||
|
@ -99,6 +99,8 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|||||||
if (cmdLineParams->_isNoPlugin)
|
if (cmdLineParams->_isNoPlugin)
|
||||||
_notepad_plus_plus_core._pluginsManager.disable();
|
_notepad_plus_plus_core._pluginsManager.disable();
|
||||||
|
|
||||||
|
nppGUI._isCmdlineNosessionActivated = cmdLineParams->_isNoSession;
|
||||||
|
|
||||||
_hSelf = ::CreateWindowEx(
|
_hSelf = ::CreateWindowEx(
|
||||||
WS_EX_ACCEPTFILES | (_notepad_plus_plus_core._nativeLangSpeaker.isRTL()?WS_EX_LAYOUTRTL:0),
|
WS_EX_ACCEPTFILES | (_notepad_plus_plus_core._nativeLangSpeaker.isRTL()?WS_EX_LAYOUTRTL:0),
|
||||||
_className,
|
_className,
|
||||||
@ -168,8 +170,7 @@ void Notepad_plus_Window::init(HINSTANCE hInst, HWND parent, const TCHAR *cmdLin
|
|||||||
if (cmdLineParams->_alwaysOnTop)
|
if (cmdLineParams->_alwaysOnTop)
|
||||||
::SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_ALWAYSONTOP, 0);
|
::SendMessage(_hSelf, WM_COMMAND, IDM_VIEW_ALWAYSONTOP, 0);
|
||||||
|
|
||||||
nppGUI._isCmdlineNosessionActivated = cmdLineParams->_isNoSession;
|
if (nppGUI._rememberLastSession && !nppGUI._isCmdlineNosessionActivated)
|
||||||
if (nppGUI._rememberLastSession && !cmdLineParams->_isNoSession)
|
|
||||||
_notepad_plus_plus_core.loadLastSession();
|
_notepad_plus_plus_core.loadLastSession();
|
||||||
|
|
||||||
if (nppParams.doFunctionListExport() || nppParams.doPrintAndExit())
|
if (nppParams.doFunctionListExport() || nppParams.doPrintAndExit())
|
||||||
|
@ -5461,8 +5461,6 @@ void NppParameters::feedDockingManager(TiXmlNode *node)
|
|||||||
if (element->Attribute(TEXT("bottomHeight"), &i))
|
if (element->Attribute(TEXT("bottomHeight"), &i))
|
||||||
_nppGUI._dockingData._bottomHight = i;
|
_nppGUI._dockingData._bottomHight = i;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (TiXmlNode *childNode = node->FirstChildElement(TEXT("FloatingWindow"));
|
for (TiXmlNode *childNode = node->FirstChildElement(TEXT("FloatingWindow"));
|
||||||
childNode ;
|
childNode ;
|
||||||
childNode = childNode->NextSibling(TEXT("FloatingWindow")) )
|
childNode = childNode->NextSibling(TEXT("FloatingWindow")) )
|
||||||
@ -5528,6 +5526,116 @@ void NppParameters::feedDockingManager(TiXmlNode *node)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TiXmlElement NppParameters::duplicateDockingManager(TiXmlNode *node)
|
||||||
|
{
|
||||||
|
TiXmlElement *element = node->ToElement();
|
||||||
|
|
||||||
|
TiXmlElement DMNode(TEXT("GUIConfig"));
|
||||||
|
DMNode.SetAttribute(TEXT("name"), TEXT("DockingManager"));
|
||||||
|
|
||||||
|
int i;
|
||||||
|
if (element->Attribute(TEXT("leftWidth"), &i))
|
||||||
|
DMNode.SetAttribute(TEXT("leftWidth"), i);
|
||||||
|
|
||||||
|
if (element->Attribute(TEXT("rightWidth"), &i))
|
||||||
|
DMNode.SetAttribute(TEXT("rightWidth"), i);
|
||||||
|
|
||||||
|
if (element->Attribute(TEXT("topHeight"), &i))
|
||||||
|
DMNode.SetAttribute(TEXT("topHeight"), i);
|
||||||
|
|
||||||
|
if (element->Attribute(TEXT("bottomHeight"), &i))
|
||||||
|
DMNode.SetAttribute(TEXT("bottomHeight"), i);
|
||||||
|
|
||||||
|
|
||||||
|
for (TiXmlNode *childNode = node->FirstChildElement(TEXT("FloatingWindow"));
|
||||||
|
childNode;
|
||||||
|
childNode = childNode->NextSibling(TEXT("FloatingWindow")))
|
||||||
|
{
|
||||||
|
TiXmlElement *floatElement = childNode->ToElement();
|
||||||
|
int cont;
|
||||||
|
if (floatElement->Attribute(TEXT("cont"), &cont))
|
||||||
|
{
|
||||||
|
TiXmlElement FWNode(TEXT("FloatingWindow"));
|
||||||
|
FWNode.SetAttribute(TEXT("cont"), cont);
|
||||||
|
|
||||||
|
int x = 0;
|
||||||
|
int y = 0;
|
||||||
|
int w = 100;
|
||||||
|
int h = 100;
|
||||||
|
|
||||||
|
floatElement->Attribute(TEXT("x"), &x);
|
||||||
|
FWNode.SetAttribute(TEXT("x"), x);
|
||||||
|
|
||||||
|
floatElement->Attribute(TEXT("y"), &y);
|
||||||
|
FWNode.SetAttribute(TEXT("y"), y);
|
||||||
|
|
||||||
|
floatElement->Attribute(TEXT("width"), &w);
|
||||||
|
FWNode.SetAttribute(TEXT("width"), w);
|
||||||
|
|
||||||
|
floatElement->Attribute(TEXT("height"), &h);
|
||||||
|
FWNode.SetAttribute(TEXT("height"), h);
|
||||||
|
|
||||||
|
DMNode.InsertEndChild(FWNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (TiXmlNode *childNode = node->FirstChildElement(TEXT("PluginDlg"));
|
||||||
|
childNode;
|
||||||
|
childNode = childNode->NextSibling(TEXT("PluginDlg")))
|
||||||
|
{
|
||||||
|
TiXmlElement *dlgElement = childNode->ToElement();
|
||||||
|
const TCHAR *name = dlgElement->Attribute(TEXT("pluginName"));
|
||||||
|
TiXmlElement PDNode(TEXT("PluginDlg"));
|
||||||
|
|
||||||
|
int id;
|
||||||
|
const TCHAR *idStr = dlgElement->Attribute(TEXT("id"), &id);
|
||||||
|
if (name && idStr)
|
||||||
|
{
|
||||||
|
int curr = 0; // on left
|
||||||
|
int prev = 0; // on left
|
||||||
|
|
||||||
|
dlgElement->Attribute(TEXT("curr"), &curr);
|
||||||
|
dlgElement->Attribute(TEXT("prev"), &prev);
|
||||||
|
|
||||||
|
bool isVisible = false;
|
||||||
|
const TCHAR *val = dlgElement->Attribute(TEXT("isVisible"));
|
||||||
|
if (val)
|
||||||
|
{
|
||||||
|
isVisible = (lstrcmp(val, TEXT("yes")) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
PDNode.SetAttribute(TEXT("pluginName"), name);
|
||||||
|
PDNode.SetAttribute(TEXT("id"), idStr);
|
||||||
|
PDNode.SetAttribute(TEXT("curr"), curr);
|
||||||
|
PDNode.SetAttribute(TEXT("prev"), prev);
|
||||||
|
PDNode.SetAttribute(TEXT("isVisible"), isVisible ? TEXT("yes") : TEXT("no"));
|
||||||
|
|
||||||
|
DMNode.InsertEndChild(PDNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (TiXmlNode *childNode = node->FirstChildElement(TEXT("ActiveTabs"));
|
||||||
|
childNode;
|
||||||
|
childNode = childNode->NextSibling(TEXT("ActiveTabs")))
|
||||||
|
{
|
||||||
|
TiXmlElement *dlgElement = childNode->ToElement();
|
||||||
|
TiXmlElement CTNode(TEXT("ActiveTabs"));
|
||||||
|
int cont;
|
||||||
|
if (dlgElement->Attribute(TEXT("cont"), &cont))
|
||||||
|
{
|
||||||
|
int activeTab = 0;
|
||||||
|
dlgElement->Attribute(TEXT("activeTab"), &activeTab);
|
||||||
|
|
||||||
|
CTNode.SetAttribute(TEXT("cont"), cont);
|
||||||
|
CTNode.SetAttribute(TEXT("activeTab"), activeTab);
|
||||||
|
|
||||||
|
DMNode.InsertEndChild(CTNode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return DMNode;
|
||||||
|
}
|
||||||
|
|
||||||
bool NppParameters::writeScintillaParams()
|
bool NppParameters::writeScintillaParams()
|
||||||
{
|
{
|
||||||
if (!_pXmlUserDoc) return false;
|
if (!_pXmlUserDoc) return false;
|
||||||
@ -5594,12 +5702,19 @@ bool NppParameters::writeScintillaParams()
|
|||||||
void NppParameters::createXmlTreeFromGUIParams()
|
void NppParameters::createXmlTreeFromGUIParams()
|
||||||
{
|
{
|
||||||
TiXmlNode *nppRoot = _pXmlUserDoc->FirstChild(TEXT("NotepadPlus"));
|
TiXmlNode *nppRoot = _pXmlUserDoc->FirstChild(TEXT("NotepadPlus"));
|
||||||
if (not nppRoot)
|
if (!nppRoot)
|
||||||
{
|
{
|
||||||
nppRoot = _pXmlUserDoc->InsertEndChild(TiXmlElement(TEXT("NotepadPlus")));
|
nppRoot = _pXmlUserDoc->InsertEndChild(TiXmlElement(TEXT("NotepadPlus")));
|
||||||
}
|
}
|
||||||
|
|
||||||
TiXmlNode *oldGUIRoot = nppRoot->FirstChildElement(TEXT("GUIConfigs"));
|
TiXmlNode *oldGUIRoot = nppRoot->FirstChildElement(TEXT("GUIConfigs"));
|
||||||
|
TiXmlElement dockMngNode(TEXT(""));
|
||||||
|
if (_nppGUI._isCmdlineNosessionActivated)
|
||||||
|
{
|
||||||
|
// Copy DockingParamNode
|
||||||
|
dockMngNode = duplicateDockingManager(oldGUIRoot);
|
||||||
|
}
|
||||||
|
|
||||||
// Remove the old root nod if it exist
|
// Remove the old root nod if it exist
|
||||||
if (oldGUIRoot)
|
if (oldGUIRoot)
|
||||||
{
|
{
|
||||||
@ -6054,8 +6169,15 @@ void NppParameters::createXmlTreeFromGUIParams()
|
|||||||
|
|
||||||
// <GUIConfig name="DockingManager" leftWidth="328" rightWidth="359" topHeight="200" bottomHeight="436">
|
// <GUIConfig name="DockingManager" leftWidth="328" rightWidth="359" topHeight="200" bottomHeight="436">
|
||||||
// ...
|
// ...
|
||||||
|
if (_nppGUI._isCmdlineNosessionActivated)
|
||||||
|
{
|
||||||
|
newGUIRoot->InsertEndChild(dockMngNode);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
insertDockingParamNode(newGUIRoot);
|
insertDockingParamNode(newGUIRoot);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool NppParameters::writeFindHistory()
|
bool NppParameters::writeFindHistory()
|
||||||
{
|
{
|
||||||
|
@ -1852,6 +1852,7 @@ private:
|
|||||||
void feedFileListParameters(TiXmlNode *node);
|
void feedFileListParameters(TiXmlNode *node);
|
||||||
void feedScintillaParam(TiXmlNode *node);
|
void feedScintillaParam(TiXmlNode *node);
|
||||||
void feedDockingManager(TiXmlNode *node);
|
void feedDockingManager(TiXmlNode *node);
|
||||||
|
TiXmlElement duplicateDockingManager(TiXmlNode *node);
|
||||||
void feedFindHistoryParameters(TiXmlNode *node);
|
void feedFindHistoryParameters(TiXmlNode *node);
|
||||||
void feedProjectPanelsParameters(TiXmlNode *node);
|
void feedProjectPanelsParameters(TiXmlNode *node);
|
||||||
void feedFileBrowserParameters(TiXmlNode *node);
|
void feedFileBrowserParameters(TiXmlNode *node);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user