https://bugs.winehq.org/show_bug.cgi?id=56431
Bug ID: 56431 Summary: Dotnet TreeView disappearing plus-sign Product: Wine Version: 9.3 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: Wagner.a18@yahoo.com Distribution: ---
I try to get a dotnet application, which has a treeview element on board, running. If I expand a tree node to display the next level of child tree nodes with a press on the plus-sign and collapse the child tree node level with the minus-sign after that. The plus-sign disappears and I am not able to expand the tree node again. I have to restart the whole application to be able to expand the tree node again.
I installed this packages - WINEPREFIX=~/.wine-32 winetricks vcrun2005 vcrun2008 vcrun2010 vcrun2012 vcrun2013 vcrun2015 - WINEPREFIX=~/.wine-32 winetricks msxml3 - WINEPREFIX=~/.wine-32 winetricks msxml4 - WINEPREFIX=~/.wine-32 winetricks msxml6 - WINEPREFIX=~/.wine-32 winetricks mdac28 - WINEPREFIX=~/.wine-32 winetricks jet40
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #1 from Wagner.a18@yahoo.com --- Created attachment 76194 --> https://bugs.winehq.org/attachment.cgi?id=76194 Tree view / Tree list
https://bugs.winehq.org/show_bug.cgi?id=56431
Vijay Kamuju infyquest@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |infyquest@gmail.com
--- Comment #2 from Vijay Kamuju infyquest@gmail.com --- Please test with wine 9.4
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #3 from Wagner.a18@yahoo.com --- I will try it as soon the new version of wine is available on pacman! :)
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #4 from Nikolay Sivov bunglehead@gmail.com --- Is this application, or some other dotnet application showing the same problem, available for testing somewhere?
https://bugs.winehq.org/show_bug.cgi?id=56431
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dark.shadow4@web.de
https://bugs.winehq.org/show_bug.cgi?id=56431
temp82@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |temp82@luukku.com
--- Comment #5 from temp82@luukku.com --- reminds me of bug 24851.
https://bugs.winehq.org/show_bug.cgi?id=56431
Wagner.a18@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|9.3 |9.4
--- Comment #6 from Wagner.a18@yahoo.com --- So now i could test it with version 9.4. The result is the same.
@Nikolay Sivov Unfortunately, this software is a proprietary application that I am not allowed to pass on to you :/
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #7 from Wagner.a18@yahoo.com --- @temp82@luukku.com The effect described in the bug you have linked I can not reproduce...
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #8 from Vijay Kamuju infyquest@gmail.com --- may be you can provide logs when launching normally in command line and with detailed log level for comctl32.
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #9 from Wagner.a18@yahoo.com --- Can you explain what I have exactly to do to have a detailed loglevel for comctl32... I can not find anything about how to do this?
Or do you mean the standard loglevel: WINEDEBUG=warn+all
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #10 from Vijay Kamuju infyquest@gmail.com --- for treeview in comctl32 is WINEDEBUG=+treeview wine ...
But for this its better to see treeview and gdiplus
WINEDEBUG=+treeview,+gdiplus wine ...
https://bugs.winehq.org/show_bug.cgi?id=56431
Bartosz gang65@poczta.onet.pl changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gang65@poczta.onet.pl
--- Comment #11 from Bartosz gang65@poczta.onet.pl --- Is: winetricks gdiplus resolve the issue?
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #12 from Wagner.a18@yahoo.com --- @Vijay Kamuju If I enable this debug flags I have many many output on my cli. I tried to stop the application immediately after I triggered my error situation.... I hope I catched the right time of output:
Is a hastebin okay?: https://hastebin.com/share/urigiguzon.ruby
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #13 from Wagner.a18@yahoo.com --- @Bartosz I tried this but the result is the same
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #14 from Wagner.a18@yahoo.com --- @Vijay Kamuju could you see any relevant error message in my output? Or can I provide any further information?
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #15 from Wagner.a18@yahoo.com --- So now I tested it with version 9.10. The result is still the same.
Any updates here? What can I try to solve this problem?
https://bugs.winehq.org/show_bug.cgi?id=56431
Ken Sharp imwellcushtymelike@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|major |minor Version|9.4 |9.3
https://bugs.winehq.org/show_bug.cgi?id=56431
Esme Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |madewokherd@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=56431
Wagner.a18@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED
--- Comment #16 from Wagner.a18@yahoo.com --- In the meantime I could solve the problem with the disappearing plus-sign. I made a completely new wine prefix with "wine-10.1" and installed this packages:
• export WINEPREFIX=~/.wine-new • winecfg • winetricks vcrun2019 • wine Downloads/windowsdesktop-runtime-8.0.12-win-x64.exe • winetricks corefonts • winetricks comctl32 • WINEDLLOVERRIDES="d2d1=d" wine My-Propritary-IDE.exe
https://bugs.winehq.org/show_bug.cgi?id=56431
Wagner.a18@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|FIXED |--- Status|RESOLVED |UNCONFIRMED
--- Comment #17 from Wagner.a18@yahoo.com --- Hmm but if I use the native version of comctl32 there are many other things which are not working correctly... Are there any plans to improve the builtin wine version of comctl132 to be able to handle treeview correctly?
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #18 from Nikolay Sivov bunglehead@gmail.com --- (In reply to Wagner.a18 from comment #17)
Hmm but if I use the native version of comctl32 there are many other things which are not working correctly... Are there any plans to improve the builtin wine version of comctl132 to be able to handle treeview correctly?
Sure, somebody has to look into it. And without any way to test it's difficult to do.
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #19 from Wagner.a18@yahoo.com --- Created attachment 78102 --> https://bugs.winehq.org/attachment.cgi?id=78102 WINEDEBUG
WINEDEBUG=+treeview,+gdiplus
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #20 from Wagner.a18@yahoo.com --- New try... I added my wine stdout if I enable WINEDEBUG=+treeview,+gdiplus. Maybe someone can see anything and can help? :)
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #21 from Wagner.a18@yahoo.com --- So in the meantime i got the sourcecode and debugged the comctl32 and its file “treeview.c” myself.
I was able to narrow down the problem to the function call TREEVIEW_SendExpanded (line: 3396) within the method TREEVIEW_Collapse.
Before calling this method, the affected item has a child and after the call it has 0 children and therefore the module thinks that it does not have to draw the + sign.
Does anyone have an idea why TREEVIEW_SendExpanded() is called at this point? I think this is unnecessary, if I remove the line, then it also works.
I added Treeview_Collapse.log to have a look into my problem. I added TREEVIEW_Collapse.c with my added trace calls.
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #22 from Wagner.a18@yahoo.com --- Created attachment 78229 --> https://bugs.winehq.org/attachment.cgi?id=78229 Treeview_Collapse.log
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #23 from Wagner.a18@yahoo.com --- Created attachment 78230 --> https://bugs.winehq.org/attachment.cgi?id=78230 TREEVIEW_Collapse.c
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #24 from Wagner.a18@yahoo.com --- How can I proceed here? Please come back to me if I can test anything else or tell me what I can do to help to solve my issue :)
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #25 from Bartosz gang65@poczta.onet.pl --- Created attachment 78231 --> https://bugs.winehq.org/attachment.cgi?id=78231 Example of CI run, where it is possible to compare result from native (Windows) and Linux
Thanks for detail investigation of this problem. Regarding your findings in: https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/comctl32/treeview.c#L...
More information about functions are available at: https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.treeview.c...
The best what you could do is try to reproduce the issue with tests, e.g.: https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/comctl32/tests/treevi...
Such tests could be merged to master, and fix could be done later. On CI you could compare test result on Windows and Linux.
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #26 from Wagner.a18@yahoo.com --- Phew the problem is more complex than I thought. The solution could not be to delete TREEVIEW_SendExpanded(), because it is needed to update the treeview itself... (I think the method name is a little bit confusing here... :/)
TREEVIEW_SendTreeviewNotify() is called within TREEVIEW_SendExpanded() and it seems there is a timing problem... but I have no clue why :/
Within TREEVIEW_SendTreviewNotify() this method is called, and after that the children variable is set to 0!
if (newItem) TREEVIEW_TVItemFromItem(infoPtr, mask, &nmhdr.itemNew, newItem);
If I surrend this call with Trace messages the issue do not happen... (timing!?)
if (newItem) TRACE("Before TREEVIEW_TVItemFromItem: cChildren=%d\n", newItem->cChildren); TREEVIEW_TVItemFromItem(infoPtr, mask, &nmhdr.itemNew, newItem); TRACE("After TREEVIEW_TVItemFromItem: cSChildren=%d\n", nmhdr.itemNew.cChildren);
I think I have to look into it in more detail. Maybe I should try to setup an debugger to be able to set breakpoints.
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #27 from Nikolay Sivov bunglehead@gmail.com --- If you did it like that, then TREEVIEW_TVItemFromItem is now called unconditionally.
https://bugs.winehq.org/show_bug.cgi?id=56431
--- Comment #28 from Wagner.a18@yahoo.com --- Oh dear^^ Forgot my message I will look into it. :)