Closed Bug 1006765 Opened 10 years ago Closed 10 years ago

Dialogs shown while Windows lock screen is up don't paint correctly

Categories

(Core :: Widget: Win32, defect)

x86
Windows 7
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla32

People

(Reporter: bugzilla, Assigned: bugzilla)

References

Details

Attachments

(2 files, 1 obsolete file)

If Firefox displays a dialog box during the time that the Windows lock screen is up, the dialog's content is not painted once the user has entered their password and dismissed the lock screen. The dialog's border is visible but the content area is transparent. It isn't painted properly until the mouse is moved or clicked in the dialog's client area.

I noticed this with both the slow script dialog and (more commonly) the upgrade dialog box that prompts the user to restart now or restart later.

STR (I'm sure there is a more expedient way to reproduce this):
1. Run Nightly and have it as the foreground window.
2. Put the computer to sleep.
3. Put yourself to sleep.
4. In the morning, wake up your computer and log in.
5. Observe the restart now/later dialog box is nothing but a border.
Attached file show_update_dlg.js
Here are better STR:

1. Open a privileged console
2. Run the attached script in the console.
3. Before the script's timeout triggers (5 seconds in the attached version), Minimize Firefox and lock your screen (Win+L keyboard shortcut)
4. Wait for the timeout to elapse.
5. Unlock your screen.
6. Examine the dialog.
This patch adds support for WM_WTSSESSION_CHANGE. For this bug we just invalidate when we see a notification that our session has been reactivated.

This message could also be useful in the future for power saving purposes (since we could detect when our session is not in use).
Assignee: nobody → aklotz
Status: NEW → ASSIGNED
Attachment #8420684 - Flags: review?(jmathies)
Comment on attachment 8420684 [details] [diff] [review]
Ensure that Win32 widget handles WM_WTSSESSION_CHANGE

Review of attachment 8420684 [details] [diff] [review]:
-----------------------------------------------------------------

::: widget/windows/nsWindow.cpp
@@ +606,5 @@
>    }
>  
>    SubclassWindow(TRUE);
>  
> +  // We need to register to receive terminal services notification messages.

nit - the question of why we need to register should be addressed in this comment as well.

@@ +607,5 @@
>  
>    SubclassWindow(TRUE);
>  
> +  // We need to register to receive terminal services notification messages.
> +  ::WTSRegisterSessionNotification(mWnd, NOTIFY_FOR_THIS_SESSION);

Lets check the result here and assert if the call fails.
Attachment #8420684 - Flags: review?(jmathies) → review+
Addressed nits, carrying forward r+
Attachment #8420684 - Attachment is obsolete: true
Attachment #8421190 - Flags: review+
https://hg.mozilla.org/mozilla-central/rev/eae28132e647
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla32
See Also: → 691193
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: