- Introduce the concept of "brush width" to the
tools model.
- Enable changing the brush width by Ctrl+Plus/Minus
key combination in TOOL_BRUSH.
- Re-define brush styles.
CORE-19094
- Introduce the concept of pen width (not line width) to the tools model.
- Enable changing pen/line width by Ctrl+Plus/Minus key combination in TOOL_PEN,
TOOL_LINE, TOOL_BEZIER, TOOL_RECT, TOOL_SHAPE, TOO_ELLIPSE, and
TOOL_RRECT tools.
CORE-19094
- Stamp the image of the selection when the user clicks on
the selection while holding down the Ctrl key.
- Draw the image of the selection continuously when the user
starts dragging the selection while holding down the Shift key.
CORE-19094
- While holding down the Shift key, drawing lines with the
pen/brush is limited to either of 8 directions (horizontal/vertical/diagonal).
- s/abs/labs/
CORE-19094
- Add Ctrl+Plus and Ctrl+Minus accelerators.
- Add IDM_CTRL_PLUS and IDM_CTRL_MINUS
commands.
- Stretch the selection area on IDM_CTRL_PLUS
and IDM_CTRL_MINUS actions.
CORE-19094
- Reduce display of error message on IDM_EDITCOPYTO and IDM_EDITPASTEFROM.
- Introduce LockBitmap/UnlockBitmap mechanism for ImageModel and SelectionModel.
CORE-19181, CORE-19182
- Currently the logo moves around every two seconds. This is not consistent
with Windows Server 2003 (and other versions) and is very distracting.
Increase the interval to every ten seconds, which matches Win2003.
- There are currently two identical copies of the logo bitmap in the
screensaver. Use only one copy of the logo bitmap.
- Shrink the space around the logo bitmap. This should save some disk space
but more importantly allow the logo to reach closer to the edges of the
screen, similar to Win2003.
- Remove unneeded includes.
Indeed, the next SystemTimeToTzSpecificLocalTime() call, when done with
a NULL TIME_ZONE_INFORMATION* 1st parameter, uses the currently active
time zone, which is exactly what the GetTimeZoneInformation() call was
doing.
And note that the original code was incorrectly validating the returned
value from GetTimeZoneInformation() -- the code was assuming the function
returns a boolean, instead of checking for TIME_ZONE_ID_INVALID.
CORE-18958
Introduce an emergency log-off and restart feature, available when holding
down the control key and selecting "Log Off" or "Shut down" in the MSGINA
Ctrl-Alt-Del security dialog, similar to Windows Server 2003 and newer
Windows versions.
CORE-19061
Following PR #5571 (commit 2d53e953c), it became apparent that the
management of the status-bar when showing the menu hints could be
simplified further.
Use "simple-text" status-bar display mode when showing menu hints.
The original status-bar panes state is "remembered" and are automatically
restored when the "simple-text" mode is disabled.
- Simplify duplicated code by having one EnumFiles() function using
callbacks to perform actual action on enumerated files.
PrintAttribute() and ChangeAttribute() duplicate their functionality,
except for the actual difference of displaying the file attributes vs.
changing them.
Instead, move that per-file action into two callbacks, create a file
enumerator function that contains the common functionality, and make
it call the callback passed in parameter to it.
- Reparse points can be encountered during enumeration. In this case,
don't try to go into too many reparse-point levels (maximum two).
- Verify that paths/file names concatenation don't overflow (with the
StringCch* functions returning an error), as this could cause an
infinite loop in case of recursive-enumeration, and the position where
the new path part would be appended turns out to be just at the end
of the buffer.
- Add ImageModel::IsBlackAndWhite and ImageModel::PushBlackAndWhite
helper functions.
- Add CAttributesDialog::m_bBlackAndWhite.
- If IDD_ATTRIBUTESRB4 is checked, then make
the bitmap black and white.
- Add IDS_LOSECOLOR to show message.
CORE-19094
CORE-11698, CORE-15369
Allows a user to set the icon size and show or hide the desktop button in
the taskbar using the taskbar properties menu. After applying these changes,
the taskbar updates and resizes without requiring a restart.
- This PR moves the 'Notification Area' section into its own separate tab.
This allows us to include more options for users without increasing the
size of the window. It is also very similar to the Windows Vista taskbar
properties menu.
- Some minor changes to allow the taskbar to refresh its view when the icon
size or show desktop button setting changes.
- Return TRUE on WM_INITDIALOG handling to set focus.
- Check if the radiobutton is checked on the radiobutton action
(considering BN_SETFOCUS etc.).
CORE-18011
- Add OpenMailer function.
- Add IDS_CANTSENDMAIL.
- Send a mail by using mapi32!MAPISendMail/W.
- Extend SaveDIBToFile function by adding a
parameter.
CORE-19094
Fix a typo, and add three forgotten error codes to pt-PT language.
Co-authored-by: SecurityAndStuff <74931194+SecurityAndStuff@users.noreply.github.com>
- Rewrite CImageDx to reduce improper dependency with CImage.
- Check if the filename extension is supported before saving the files.
- Delete deprecated functions in CImage.
CORE-19094
When using large taskbar icon:
- Increase the padding around system tray icons.
- Push the clock text further to the right, increasing the left padding
between the clock and notification icons.
This matches Windows 7 shell behavior.
- Correct the spacing for the clock area, in the case when bPreferDate is
enabled, only two lines are visible, and the day of the week is shorter
than the date.
CORE-11698
Use the shell about dialog for solitaire and spider solitaire.
This increases visual consistency throughout the operating system
and matches the behavior of the game from Windows XP.
- Use the shell about dialog instead of a plain MessageBox.
- Since the shell about dialog can only handle two lines of text,
shorten the message dialog text to two lines.
* [PIFMGR] Optimize png images
- Lossless optimization with `pngslim`. Saves ~50%.
- Restricted to RGBA color mode (‘c6’), for maximum compatibility at the cost of some compression.
* [ROSAPPS] Optimize png image
- Lossless optimization with `pngslim`. Saves ~10%.
* [MSTSC] Optimize png image
- Lossless optimization with `pngslim`. Saves ~56%.
- Restricted to RGBA color mode (‘c6’), for maximum compatibility at the cost of some compression.
* [Themes] Optimize png image
- Lossless optimization with `pngslim`. Saves ~20%.
- Restricted to RGB color mode (‘c2’), for maximum compatibility.
Stop storing and setting window positions from the taskbar and rely
on the window's existing position instead. Partial revert of e6bced7a35.
Windows are now correctly positioned when being restored from the taskbar.
This also fixes an issue where minimizing and opening Task Manager causes
the window to become blank when running our shell in Windows Server 2003.
CORE-19055 CORE-13895 CORE-18350
- Use HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\TaskbarSmallIcons
registry key to store the icon size setting for the taskbar.
- If the registry value is missing, small icons will be used by default.
- If the registry value is set to 1, it will also use small icons.
- Only if the value exists and is set to 0 it will use large icons. This allows us
to use the same registry value as Windows 7 explorer, while also keeping
the taskbar icons small in most cases, especially running the shell
on unmodified Windows Server 2003.
CORE-11698
- Add Internet icon on Desktop. You can hide/show
the icon from Desktop's customization.
- Modify "HKCR\CLSID\%CLSID_Internet%" registry key.
- Add IDS_INTERNET and IDS_INTERNET_DESCRITION into ieframe.dll.
- Modify folders/CDesktopFolder.cpp and folders/CRegFolder.cpp to add the icon.
CORE-18625
Co-authored-by: Stanislav Motylkov <x86corez@gmail.com>
Co-authored-by: Joachim Henze <joachim.henze@reactos.org>
The "dir /w" command didn't look good due to unaligned columns.
- Add sdk/include/reactos/cjkcode.h header file.
- Add ConGetTextWidthA/W helper functions.
- Add base/shell/cmd/wcwidth.c to implement ConGetTextWidthW.
- Use ConGetTextWidth in DirPrintWideList function.
- Adjust some STRING_DIR_HELP5, STRING_DIR_HELP6 and STRING_DIR_HELP8 resource strings to make the column aligned.
CORE-17591
Only done in our own code, not in 3rd-party or in PSDK headers
(official ones also have such typos in defines...)
(NOTE: apparent "Uknown" typo in dll/cpl/sysdm/smbios.c is on-purpose:
typo by the manufacturer.)
- Implement a basic command interpreter.
- Add basic support for helper dlls and contexts.
- Add interactive help system with context support.
Everything is still under construction and subject to change.
CORE-14096, CORE-8002
Patch based on an earlier fix attempt by Doug Lyons.
It should fix the problem observed by contributor 'whindsaks' in PR #5403.
This bug has always been present since the implementation of this feature
in commit a1eb1f6ba (r40024).
The expansion of %~dpX ennhanced variables used to incorrectly show some
directories in uppercase. For example:
```batch
:: testcmd.cmd
echo '%~dp0'
echo '%~dps0'
echo '%~s0'
```
would show:
```
P:\Documents and Settings\Administrator\Desktop>echo 'P:\Documents and Settings\Administrator\DESKTOP\'
'P:\Documents and Settings\Administrator\DESKTOP\'
P:\Documents and Settings\Administrator\Desktop>echo 'P:\DOCUME~1\ADMINI~1\DESKTOP\'
'P:\DOCUME~1\ADMINI~1\DESKTOP\'
P:\Documents and Settings\Administrator\Desktop>echo 'P:\DOCUME~1\ADMINI~1\DESKTOP\testcmd.cmd'
'P:\DOCUME~1\ADMINI~1\DESKTOP\testcmd.cmd'
```
instead of the correct:
```
P:\Documents and Settings\Administrator\Desktop>echo 'P:\Documents and Settings\Administrator\Desktop\'
'P:\Documents and Settings\Administrator\Desktop\'
P:\Documents and Settings\Administrator\Desktop>echo 'P:\DOCUME~1\ADMINI~1\DESKTOP\'
'P:\DOCUME~1\ADMINI~1\DESKTOP\'
P:\Documents and Settings\Administrator\Desktop>echo 'P:\DOCUME~1\ADMINI~1\DESKTOP\testcmd.cmd'
'P:\DOCUME~1\ADMINI~1\DESKTOP\testcmd.cmd'
```
The reason was a wrong handling of the presence (or absence) of the
"short" path format specifier 's' in those enhanced variables.
In the examples above, the "Desktop" sub-directory has a short-path
name available (because it is in a FAT partition). The short-path name
was used some times also even with the 's' specifier absent.
Co-authored-by: Doug Lyons <douglyons@douglyons.com>
- Add CanBeMinimized helper function to determine whether the window should be minimized.
- Use them in FindEffectiveProc and MinimizeWindowsProc functions.
- Improve the Minimize code.
CORE-18427
Actually I was working on a much bigger commit in the same context for releases/0.4.7
when I realized that related glitches do also affect master head
and also other release-branches in some areas.
- 2 Accelerator collisions in tr-TR.rc
- superfluous space in ru-RU.rc IDS_LANGUAGE_MORE_PLACEHOLDER
- typo in uk-UA.rc header
- strip forward slash in IDS_WELCOME_URL
- Add registry key to show the time and date when two lines are available
in the taskbar clock area.
- Keep old behavior when `PreferDateOverWeekday` registry key in
`HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced`
is set to 0 or not present.
When three or more lines are available, the clock will continue to show
the time, day of the week, and the date. When only one line is visible,
the clock will continue to only display the time.
CORE-19018
- Avoid the heap in ShowIpStatistics() and ShowIcmpStatistics() to simplify the code,
inspired by how we do it in ShowTcpStatistics() and ShowUdpStatistics() already
- Strip 2 Captain-Obvious-Comments
For the record: Retrieving ICMP-stats and IP-stats does not work properly in ReactOS yet,
neither with nor without my fix. Lower layers are most likely wrong still somehow.
But netstat itself can properly obtain ICMP-stats and IP-stats in Windows already.
- add a pragma once into the header
- order -o options alphabetically also for the global variables, not only in usage-help
- pl-PL.rc: fix wrong alignment of IDS_ETHERNET_THEADER and its data
- pl-PL.rc: also don't pad the data with 2 spaces here in the beginning, which
we don't do in any other locale, and MS netstat also doesn't do that here.
pl-PL.rc most likely got this wrong because it was created while en-US wasn't finished yet.
in netstat.c 100% of the calls to
DisplayTableHeader();
have in the exact line beforehand a call to
ConResPuts(StdOut, IDS_ACTIVE_CONNECT);
So let's fuse them.
Also fix a superfluous space in the *.rc files before it will get duplicated
a thousand times.
- Display a correct error message on failing to save a file.
- Don't confuse the main file info and the non-main file info.
- Rename ShowFileLoadError as ShowError, and strengthen and move it to dialogs.cpp.
- Add SetFileInfo and InitializeImage helper functions.
- Add IDS_SAVEERROR resource string.
- Modify SaveDIBToFile, SetBitmapAndInfo, and DoLoadImageFile functions.
CORE-18867
- Save locked state of the taskbar when toggled using its context menu.
- Save position of the taskbar after dragging it around the desktop.
- Invoke TRAYCMD_LOCK_TASKBAR command when (un)locking the taskbar
by the context menu, instead of duplicating this functionality.
CORE-11621 CORE-16997
When calling 'netstat -abn'
Win 2k3sp2 and XPSP3 do show both: the processes name and the PID.
Contrary Win 7 and Win 8.1 would show only the process name then without the PID.
The newer Windows versions would require you to explicitly pass -o
if you want to see the PID also.
We do follow 2k3sp2 because it is our target. The process name is not of much use
without having the PID as well, especially if multiple processes with the
same name do run on a system, e.g.: multiple 'svchost.exe' processes.
Ros will automatically switch to the Win7-way when newer
Windows versions will be targeted at build-time.
- Reimplement the Release and Renew functions using GetAdaptersInfo().
- Check for enabled DHCP and connected medium
- Check for already released Lease in the Release function
- Add required messages
fixes symptom CORE-19005 [NETSTAT] crashes when called with -abnop
and no further argument (protocol name missing).
The crash was a regression of
0.4.11-dev-814-g 2b55073360
also meticulously try to match Windows exact screen output and ERRORLEVEL then
instead of e.g.: simply showing the usage help
which means:
ERRORLEVEL 0 for 'netstat -abnop' and displaying Active-string + table header *but without any sane contents*
ERRORLEVEL 1 for 'netstat -abnop bullshit' and displaying usage help
ERRORLEVEL 0 for 'netstat -abnop tcp' and displaying Active-string + table header + contents
ERRORLEVEL 0 for 'netstat -abnop udp' and displaying Active-string + table header + contents
while touching the file do also some unrelated whitespace tweaks.
Based on the Portuguese translation from Portugal.
Reviewed-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Reviewed-by: Stanislav Motylkov <x86corez@gmail.com>
- Add missing mnemonic keys
- Remove unneeded mnemonic keys
- Fix some translated strings being too long
- Fix mispositioned elements
- Reposition overlapping elements
Validated the changes with Resource Hacker. CORE-18867
- Add actions on Right-Click.
- Add ID_POPUPMENU resource menu.
- Use TrackPopupMenu to show the context menu.
- Improve CMainWindow::OnInitMenuPopup to display context menu.
- Add SelectionModel::m_bContentChanged flag to indicate whether the selection content is changed.
- Fix IDM_IMAGEINVERTCOLORS and IDM_IMAGEROTATEMIRROR commands.
CORE-18867
CF_BITMAP is not recommended format for copying. In fact, Win10 won't accept it.
- Use CF_DIB clipboard format instead of CF_BITMAP in copying.
- Use CF_ENHMETAFILE, CF_DIB, or CF_BITMAP in pasting.
- Add BitmapToClipboardDIB, BitmapFromClipboardDIB, and BitmapFromHEMF helper functions to dib.cpp.
- Re-enable paste by fixing the bug that is embugged in the previous commit.
- Enable Cut, Copy, Paste, and Delete on text editing box by modifying OnInitMenuPopup.
- Add IDS_CANTPASTE resource string to show message on paste failure.
CORE-18867
- Painting the canvas is done by overlaying the multiple layers.
- Drawing each overlay is implemented as polymorphism of OOP.
- Refine the Undo/Redo mechanism.
- Some adjustments.
CORE-17969
It's necessary to make this clamping there so that returned values are
always used consistently in taskmgr, including in places where the
values are directly fetched into other functions.
This is a free adaptation from
Wine commit
a9742b3210c4cec67aca3c0012f3b9504a4368cf
From: Gerald Pfeifer <gerald@pfeifer.com>
taskmgr: Move out-of-domain checking into
PerfDataGetProcessorUsage() and PerfDataGetProcessorSystemUsage().
Use the power of CRT debug to detect memory leaks.
- Define _CRTDBG_MAP_ALLOC and include <crtdbg.h> after <stdlib.h>.
- Call _CrtSetDbgFlag at prologue of wWinMain.
CORE-18014
- Move messages from OnInstall procedure to en-US resource file.
- Applied the same changes to all language files, now it's available
for translation into other languages.
CORE-18952
Signed-off-by: Nikita Piatygorskiy <generalhammond16@gmail.com>
Improve keyboard usability.
- Add CCanvasWindow::MoveSelection.
- Modify CMainWindow::OnKeyDown.
- If Esc key is pressed, then the selection will land to canvas.
- If any arrow key is pressed, then the selection will move a bit.
CORE-18867
When the window size is smaller than the image size in both directions, the wrong cursor is displayed when hovering the mouse over the scrollbars.
Readjust position for file date and file size objects, to fit all text.
CORE-18867
Our paint program used the pixels per meter (PPM)
unit but this unit is hardly used in the world.
Let's use DPI (dots per inch) and/or pixels per
centimeter (PPCM). CORE-18867
The unhiding and guilty revision that was identified by @stasm by bisecting the
bootability of LiveCD was 0.4.15-dev-6050-g13e6cbc
As that was the symptom: "We could not longer boot livecd". CORE-18986
Make resource files consistent among different languages.
CORE-18903
Add the WS_DISABLED flag for IDC_BUTTON_HELP and IDC_BUTTON_SAVE_INFO,
in those places where it was not done. The actions corresponding to those
buttons are currently unimplemented, this is why they were disabled.
Signed-off-by: Nikita Piatygorskiy <generalhammond16@gmail.com>
OSK et Magnify are mixed at initialization (language dependent),
LBS_STANDARD includes LBS_SORT style that changes the content in the listbox.
Patch by KRosUser.
CORE-18274
- Avoid using a NULL pointer when My Computer is selected, by disabling the New Key menu item.
- Simplifies and fix code style in GetItemPath function.
- Add a new entry even when no child items exist.
CORE-18878
Centralize the names of the RAPPS' registry setting sub-key, and
user local settings & offline apps database sub-directories.
- Change the name of the application database sub-directory from
"rapps\rapps" to "RApps\appdb".
- Adjust the documentation to reflect this.
- Simplify CConfigParser constructor by removing GetINIFullPath().
Alt+D in german translation is already reserved for the file menu "&Datei"
in ROS and in MS Windows, thus we cannot use the same as accelerator
for focusing the address bar.
So for german we will use Alt+S instead, which is the same shortcut that
german MS+ROS explorer use for focusing their address bar.
This is an addendum to commit f908d37bb from PR #4885
which broke the german file-menu accelerator.
- Use GetKeyboardLayoutList to get the keyboard list instead of using Preload registry key.
- Get the special IDs from registry to handle special HKLs in newly-added LoadSpecialIds function.
- Add GetKLIDFromHKL, GetHKLFromLayoutNum, UpdateLayoutList, and GetKLIDFromLayoutNum helper functions.
CORE-13145, CORE-10667, CORE-18924
The minimized non-task windows were not usable due to the bugs. In some situations, the system will restore the minimized non-task windows.
- Add IsTaskWnd helper function.
- Add SendPulseToTray function to send a pulse to the tray window.
- At some shell hook handlings, send a pulse to the tray window.
- Add IgnorePulse flag to control the timing of restoring.
- Add a timer to reset IgnorePulse flag.
- If the pulse has come and IgnorePulse flag is false, then restore the minimized non-task windows.
- Modify the rundll32 window procedure.
- Use WINDOWPLACEMENT to restore the minimized windows.
CORE-13895, CORE-18350
- Move imageArea code into canvasWindow.
- Delete imgarea.cpp, imgarea.h, and imageArea.
- Add CCanvasWindow::ImageToCanvas and CCanvasWindow::CanvasToImage to convert the coordinates.
- Realize drawing of resizing image area.
CORE-18867
Improve compatibility.
- Rename window class "rundll32_window" as "RunDLL".
- Delete some shell32 codes about this window class.
CORE-13895, CORE-18350
The user will be able to move the palette window to bottom by dragging.
- Add Bar1ID registry setting.
- Move paletteWindow to top or bottom in mainWindow's WM_SIZE handling.
- Track the mouse dragging on paletteWindow.
- If the dragging is beyond the center point, then move paletteWindow.
CORE-18867
The user will be able to move ToolBox in the main window by dragging.
- Add Bar2ID registry setting.
- Add CPaintToolBar class to encapsulate the toolbar code.
- Capture and track the mouse dragging in CToolBox.
- Move the ToolBox if dragging is beyond the center position.
CORE-18867
We will check the data size correctly, instead of 3 NUL byte appending hack. Add bSelectNone parameter to UpdateAddress and RefreshListView functions. If bSelectNone is TRUE, then select nothing of ListView. Fix item selection of ListView. Rename CompareData helper function as MatchData and improve it. Improve the search algorithm. If the item selection of ListView changed, scroll down to the item. Follow up to #5146. CORE-15986, CORE-18230
- Add DoCreate methods to CFullscreenWindow, CMiniatureWindow, and CMainWindow classes.
- Do encapsulation around mainWindow and _tWinMain.
- Add GetOpenFileName, GetSaveFileName, and ChooseColor helper methods to CMainWindow class.
- Move some code in WinMain into CMainWindow::OnCreate.
- Delay creation of CFullscreenWindow and CMiniatureWindow.
- Extend ATL CImage class as CImageDx in newly-created atlimagedx.h of mspaint.
CORE-18867
Many coordinates are dynamically calculated. It is adjustable against client area change.
- Fix some brush/eraser shapes for pixel perfection.
- Reduce magic numbers in toolssettings.cpp.
- Refactoring.
CORE-18867
Reduce window controls and integrate to the canvas window.
- The sizeboxes are absorbed by canvasWindow.
- class CSizeboxWindow is deleted.
- Add enum CANVAS_HITTEST.
- Add getSizeBoxRect, getSizeBoxHitTest, and drawSizeBoxes helper functions in sizebox.cpp.
CORE-18867
According to my registry analysis, the target value is HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Applets\Paint\General-Bar3:Visible.
- Add ShowToolBox registry setting.
CORE-18867
According to my registry analysis, HKCU\Software\Microsoft\Windows\CurrentVersion\Applets\Paint\General-Bar4:Visible is the target value.
- Improve ReadDWORD helper function.
- Add ShowPalette registry setting.
- Simplify RegistrySettings::Load and RegistrySettings::Store.
CORE-18867
Define MAX_RECENT_FILES macro as 4.
Remove strFile1, ..., strFile4 settings and add strFiles[MAX_RECENT_FILES] for Most Recently Used (MRU) files.
CORE-18867
Fixes crashes in regedit-find affecting CORE-15896 and CORE-18230. After possible RegQueryValueExW append 3 zero bytes to guarantee that we will end with a UNICODE NULL.
- Add CPaletteWindow::OnEraseBkgnd to avoid flickering.
- Add getColorBoxRect and drawColorBox helper functions to draw a color box.
- Add CPaletteWindow::DoHitTest helper function to do a hit test.
- Improve CPaletteWindow::OnPaint by using a memory bitmap.
- Improve readability of CMainWindow::alignChildrenToMainWindow.
CORE-18867