http://bugs.winehq.org/show_bug.cgi?id=12540
Summary: Favourites menu doesn't work as expected Product: Wine Version: 0.9.46. Platform: All OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: maciej.trebacz@gmail.com
In Watchtower Library 2007 the "Favourites" menu doesn't work as expected.
First, some set up: 1. Open some article 2. Use "Favourites" menu to "Add to favourites" 3. Repeat 1 and 2 one or more times.
Now, when trying to open a favourite here's the correct behaviour: 1. Open "Favourites" menu 2. Click on the first added article 3. The article displays in the viewer 4. Open menu again 5. Click on the second or any other than first article 6. It displays correctly.
However, something diffrent happens: 1. Open "Favourites" menu 2. Click on the first added article 3. The article displays in the viewer 4. Open menu again 5. Click on the second or any other than first article 6. Program displays FIRST added article, not the one selected.
This behaviour renders Favourites menu useless. It works correctly under Windows XP. It's worth noting that favourites are executed by an external program that comes with Watchtower Library 2007 - WTFavLauncher.exe and the favourites are files located in windows/profile directory with *.wtfav extension. It seems that regardless of which item in menu user clicks, WTFavLancher picks always first added file. I have no idea whether the WTLib doesn't pass the parameter correctly or the WTFavLauncher program can't locate the file. It's also worth noting that executing WtFavLauncher.exe manually with filename of some favourite item as a parameter it works correctly - displays given article in Watchtower Library program.
What logs can I attach to help to solve this issue?
http://bugs.winehq.org/show_bug.cgi?id=12540
tehblunderbuss@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tehblunderbuss@gmail.com
--- Comment #1 from tehblunderbuss@gmail.com 2008-04-12 12:10:56 --- Have you tried with a later version of Wine?
http://bugs.winehq.org/show_bug.cgi?id=12540
Maciej maciej.trebacz@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|0.9.46. |0.9.59.
--- Comment #2 from Maciej maciej.trebacz@gmail.com 2008-04-12 12:19:09 --- (In reply to comment #1)
Have you tried with a later version of Wine?
Tried 0.9.59 right now, still the same behaviour.
http://bugs.winehq.org/show_bug.cgi?id=12540
Igor Tarasov tarasov.igor@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #3 from Igor Tarasov tarasov.igor@gmail.com 2008-04-14 07:12:14 --- *** This bug has been confirmed by popular vote. ***
http://bugs.winehq.org/show_bug.cgi?id=12540
Igor Tarasov tarasov.igor@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tarasov.igor@gmail.com
--- Comment #4 from Igor Tarasov tarasov.igor@gmail.com 2008-04-14 07:21:50 --- Maciej, what is your Linux distro/version?
Also, would you make a screenshot of favourites tab in your wtlib?
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #5 from Igor Tarasov tarasov.igor@gmail.com 2008-04-15 02:51:52 --- Created an attachment (id=12199) --> (http://bugs.winehq.org/attachment.cgi?id=12199) WINEDEBUG=+file log
Here is a log: WINEDEBUG=+file.
In order to find a place where it deals with favorites, just look for 'Favorites'.
HTH.
And yes, the program is Watchtower Reader, not Watchtower Library. Watchtower Library also has some kind of bug with Favorites, but it is different.
http://bugs.winehq.org/show_bug.cgi?id=12540
Dripple dripple2@laposte.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dripple2@laposte.net
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #6 from Igor Tarasov tarasov.igor@gmail.com 2008-05-08 10:23:44 --- Created an attachment (id=12823) --> (http://bugs.winehq.org/attachment.cgi?id=12823) WINEDEBUG=+menu on wine 0.9.61
I suppose that I've found where the problem is. I've made +menu debug run and found out that Favorites menu population happens this way:
trace:menu:InsertMenuW hMenu 0x3c0, pos -1, flags 00000400, id 80fc, str L"Ssb Zeal for Jehovah\2019s House" trace:menu:MENU_InsertItem inserting at 3 by pos 1024 trace:menu:do_debug_print_menuitem MENU_SetItemData from: { ID=0x0 } trace:menu:MENU_SetItemData flags=400 str=0xa73110 trace:menu:do_debug_print_menuitem MENU_SetItemData to : { ID=0x80fc, Text=L"Ssb Zeal for Jehovah\2019s House" } trace:menu:InsertMenuW hMenu 0x3c0, pos -1, flags 00000400, id 80fc, str L"Rbi8 Ephesians" trace:menu:MENU_InsertItem inserting at 4 by pos 1024 trace:menu:do_debug_print_menuitem MENU_SetItemData from: { ID=0x0 } trace:menu:MENU_SetItemData flags=400 str=0xa726e8
And so on. Notice the problem: all itmes have the same ID (0x80fc). So, when event happens it just fetches the very first item.
I suppose that user32.dll should somewhow avoid situation when new items being created with identical ID.
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #7 from Maciej maciej.trebacz@gmail.com 2008-05-08 13:28:40 --- Igor,
Thank You for Your investigation on this bug. Does it means that there's a bug in application (or maybe even - the MFC libraries) that gets handled well by user32? Do You still need screenshots or some other debug info?
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #8 from Igor Tarasov tarasov.igor@gmail.com 2008-05-08 14:01:46 --- (In reply to comment #7)
Does it means that there's a bug in application (or maybe even - the MFC libraries) that gets handled well by user32?
I'm not sure where the bug is exactly (where this ID is being generated - in application or in some system library). But I am pretty sure that User32.dll has some kind of workaround (some extra checkups) for this situation, since it works well on Windows.
http://bugs.winehq.org/show_bug.cgi?id=12540
Maciej maciej.trebacz@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Component|-unknown |user32
--- Comment #9 from Maciej maciej.trebacz@gmail.com 2008-05-08 14:09:56 --- Changed bug component to user32.
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #10 from Igor Tarasov tarasov.igor@gmail.com 2008-05-08 16:10:17 --- Created an attachment (id=12833) --> (http://bugs.winehq.org/attachment.cgi?id=12833) WINEDEBUG=+menu,+toolbar
Just have found out that another dynamically populated menu in that application does not work. It's a context-dependent reference works popup menu. The fun starts at line 8073 (initial menu population), popup shows up at 8775, click happens at 9000.
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #11 from Igor Tarasov tarasov.igor@gmail.com 2008-05-09 01:59:05 --- Finally. Here is the root: this menu is supposed to have MNS_NOTIFYBYPOS style. It is being set up, you may find a fixme signalizing about this.
fixme:menu:SetMenuInfo MNS_NOTIFYBYPOS partially implemented
Then, when it comes to the routine where it should read this style and react correspondingly:
if (menu->dwStyle & MNS_NOTIFYBYPOS) PostMessageW( pmt->hOwnerWnd, WM_MENUCOMMAND, menu->FocusedItem, (LPARAM)hMenu); else PostMessageW( pmt->hOwnerWnd, WM_COMMAND, item->wID, 0 );
menu->dwStyle & MNS_NOTIFYBYPOS is zero!
I've suggested that this behaviour might result in the fact that MIM_APPLYTOSUBMENUS is not implemented, and added new fixme to SetMenuInfo
if (lpmi->fMask & MIM_APPLYTOSUBMENUS) FIXME("MIM_APPLYTOSUBMENUS not implemented\n");
But the problem is: it was never thrown. So, I am kinda lost. The fact is: this menu's style is being set to MNS_NOTIFYBYPOS, but later it is somehow reset.
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #12 from Igor Tarasov tarasov.igor@gmail.com 2008-05-13 14:57:24 --- Created an attachment (id=13029) --> (http://bugs.winehq.org/attachment.cgi?id=13029) Patch that fixes this bug
I think I have patched this. I was able to find out, that dwStyle for only one menu was set to MNS_NOTIFYBYPOS, and this is the main menu (the one holding all items, such as file, view, edit, help). And user32 checks for this menu's flag (I suppose).
So, I've written this patch, that checks not only current menu style, but also main menu.
This fixed wrong behavior of WTLIB, while other software I was able to check works well still.
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #13 from Maciej maciej.trebacz@gmail.com 2008-05-13 15:09:56 --- Igor, you are a genius! The patch works perfectly for me. I just hope it gets included into wine before 1.0 is released...
http://bugs.winehq.org/show_bug.cgi?id=12540
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch
--- Comment #14 from Austin English austinenglish@gmail.com 2008-05-13 16:57:17 --- Please send patches to wine-patches@winehq.org
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #15 from Igor Tarasov tarasov.igor@gmail.com 2008-05-13 20:02:23 --- Okay, installed git, made patches, sent them.
http://bugs.winehq.org/show_bug.cgi?id=12540
Igor Tarasov tarasov.igor@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #13029|0 |1 is obsolete| |
--- Comment #16 from Igor Tarasov tarasov.igor@gmail.com 2008-05-14 04:26:08 --- Created an attachment (id=13047) --> (http://bugs.winehq.org/attachment.cgi?id=13047) Improved version of patch
I have rewritten my patch, since it caused errors in some applications (for example, Safari). Added few checkups that should prove that it won't spoil anything.
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #17 from Igor Tarasov tarasov.igor@gmail.com 2008-05-21 16:14:21 --- Created an attachment (id=13224) --> (http://bugs.winehq.org/attachment.cgi?id=13224) Test application
I've contacted developers and they've told that I need to write tests in order to make this patch go into wine. Umm... I am not able to do this, since I have no idea of how to do that.
But I was able to manage to write this small application. It allows you to apply MNS_NOTIFYBYPOS style to various menus (throug settings menu) - to top menu, to first and second. Also, you may click menu items and see what message is being dispatched.
You'll notice, that if MNS_NOTIFYBYPOS is applied to topmenu, all menus and submenus would return WM_MENUCOMMAND. But If MNS_NOTIFYBYPOS is not applied to top menu and is applied to some menu having submenus, submenus won't be affected by this.
Currently, wine ignores topmenu dwStyle value. But my patch works exactly as it should - ideally copying native comctl32.dll behaviour. I don't know of any other tests I could write.
I would like to ask wine developers not to ignore this message.
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #18 from Austin English austinenglish@gmail.com 2008-05-21 17:02:18 --- (In reply to comment #17)
Created an attachment (id=13224)
--> (http://bugs.winehq.org/attachment.cgi?id=13224) [details]
Test application
I've contacted developers and they've told that I need to write tests in order to make this patch go into wine. Umm... I am not able to do this, since I have no idea of how to do that.
Here's info on writing a conformance test: http://www.winehq.org/site/docs/winedev-guide/testing
Can you please attach the source to the test program? Porting that test case to the wine test suite would be even better...
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #19 from Igor Tarasov tarasov.igor@gmail.com 2008-05-21 17:28:25 --- Created an attachment (id=13227) --> (http://bugs.winehq.org/attachment.cgi?id=13227) Test application source
Umm... Here is the source. But it is a quick and dirty (really dirty) rewrite of example WinMenu program that was supplied with DevC++ in which it all was written and compiled under wine.
I hope you'll be able to make a test out of it.
http://bugs.winehq.org/show_bug.cgi?id=12540
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, testcase
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #20 from Dmitry Timoshkov dmitry@codeweavers.com 2008-05-23 04:38:15 --- I resent the patch, and added a test case: http://www.winehq.org/pipermail/wine-patches/2008-May/055091.html http://www.winehq.org/pipermail/wine-patches/2008-May/055092.html
http://bugs.winehq.org/show_bug.cgi?id=12540
tehblunderbuss@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|tehblunderbuss@gmail.com |
http://bugs.winehq.org/show_bug.cgi?id=12540
Dmitry Timoshkov dmitry@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #21 from Dmitry Timoshkov dmitry@codeweavers.com 2008-05-28 05:00:20 --- The fix has been committed.
http://bugs.winehq.org/show_bug.cgi?id=12540
--- Comment #22 from Igor Tarasov tarasov.igor@gmail.com 2008-05-28 05:09:52 --- Thank you very much for your help :)
http://bugs.winehq.org/show_bug.cgi?id=12540
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #23 from Alexandre Julliard julliard@winehq.org 2008-05-31 04:19:11 --- Closing bugs fixed in 1.0-rc3.
http://bugs.winehq.org/show_bug.cgi?id=12540
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Platform|All |Other
--- Comment #24 from Austin English austinenglish@gmail.com 2012-02-23 15:27:06 CST --- Removing deprecated 'All' Platform.