mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Aqua focus ring is cut off after form autocomplete goes away, second pass. Includes some code by hwaara from bug 392813. b=417124 r=hwaara sr=roc
This commit is contained in:
parent
341366dedf
commit
e566ea1512
@ -413,7 +413,7 @@ nsresult nsCocoaWindow::StandardCreate(nsIWidget *aParent,
|
||||
}
|
||||
else {
|
||||
mWindow = (NSWindow*)aNativeWindow;
|
||||
mVisible = PR_TRUE;
|
||||
mVisible = [mWindow isVisible];
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
@ -509,6 +509,9 @@ NS_IMETHODIMP nsCocoaWindow::SetModal(PRBool aState)
|
||||
// Hide or show this window
|
||||
NS_IMETHODIMP nsCocoaWindow::Show(PRBool bState)
|
||||
{
|
||||
if (mVisible == bState)
|
||||
return NS_OK;
|
||||
|
||||
nsIWidget* parentWidget = mParent;
|
||||
nsCOMPtr<nsPIWidgetCocoa> piParentWidget(do_QueryInterface(parentWidget));
|
||||
NSWindow* nativeParentWindow = (parentWidget) ?
|
||||
@ -678,8 +681,22 @@ NS_IMETHODIMP nsCocoaWindow::Show(PRBool bState)
|
||||
// the NSApplication class (in header files generated using class-dump).
|
||||
// This workaround was "borrowed" from the Java Embedding Plugin (which
|
||||
// uses it for a different purpose).
|
||||
if (mWindowType == eWindowType_popup)
|
||||
if (mWindowType == eWindowType_popup) {
|
||||
[NSApp _removeWindowFromCache:mWindow];
|
||||
// Apple's focus ring APIs sometimes clip themselves when they draw under
|
||||
// other windows. Redraw the window that was likely under the popup to
|
||||
// get focus rings to draw correctly. Sometimes the window is not properly
|
||||
// the parent of the popup, so we can't just tell the parent to redraw.
|
||||
// We only have this problem on 10.4. See bug 417124.
|
||||
if (!nsToolkit::OnLeopardOrLater()) {
|
||||
NSWindow* keyWindow = [NSApp keyWindow];
|
||||
if (keyWindow)
|
||||
[keyWindow display];
|
||||
NSWindow* mainWindow = [NSApp mainWindow];
|
||||
if (mainWindow && mainWindow != keyWindow)
|
||||
[mainWindow display];
|
||||
}
|
||||
}
|
||||
|
||||
// it's very important to turn off mouse moved events when hiding a window, otherwise
|
||||
// the windows' tracking rects will interfere with each other. (bug 356528)
|
||||
|
Loading…
Reference in New Issue
Block a user