Closed Bug 194180 Opened 22 years ago Closed 22 years ago

[gtk2] OnContainerFocusOut may find wrong nswindow to dispatch deactive event

Categories

(Core :: XUL, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: iamawalrus, Assigned: blizzard)

References

Details

Attachments

(1 file)

In OnContainerFocusOut(), there are codes like:
1486     // Figure out if the focus widget is the child of this window.  If
1487     // it is, send a focus out and deactivate event for it.
1488     if (!gFocusWindow)
1489         return;
1490 
1491     GdkWindow *tmpWindow;
1492     tmpWindow = (GdkWindow *)gFocusWindow->GetNativeData(NS_NATIVE_WINDOW);
1493     nsWindow *tmpnsWindow = get_window_for_gdk_window(tmpWindow);
1494 
1495     while (tmpWindow && tmpnsWindow) {
1496         // found it!
1497         if (tmpnsWindow == gFocusWindow)
1498             goto foundit;
1499 
1500         tmpWindow = gdk_window_get_parent(tmpWindow);
1501         if (!tmpWindow)
1502             break;
1503 
1504         tmpnsWindow = get_owning_window_for_gdk_window(tmpWindow);
1505     }
In line 1497, tmpnsWindow is always equal to gFocusWindow at the first time
because tmpnsWindow is extracted from gFoucusWindow. Should it be "if
(tmpnsWindow == this)" instead ? This may deactive any current focused window.
Attached patch patchSplinter Review
Comment on attachment 114993 [details] [diff] [review]
patch

r=blizzard

Woops.
Attachment #114993 - Flags: review+
checked in.
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: