Merge pull request #11644 from brenca/tooltip-fix-master
Explicitly hide tooltip when the window is deactivated (master)
This commit is contained in:
commit
d0af17e601
2 changed files with 27 additions and 0 deletions
|
@ -3,12 +3,16 @@
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
#include "atom/browser/ui/win/atom_desktop_native_widget_aura.h"
|
#include "atom/browser/ui/win/atom_desktop_native_widget_aura.h"
|
||||||
|
#include "ui/views/corewm/tooltip_controller.h"
|
||||||
|
#include "ui/wm/public/tooltip_client.h"
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
|
||||||
AtomDesktopNativeWidgetAura::AtomDesktopNativeWidgetAura(
|
AtomDesktopNativeWidgetAura::AtomDesktopNativeWidgetAura(
|
||||||
views::internal::NativeWidgetDelegate* delegate)
|
views::internal::NativeWidgetDelegate* delegate)
|
||||||
: views::DesktopNativeWidgetAura(delegate) {
|
: views::DesktopNativeWidgetAura(delegate) {
|
||||||
|
// This is to enable the override of OnWindowActivated
|
||||||
|
wm::SetActivationChangeObserver(GetNativeWindow(), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AtomDesktopNativeWidgetAura::Activate() {
|
void AtomDesktopNativeWidgetAura::Activate() {
|
||||||
|
@ -19,4 +23,23 @@ void AtomDesktopNativeWidgetAura::Activate() {
|
||||||
views::DesktopNativeWidgetAura::Activate();
|
views::DesktopNativeWidgetAura::Activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AtomDesktopNativeWidgetAura::OnWindowActivated(
|
||||||
|
wm::ActivationChangeObserver::ActivationReason reason,
|
||||||
|
aura::Window* gained_active,
|
||||||
|
aura::Window* lost_active) {
|
||||||
|
views::DesktopNativeWidgetAura::OnWindowActivated(
|
||||||
|
reason, gained_active, lost_active);
|
||||||
|
if (lost_active != nullptr) {
|
||||||
|
auto* tooltip_controller = static_cast<views::corewm::TooltipController*>(
|
||||||
|
wm::GetTooltipClient(lost_active->GetRootWindow()));
|
||||||
|
|
||||||
|
// This will cause the tooltip to be hidden when a window is deactivated,
|
||||||
|
// as it should be.
|
||||||
|
// TODO(brenca): Remove this fix when the chromium issue is fixed.
|
||||||
|
// crbug.com/724538
|
||||||
|
if (tooltip_controller != nullptr)
|
||||||
|
tooltip_controller->OnCancelMode(nullptr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace atom
|
} // namespace atom
|
||||||
|
|
|
@ -19,6 +19,10 @@ class AtomDesktopNativeWidgetAura : public views::DesktopNativeWidgetAura {
|
||||||
void Activate() override;
|
void Activate() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void OnWindowActivated(
|
||||||
|
wm::ActivationChangeObserver::ActivationReason reason,
|
||||||
|
aura::Window* gained_active,
|
||||||
|
aura::Window* lost_active) override;
|
||||||
DISALLOW_COPY_AND_ASSIGN(AtomDesktopNativeWidgetAura);
|
DISALLOW_COPY_AND_ASSIGN(AtomDesktopNativeWidgetAura);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue