Closed Bug 53121 Opened 24 years ago Closed 24 years ago

Mouse pointer shows busy icon when filepicker open; and during startup phase.

Categories

(Core :: XUL, defect, P2)

PowerPC
Mac System 9.x
defect

Tracking

()

VERIFIED FIXED

People

(Reporter: shrir, Assigned: mikepinkerton)

References

Details

(Whiteboard: [nsbeta3-][pdtp2][rtm++])

build:091808m18 mac only Steps: 1 Launch Composer 2 Type some text 3 Goto 'File|Print' 4 Observe that the mouse pointer changes to a busy icon and stays like that forever. Expected: Mouse pointer should not show busy state after dialog is open.
oh, drat, guess i didn't try that testcase. I forgot about OS modal dialogs. Is this that major? It's probably worth fixing.
Hardware: PC → Macintosh
Another code path to consider: start a drag and hold it for a few seconds. The cursor changes to the 'watch' cursor.
since this will confuse users to no end (thinking the app has just hung on them), i suggest we beta3+ this. it is a perceived crash, when in fact the app is happy and functioning normally. the fix is pretty safe, and needs to be done for dnd as well.
Keywords: nsbeta3
Priority: P3 → P2
Watch cursor is a powerful cue for Mac users that the app has gone 'bye-bye', they will think it is crashed. nsbeta3+/p2 for m18
Whiteboard: [nsbeta3+]
Target Milestone: --- → M18
i've got a fix, just need someone kewl like smfr to look over it
Whiteboard: [nsbeta3+] → [nsbeta3+] fix in hand
checked in
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Whiteboard: [nsbeta3+] fix in hand → [nsbeta3+]
At mpt's prompting (on bug 52108), while this is fixed for the print dialog and the drag session, there are two other common code paths which need to have the cursor change suspended: 1) the filepicker native dialog (File->Open, File->Save As), and 2) during the entire startup sequence (it seems a bit redundant in that case). Reopening.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Summary: Mouse pointer shows busy icon after PRINT dialog is opened in composer → Mouse pointer shows busy icon when filepicker open; and during startup phase.
yeah, yeah, yeah, i forgot this one. easy fix. mpt can bite me.
fixed, and fixed. both filePicker and fileWidget are ready for all mpt can dish out.
pdt agrees p2.
Whiteboard: [nsbeta3+] → [nsbeta3+][pdtp2]
/me bites pinkerton ... So Mike, are you going to be jumping around fixing new instances of this bug every time any part of the Mozilla chrome becomes Mac-native? For example: * when we start using the native Mac color picker for prefs * when we start using the native Mac color picker for Composer * when bug 16766 (single-drag context menu access) is fixed * when bug 34572 (native context menus) is fixed * when Mozilla starts supporting the Keychain, and brings up native Keychain dialogs etc etc etc ... If so, then it really looks as if you fixed bug 52108 the Wrong Way.
yup.
Status: REOPENED → RESOLVED
Closed: 24 years ago24 years ago
Resolution: --- → FIXED
Reopening. With build 2000092212, I no longer get the flickering busy cursor while native dialogs are open, or the busy cursor in the Print dialog, but I still get: * spastic cursor (flickering between normal and busy) during startup phase, as noted in this bug by jrgm on 2000-09-21; * busy cursor in the Save Image dialog when using FlashIt to take a screenshot of Mozilla; * busy cursor whenever I mousedown anywhere in the Open File or Save dialogs for more than a second (e.g. dragging the scrollbar thumb, or even mousing down on a non-widget part of the dialog).
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
We'll just have to live with that. nsbeta3-/future
Whiteboard: [nsbeta3+][pdtp2] → [nsbeta3-][pdtp2]
Target Milestone: M18 → Future
[Using the same build] The cursor also continuously flickers between the arrow and the spinning watch in the mail three-pane window, if a mail folder is open (i.e. displaying its messages in the thread pane). This is pretty disconcerting (not to mention inexplicable) when you're trying to read your e-mail. So you may want to consider the nsbeta3- status of this bug.
nominate for rtm consideration
Keywords: rtm
rtm+ need info: Visible bug, known safe one-line fix that has already been done elsewhere in the app, Pink will need to make changes to this file for other rtm bugs.
Whiteboard: [nsbeta3-][pdtp2] → [nsbeta3-][pdtp2][rtm+ need info]
Target Milestone: Future → M19
Status: REOPENED → ASSIGNED
here's my patch, r=pchen Index: mozilla/widget/src/mac/nsScrollbar.cpp =================================================================== RCS file: /m/pub/mozilla/widget/src/mac/nsScrollbar.cpp,v retrieving revision 1.34 diff -u -2 -r1.34 nsScrollbar.cpp --- nsScrollbar.cpp 2000/04/19 22:12:01 1.34 +++ nsScrollbar.cpp 2000/10/05 19:12:38 @@ -27,4 +27,6 @@ #endif +#include "nsWatchTask.h" + NS_IMPL_ADDREF(nsScrollbar); NS_IMPL_RELEASE(nsScrollbar); @@ -207,5 +209,7 @@ // for the thumb (this was illegal in previous // versions of the defproc). + nsWatchTask::GetTask().Suspend(); ::TrackControl(mControl, thePoint, sControlActionProc); + nsWatchTask::GetTask().Resume(); // We don't dispatch the mouseDown event because mouseUp is eaten // by TrackControl anyway and the only messages the app really Index: mozilla/widget/src/mac/nsFileWidget.cpp =================================================================== RCS file: /m/pub/mozilla/widget/src/mac/nsFileWidget.cpp,v retrieving revision 1.27 diff -u -2 -r1.27 nsFileWidget.cpp --- nsFileWidget.cpp 2000/09/22 04:27:24 1.27 +++ nsFileWidget.cpp 2000/10/05 19:12:38 @@ -206,6 +206,4 @@ static pascal void myProc ( NavEventCallbackMessage msg, NavCBRecPtr cbRec, NavCallBackUserData data ) { - nsWatchTask::GetTask().EventLoopReached(); - switch ( msg ) { case kNavCBEvent: @@ -253,4 +251,5 @@ // Display the get file dialog + nsWatchTask::GetTask().Suspend(); anErr = ::NavPutFile( NULL, @@ -261,4 +260,5 @@ creatorToSave, NULL); // callbackUD + nsWatchTask::GetTask().Resume(); // See if the user has selected save @@ -326,4 +326,5 @@ // Display the get file dialog + nsWatchTask::GetTask().Suspend(); anErr = ::NavGetFile( NULL, @@ -335,4 +336,5 @@ NULL, //typeList, NULL); // callbackUD + nsWatchTask::GetTask().Resume(); // See if the user has selected save @@ -394,4 +396,5 @@ // Display the get file dialog + nsWatchTask::GetTask().Suspend(); anErr = ::NavChooseFolder( NULL, @@ -401,4 +404,5 @@ NULL, // filter proc NULL); // callbackUD + nsWatchTask::GetTask().Resume(); // See if the user has selected save Index: mozilla/widget/src/mac/nsFilePicker.cpp =================================================================== RCS file: /m/pub/mozilla/widget/src/mac/nsFilePicker.cpp,v retrieving revision 1.24 diff -u -2 -r1.24 nsFilePicker.cpp --- nsFilePicker.cpp 2000/09/22 04:27:22 1.24 +++ nsFilePicker.cpp 2000/10/05 19:12:38 @@ -172,6 +172,4 @@ static pascal void FileDialogEventHandlerProc( NavEventCallbackMessage msg, NavCBRecPtr cbRec, NavCallBackUserData data ) { - nsWatchTask::GetTask().EventLoopReached(); - switch ( msg ) { case kNavCBEvent: @@ -303,4 +301,5 @@ // Display the get file dialog. Only use a filter proc if there are any // filters registered. + nsWatchTask::GetTask().Suspend(); anErr = ::NavGetFile( NULL, @@ -312,4 +311,5 @@ NULL, //typeList, this); // callbackUD - used by the filterProc + nsWatchTask::GetTask().Resume(); // See if the user has selected save @@ -370,4 +370,5 @@ // Display the get file dialog + nsWatchTask::GetTask().Suspend(); anErr = ::NavChooseFolder( NULL, @@ -377,4 +378,5 @@ NULL, // filter proc NULL); // callbackUD + nsWatchTask::GetTask().Resume(); // See if the user has selected save @@ -427,4 +429,5 @@ // Display the get file dialog + nsWatchTask::GetTask().Suspend(); anErr = ::NavPutFile( NULL, @@ -435,4 +438,5 @@ creatorToSave, NULL); // callbackUD + nsWatchTask::GetTask().Resume(); // See if the user has selected save Index: mozilla/widget/src/mac/nsMacMessagePump.cpp =================================================================== RCS file: /m/pub/mozilla/widget/src/mac/nsMacMessagePump.cpp,v retrieving revision 1.110 diff -u -2 -r1.110 nsMacMessagePump.cpp --- nsMacMessagePump.cpp 2000/09/21 05:11:51 1.110 +++ nsMacMessagePump.cpp 2000/10/05 19:12:38 @@ -193,4 +193,7 @@ mTSMMessagePump = nsMacTSMMessagePump::GetSingleton(); NS_ASSERTION(mTSMMessagePump!=NULL,"nsMacMessagePump::nsMacMessagePump: Unable to create TSM Message Pump."); + + // startup the watch cursor idle time vbl task + nsWatchTask::GetTask().Start(); } Index: mozilla/gfx/src/mac/nsWatchTask.h =================================================================== RCS file: /m/pub/mozilla/gfx/src/mac/nsWatchTask.h,v retrieving revision 1.1 diff -u -2 -r1.1 nsWatchTask.h --- nsWatchTask.h 2000/09/21 05:05:09 1.1 +++ nsWatchTask.h 2000/10/05 19:13:46 @@ -45,4 +45,9 @@ ~nsWatchTask ( ) ; + // Registers the VBL task and does other various init tasks to begin + // watching for time away from the event loop. It is ok to call other + // methods on this object w/out calling Start(). + NS_GFX void Start ( ) ; + // call from the main event loop NS_GFX void EventLoopReached ( ) ; Index: mozilla/gfx/src/mac/nsWatchTask.cpp =================================================================== RCS file: /m/pub/mozilla/gfx/src/mac/nsWatchTask.cpp,v retrieving revision 1.1 diff -u -2 -r1.1 nsWatchTask.cpp --- nsWatchTask.cpp 2000/09/21 05:05:05 1.1 +++ nsWatchTask.cpp 2000/10/05 19:13:46 @@ -47,12 +47,5 @@ mInstallSucceeded(PR_FALSE), mAnimation(0) { - // setup the task - mTask.qType = vType; - mTask.vblAddr = NewVBLProc((VBLProcPtr)DoWatchTask); - mTask.vblCount = kRepeatInterval; - mTask.vblPhase = 0; - - // install it - mInstallSucceeded = ::VInstall((QElemPtr)&mTask) == noErr; + } @@ -64,4 +57,26 @@ InitCursor(); } + + +// +// Start +// +// Registers the VBL task and does other various init tasks to begin +// watching for time away from the event loop. It is ok to call other +// methods on this object w/out calling Start(). +// +void +nsWatchTask :: Start ( ) +{ + // setup the task + mTask.qType = vType; + mTask.vblAddr = NewVBLProc((VBLProcPtr)DoWatchTask); + mTask.vblCount = kRepeatInterval; + mTask.vblPhase = 0; + + // install it + mInstallSucceeded = ::VInstall((QElemPtr)&mTask) == noErr; + +} // Start
a=hyatt
removing need info. have patch, and r (pchen) and a (hyatt).
Whiteboard: [nsbeta3-][pdtp2][rtm+ need info] → [nsbeta3-][pdtp2][rtm+]
PDT marking [rtm++]
Whiteboard: [nsbeta3-][pdtp2][rtm+] → [nsbeta3-][pdtp2][rtm++]
fix landed on branch and trunk.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago24 years ago
Resolution: --- → FIXED
verified fixed, branch 2000101108 mac Watch does not appear in Print and filepicker dialogs, when mousedown on a control in a native dialog, when mousedown-hold on the scrollbar of an HTML select in a web page (native), or anywhere in the XUL of the app including in the three-pane mail. We are not going to address the flickering cursor at startup, and there is a bug 55683 "Watch cursor displayed when taking a screen shot" filed on the screen shot issue.
Status: RESOLVED → VERIFIED
Depends on: 52108
OS: Mac System 9.x
Component: XP Toolkit/Widgets: Menus → XUL
QA Contact: jrgmorrison → xptoolkit.widgets
You need to log in before you can comment on or make changes to this bug.