[Bug 56431] New: Dotnet TreeView disappearing plus-sign
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(a)winehq.org Reporter: Wagner.a18(a)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 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #1 from Wagner.a18(a)yahoo.com --- Created attachment 76194 --> https://bugs.winehq.org/attachment.cgi?id=76194 Tree view / Tree list -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 Vijay Kamuju <infyquest(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |infyquest(a)gmail.com --- Comment #2 from Vijay Kamuju <infyquest(a)gmail.com> --- Please test with wine 9.4 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #3 from Wagner.a18(a)yahoo.com --- I will try it as soon the new version of wine is available on pacman! :) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #4 from Nikolay Sivov <bunglehead(a)gmail.com> --- Is this application, or some other dotnet application showing the same problem, available for testing somewhere? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 Fabian Maurer <dark.shadow4(a)web.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dark.shadow4(a)web.de -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 temp82(a)luukku.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |temp82(a)luukku.com --- Comment #5 from temp82(a)luukku.com --- reminds me of bug 24851. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 Wagner.a18(a)yahoo.com changed: What |Removed |Added ---------------------------------------------------------------------------- Version|9.3 |9.4 --- Comment #6 from Wagner.a18(a)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 :/ -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #7 from Wagner.a18(a)yahoo.com --- @temp82(a)luukku.com The effect described in the bug you have linked I can not reproduce... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #8 from Vijay Kamuju <infyquest(a)gmail.com> --- may be you can provide logs when launching normally in command line and with detailed log level for comctl32. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #9 from Wagner.a18(a)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 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #10 from Vijay Kamuju <infyquest(a)gmail.com> --- for treeview in comctl32 is WINEDEBUG=+treeview wine ... But for this its better to see treeview and gdiplus WINEDEBUG=+treeview,+gdiplus wine ... -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 Bartosz <gang65(a)poczta.onet.pl> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |gang65(a)poczta.onet.pl --- Comment #11 from Bartosz <gang65(a)poczta.onet.pl> --- Is: winetricks gdiplus resolve the issue? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #12 from Wagner.a18(a)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 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #13 from Wagner.a18(a)yahoo.com --- @Bartosz I tried this but the result is the same -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #14 from Wagner.a18(a)yahoo.com --- @Vijay Kamuju could you see any relevant error message in my output? Or can I provide any further information? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #15 from Wagner.a18(a)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? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 Ken Sharp <imwellcushtymelike(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|major |minor Version|9.4 |9.3 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 Esme Povirk <madewokherd(a)gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |madewokherd(a)gmail.com -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 Wagner.a18(a)yahoo.com changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Status|UNCONFIRMED |RESOLVED --- Comment #16 from Wagner.a18(a)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 -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 Wagner.a18(a)yahoo.com changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|FIXED |--- Status|RESOLVED |UNCONFIRMED --- Comment #17 from Wagner.a18(a)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? -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #18 from Nikolay Sivov <bunglehead(a)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. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #19 from Wagner.a18(a)yahoo.com --- Created attachment 78102 --> https://bugs.winehq.org/attachment.cgi?id=78102 WINEDEBUG WINEDEBUG=+treeview,+gdiplus -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #20 from Wagner.a18(a)yahoo.com --- New try... I added my wine stdout if I enable WINEDEBUG=+treeview,+gdiplus. Maybe someone can see anything and can help? :) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #21 from Wagner.a18(a)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. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #22 from Wagner.a18(a)yahoo.com --- Created attachment 78229 --> https://bugs.winehq.org/attachment.cgi?id=78229 Treeview_Collapse.log -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #23 from Wagner.a18(a)yahoo.com --- Created attachment 78230 --> https://bugs.winehq.org/attachment.cgi?id=78230 TREEVIEW_Collapse.c -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #24 from Wagner.a18(a)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 :) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #25 from Bartosz <gang65(a)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. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #26 from Wagner.a18(a)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. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #27 from Nikolay Sivov <bunglehead(a)gmail.com> --- If you did it like that, then TREEVIEW_TVItemFromItem is now called unconditionally. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
https://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #28 from Wagner.a18(a)yahoo.com --- Oh dear^^ Forgot my message I will look into it. :) -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
http://bugs.winehq.org/show_bug.cgi?id=56431 --- Comment #29 from Wagner.a18(a)yahoo.com --- Okay I had to adjust my workaround again, because whith my last change the insert of new nodes was not longer working corectly. Now it seems I have a working workaround: The problem is, at collapse the "children" parameter is set to 0... so the treeview thinks we do not longer need a plus sign, because there are no childs. As hotfix I changed the resulting lines to set children to 1 instead of 0: # Change 1: TREEVIEW_UnlinkItem(const TREEVIEW_ITEM *item) { TREEVIEW_ITEM *parentItem; assert(item != NULL); assert(item->parent != NULL); /* i.e. it must not be the root */ parentItem = item->parent; if (parentItem->firstChild == item) parentItem->firstChild = item->nextSibling; if (parentItem->lastChild == item) parentItem->lastChild = item->prevSibling; if (parentItem->firstChild == NULL && parentItem->lastChild == NULL && parentItem->cChildren > 0) parentItem->cChildren = 1; // !!!!!!!!!!!originally it is set to 0 here !!!!!!!!!!!! # Change 2: TREEVIEW_RemoveAllChildren(TREEVIEW_INFO *infoPtr, const TREEVIEW_ITEM *parentItem) { TREEVIEW_ITEM *kill = parentItem->firstChild; while (kill != NULL) { TREEVIEW_ITEM *next = kill->nextSibling; TREEVIEW_RemoveItem(infoPtr, kill); kill = next; } // !!!!!!!!!!!originally it is compared against 0 here !!!!!!!!!!!! assert(parentItem->cChildren <= 1); /* I_CHILDRENCALLBACK or 0 */ -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.
participants (1)
-
WineHQ Bugzilla