In this regard, I have a number of questions that I would like to clarify.
- How to get the same result now?
- Is there any way to "padding" toolbar icons without using "separator" (Doesn't look very pretty)
I tried to use the transparent userbuttons for this, but it seems to be impossible to block their selection on hovering and reaction when you click.
- Is there an official way to replace the (any) standard toolbar icon with custom one?
PS
DISCLAIMER
I truly believe that XY is one of the best file managers today, so I must point out the few flaws that it still has!
Not a bug report, just a thought out loud (can be completely ignored)
Things I was surprised to find out
1. The bug with the removal of "bad names" has not been fixed.
I highlight this is exactly a bug as standard function works in such cases without any problems.
Example:
In console from
C:\
root do: md bug\bug..\\\
And here is a simplified version of the code (fasm) to delete it with just RemoveDirectoryA
Code: Select all
format PE64 console
entry start
include 'win64a.inc'
section '.text' code readable executable
start:
sub rsp,8
; To simplify the code we just delete sequentially
invoke RemoveDirectoryA, DirPath2
test rax, rax
jz @wrong
invoke RemoveDirectoryA, DirPath1
test rax, rax
jz @wrong
cinvoke printf, <'%s',13, 10>, ' * Deleted!'
jmp @f
@wrong:
cinvoke printf, <'%s', 13,10>, ' * Something goes wrong :('
@@:
cinvoke getch
invoke ExitProcess,0
section '.data' data readable writeable
DirPath2 db 'C:\bug\bug..\',0
DirPath1 db 'C:\bug\',0
section '.idata' import data readable writeable
library kernel32,'KERNEL32.DLL', msvcrt, 'msvcrt.dll'
import msvcrt, printf, 'printf', getch, '_getch'
import kernel32, ExitProcess, 'ExitProcess', RemoveDirectoryA, 'RemoveDirectoryA'
2. I have read the branches about the x64 version of the XY and on the whole I tend to agree that there is no special need to rewrite it.
BUT there is a huge fundamental omission in XY with starting executables, scripts etc because it starts the process directly without changing the environment for the child.
The environment variables are all WRONG for a 64-bit process (inherit from the current x32 process).
By default, a child process inherits a copy of the environment block of the parent process so we must rewrite them (tricky way) or just "proxify" to XY64ctxmenu.exe (exactly what happens when you start it with the context menu).
File --> DoubleClick --> CreateProcess = BAD File --> RMB+Open --> XY64ctxmenu.exe --> CreateProcess = GOOD
I don't see cases where we would want to run with a x32 environment on a x64 machine so it's strange to see that there is no "permanent redirection" (this would have closed all the cases with the advantage of the x64 version).
Of course, launching every executables and scripts via the context menu is a crutch and nobody cannot constantly keep in mind that some files cannot be launched in the usual way (or it may lead to unpredictable consequences).
Thx.