views: Implement focus and blur event.
This commit is contained in:
parent
ee5312fff9
commit
4e4227aef8
3 changed files with 25 additions and 1 deletions
|
@ -62,6 +62,8 @@ NativeWindowViews::NativeWindowViews(content::WebContents* web_contents,
|
|||
options.Get(switches::kResizable, &resizable_);
|
||||
options.Get(switches::kTitle, &title_);
|
||||
|
||||
window_->AddObserver(this);
|
||||
|
||||
views::Widget::InitParams params;
|
||||
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
|
||||
params.delegate = this;
|
||||
|
@ -95,6 +97,7 @@ NativeWindowViews::NativeWindowViews(content::WebContents* web_contents,
|
|||
}
|
||||
|
||||
NativeWindowViews::~NativeWindowViews() {
|
||||
window_->RemoveObserver(this);
|
||||
}
|
||||
|
||||
void NativeWindowViews::Close() {
|
||||
|
@ -291,6 +294,17 @@ void NativeWindowViews::UpdateDraggableRegions(
|
|||
draggable_region_.reset(draggable_region);
|
||||
}
|
||||
|
||||
void NativeWindowViews::OnWidgetActivationChanged(
|
||||
views::Widget* widget, bool active) {
|
||||
if (widget != window_.get())
|
||||
return;
|
||||
|
||||
if (active)
|
||||
NotifyWindowFocus();
|
||||
else
|
||||
NotifyWindowBlur();
|
||||
}
|
||||
|
||||
void NativeWindowViews::DeleteDelegate() {
|
||||
NotifyWindowClosed();
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
#include "atom/browser/ui/accelerator_util.h"
|
||||
#include "ui/views/widget/widget_delegate.h"
|
||||
#include "ui/views/widget/widget_observer.h"
|
||||
|
||||
namespace views {
|
||||
class UnhandledKeyboardEventHandler;
|
||||
|
@ -21,7 +22,8 @@ class Widget;
|
|||
namespace atom {
|
||||
|
||||
class NativeWindowViews : public NativeWindow,
|
||||
public views::WidgetDelegateView {
|
||||
public views::WidgetDelegateView,
|
||||
public views::WidgetObserver {
|
||||
public:
|
||||
explicit NativeWindowViews(content::WebContents* web_contents,
|
||||
const mate::Dictionary& options);
|
||||
|
@ -74,6 +76,10 @@ class NativeWindowViews : public NativeWindow,
|
|||
virtual void UpdateDraggableRegions(
|
||||
const std::vector<DraggableRegion>& regions) OVERRIDE;
|
||||
|
||||
// views::WidgetObserver:
|
||||
virtual void OnWidgetActivationChanged(
|
||||
views::Widget* widget, bool active) OVERRIDE;
|
||||
|
||||
// views::WidgetDelegate:
|
||||
virtual void DeleteDelegate() OVERRIDE;
|
||||
virtual views::View* GetInitiallyFocusedView() OVERRIDE;
|
||||
|
|
|
@ -199,7 +199,11 @@ views::View* MessageDialog::GetInitiallyFocusedView() {
|
|||
}
|
||||
|
||||
ui::ModalType MessageDialog::GetModalType() const {
|
||||
#if defined(USE_X11)
|
||||
return ui::MODAL_TYPE_NONE;
|
||||
#else
|
||||
return ui::MODAL_TYPE_WINDOW;
|
||||
#endif
|
||||
}
|
||||
|
||||
gfx::Size MessageDialog::GetPreferredSize() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue