Closed Bug 352936 Opened 18 years ago Closed 18 years ago

Download manager window not focused properly when already open and using "Do this automatically"

Categories

(Core :: Widget: Gtk, defect)

x86
Linux
defect
Not set
minor

Tracking

()

RESOLVED FIXED

People

(Reporter: ispiked, Assigned: ispiked)

Details

Attachments

(1 file)

Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a1) Gecko/20060915 Minefield/3.0a1

Steps to reproduce:

1. Open the Downloads manager.
2. Go to the latest-nightly/ directory for Firefox builds and click the tar.gz installer link.
3. In the dialog, choose "Save To Disk" and check the "Do this automatically..." checkbox.
4. Click on the normal tar.gz build.

Results:
The Download manager window is brought to the front, but not focused. Clicking somewhere on the page will not make the current window come in front of the Download manager window.

Expected results:
Download manager window is brought to the front and focused.
Summary: Download manager window not focused properly when page has text selected → Download manager window not focused properly when already open and using "Do this automatically"
The problem is actually in GTK widget code. 

The call in the download manager to focus the window if it's already open boils down to GetAttention() in nsWindow.cpp. This calls gdk_window_show(). I really think we want to be calling gdk_window_show_unraised() here, since this seems to be what other platforms are doing for this function; e.g. not bringing the window to the front of other windows!

I found one problem, though. This still doesn't give the window an "urgent" hint (blink the the window list) if a Firefox window is focused when this happens. But this bug happened with gdk_window_show(), too, so changing it wouldn't be regressing anything.
Component: Download Manager → Widget: Gtk
Product: Firefox → Core
QA Contact: download.manager → gtk
Assignee: nobody → ispiked
Status: NEW → ASSIGNED
Attachment #238904 - Flags: review?
Comment on attachment 238904 [details] [diff] [review]
Use gdk_window_show_unraised()

So this fixes the problem with the download manager. I'm somewhat worried that this might have an affect on other stuff, but I played with some testcases using window.focus() and they seemed to be OK.
Attachment #238904 - Flags: superreview?(roc)
Attachment #238904 - Flags: review?(roc)
Attachment #238904 - Flags: review?
Attachment #238904 - Flags: superreview?(roc)
Attachment #238904 - Flags: superreview+
Attachment #238904 - Flags: review?(roc)
Attachment #238904 - Flags: review+
So, I've been thinking about this and I still think this approach may be too obtrusive.

I'm pretty sure that Windows just blinks the taskbar (doesn't show the window) and Mac just does makes the dock icon jump, but the only other alternative I see is to use gdk_window_set_urgency_hint() which is only since 2.8, so I don't think we can get away with using that for older GTK versions. :(

I guess showing the window but not bringing it in front of all other windows is an improvement, though.
Whiteboard: [checkin needed]
Checking in widget/src/gtk2/nsWindow.cpp;
/cvsroot/mozilla/widget/src/gtk2/nsWindow.cpp,v  <--  nsWindow.cpp
new revision: 1.185; previous revision: 1.184
done

Checked into trunk.
Status: ASSIGNED → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Whiteboard: [checkin needed]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: