Closed Bug 122351 Opened 23 years ago Closed 23 years ago

Windows 95 doesn't have Shell_NotifyIconW

Categories

(MailNews Core :: Backend, defect)

x86
Windows 95
defect
Not set
blocker

Tracking

(Not tracked)

VERIFIED FIXED
mozilla0.9.9

People

(Reporter: neil, Assigned: mscott)

References

Details

Attachments

(1 file, 2 obsolete files)

I can't use Mozilla mail any more :-(

The turbo icon uses Shell_NotifyIcon which of course is OK on Windows 95.
this is not a blocker. Why would this stop you from using the product if it
never even worked for anyone until Monday anyway =). 

We'll take a look in the next milestone. 
Severity: blocker → normal
Status: NEW → ASSIGNED
Target Milestone: --- → mozilla0.9.9
Attached patch suggested patch (obsolete) — Splinter Review
Can I get a review for this patch?
sorry your patch breaks I18N since it no longer allows us to use the wide string
friendly APIs. We'll have to investigate another solution to make this work on
win95 (i.e. only use the ascii versions if the widestring routine is not defined)
change qa contact.
QA Contact: esther → sheelar
I submitted this as a blocker because it's not just a broken feature but becuase
this stops msgbase.dll from loading which breaks all of Mozilla mail.

If you are able to come up with a workaround which denys me the one feature,
then that remaining problem would be normal.
Severity: normal → blocker
wow, you should have said so! =). Definetly a blocker then. I'll fix this today.
*** Bug 122452 has been marked as a duplicate of this bug. ***
This patch should fix the problems for those who are running with an older
version of the shell which doesn't contain wide string support for shell
notify. Basically I dynamically look inside the shell DLL for Shell_NotifyW. If
it's defined then we use the wide string friendly struct along with the
function ptr to Shell_NotifyW. If we can't find that method then we use the non
wide string struct in conjunction with the standard ::Shell_Notify APIs which
all versions of the shell support. 

It's a bit messy since I maintain 2 structs and have several if branches which
depend on whether we are doing wide string or not but that's the only way I
could think to do it.
Attachment #66923 - Attachment is obsolete: true
*** Bug 122626 has been marked as a duplicate of this bug. ***
Suggestion: Add a function to that file, like
static BOOL myNotifyIcon(DWORD message, PNOTIFYICONDATAW nid);
This function creates a NOTIFYICONDATA from NOTIFYICONDATAW and uses it to call
Shell_NotifyIcon.

In the constructor, if you can't find Shell_NotifyIconW in the DLL, you set the
function pointer to myNotifyIcon.

This saves you from the two structs and the branches. What's your opinion?
Attached patch new cleaner fixSplinter Review
thanks for your suggestion. I still decided to go with having 2 structs around
but your comments made me think to add a level of abstraction to hide the if
clauses from the rest of the class. In this new patch we have the following
abstraction layer:

  void GenericShellNotify(DWORD aMessage);
  void SetToolTipStringOnIconData(const PRUnichar * aToolTipString);
  void DestroyBiffIcon();
  PRUint32 GetToolTipSize();
Attachment #67131 - Attachment is obsolete: true
Comment on attachment 67153 [details] [diff] [review]
new cleaner fix

I like the the abstraction you have added. It makes the  code clean and very
easy to manage.

r=bhuvan.
Attachment #67153 - Flags: review+
Comment on attachment 67153 [details] [diff] [review]
new cleaner fix

had an sr=sspitzer on this
Attachment #67153 - Flags: superreview+
fix checked in. Hopefully win95 will be useable in tomorrow's builds. 
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Keywords: nsbeta1+
Resolution: --- → FIXED
I'll be sure to try this tomorrow once I've downloaded a new nightly but in the
meantime I thought I'd be nitpicking and ask why you have this code:
if (mShellNotifyWideChar)
  mUseWideCharBiffIcon = PR_TRUE
and then test if (mUseWideCharBiffIcon) when it would appear that you could
change all those tests to if (mShellNotifyWideChar).
I downloaded a build from this morning (2002-01-31-06) on win98 and winME. I
still don't see the mail notification icon in the system tray.  
I will check this on win95 and update the bug
Sheela: This bug is for Mailnews not starting because of an undefined symbol;
not for the symbol not appearing.
scottip says this fixed the problem on Win NT where we weren't getting the
icons. Christian, how is win95 looking for you? Is the missing symbol gone,
allowing you to run mail again?
mscott: it's neil who has the problem, not me. sorry if you got the impression
Found a machine with win95. Real slow one:(
2002-01-31-06 win95 commercial build
I was able to use mail application with turbo on.  I was able send messages. I
also could see the mail notification icon in the system tray.

Scott,
This seemed to have fixed win95.  But winME and win98 still not working.  
verifying this bug for win95
Status: RESOLVED → VERIFIED
Mail is working for me on Win95 again!
Mail is now working, so I can start filing new bugs on biff icon issues :-)
Icon doesn't appear at all on Win98, build 2002020703. If this bug is fixed,
where is the Win98 equivalent?
Dimitros, this bug is for Mailnews not starting on Windows 95, not for a missing
icon on Windows 98.
Product: MailNews → Core
Product: Core → MailNews Core
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: