Description of the Issue
Improve "Close all to the left/right" functionality.
This is an enhancement request. Similar request was made in past #2555, but has been closed during tracker cleanup process.
Steps to Reproduce the Issue
1. Create 4 tabs says (tab 1, tab 2, tab 3, tab 4)
2. Make all the tab dirty (I mean type, something in each tab, but don't save any).
3. Now right click on tab 1 and choose "Close All to the right"
4. Three popup for asking to save file will appear (For tab 4, tab 3 and tab 2)
5. Click "No" for tab 4 and tab 3. And click cancel for tab 2.
Expected Behavior:
After step 5, tab 4 and tab 3 should be closed. And for Remaining tabs, operation should be cancelled.
Actual Behavior:
Nothing happens after step 5.
Same defect reproduction steps are applicable for "Close all to the left".
Fix#7501, close#7502
In the case of backup feature being disabled, if Notepad++ has a modified file, and it is reduced into the nofitication zone, closing Notepad++ via notification zone will trigger doSave dialog, then Notepad++ stuck after closing the dialog.
Fix#7508
Issue is because of Tool window being used instead of normal window for these 2 dialogs- "Close All" and "Rename"
Known issue already discussed on- https://stackoverflow.com/questions/3760571/showdialog-makes-app-window-disappear-from-windows-alt-tab-list
Excerpt from https://docs.microsoft.com/en-us/windows/win32/winmsg/extended-window-styles -
WS_EX_TOOLWINDOW 0x00000080L The window is intended to be used as a floating toolbar. A tool window has a title bar that is shorter than a normal title bar, and the window title is drawn using a smaller font. A tool window does not appear in the taskbar or in the dialog that appears when the user presses ALT+TAB. If a tool window has a system menu, its icon is not displayed on the title bar. However, you can display the system menu by right-clicking or by typing ALT+SPACE.
DS_MODALFRAME is added for "Close All" dialog, because after making it normal window, it started showing default empty windows file icon.
Fix#6244, close#6252
x64 installer set installation path in "C:/Program Files/Notepad++/" but "don't use %APPDATA%" is enabled.
This commit fix this issue (make it disabled)
Fix#6243
Fixed command line parsing logic error.
Root cause:
When you double click a file (where NPP has already replaced original Windows Notepad.exe) command like something like below is generated -
-notepadStyleCmdline -z "C:\WINDOWS\system32\NOTEPAD.EXE" F:\FakePath\PowerEditor\bin\change.log
After processing this command line, final command line is left as " F:\FakePath\PowerEditor\bin\change.log while others are ignored. Notice, quote " here just before the actual file path.
Later on, MS PAI ::PathIsRelative treats it as relative path because of quote " rather considering single file. It is expected too as per input to this API.
Now, notepad++ tries to open all the file from path F:\FakePath\PowerEditor\bin\ (in above case) along with file F:\FakePath\PowerEditor\bin\change.log.
Close#6215, fix#6211
The commit 'Make NppParameters singleton "new-less"' make NppParameters instantiate in the stack instead of allocating in the heap:
3dbb2c4b8e
It makes Notepad++ crash:
https://community.notepad-plus-plus.org/topic/18316/notepad-7-8-release-candidate-3/4
The crash is on following code:
vector<MacroShortcut> & vShortcuts = NppParameters::getInstance().getMacroList();
size_t nbItems = vShortcuts.size();
for (size_t itemIndex2 = 0; itemIndex2 < nbItems; ++itemIndex2)
{
...
vShortcuts.size() here return a random large number, which makes crash.
The explanation about vector::size() unexpected behaviour:
https://stackoverflow.com/questions/30548944/c-vector-size-is-wrong-and-higher-than-the-number-of-elements
Obviously the stack size is not large enough to contain NppParameters singleton in 64 bits.