Index: chrome/browser/chromeos/login/screen_locker.cc |
=================================================================== |
--- chrome/browser/chromeos/login/screen_locker.cc (revision 85284) |
+++ chrome/browser/chromeos/login/screen_locker.cc (working copy) |
@@ -198,7 +198,9 @@ |
// focus/events inside the grab widget. |
class LockWindow : public views::WidgetGtk { |
public: |
- LockWindow() : toplevel_focus_widget_(NULL) { |
+ LockWindow() |
+ : views::WidgetGtk(new views::Widget), |
+ toplevel_focus_widget_(NULL) { |
EnableDoubleBuffer(true); |
} |
@@ -289,7 +291,8 @@ |
class GrabWidget : public views::WidgetGtk { |
public: |
explicit GrabWidget(chromeos::ScreenLocker* screen_locker) |
- : screen_locker_(screen_locker), |
+ : views::WidgetGtk(new views::Widget), |
+ screen_locker_(screen_locker), |
ALLOW_THIS_IN_INITIALIZER_LIST(task_factory_(this)), |
grab_failure_count_(0), |
kbd_grab_status_(GDK_GRAB_INVALID_TIME), |
@@ -730,9 +733,10 @@ |
gfx::Rect init_bounds(views::Screen::GetMonitorAreaNearestPoint(left_top)); |
LockWindow* lock_window = new LockWindow(); |
- lock_window_ = lock_window; |
+ lock_window_ = lock_window->GetWidget(); |
views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
params.bounds = init_bounds; |
+ params.native_widget = lock_window; |
lock_window_->Init(params); |
gtk_widget_modify_bg( |
lock_window_->GetNativeView(), GTK_STATE_NORMAL, &kGdkBlack); |
@@ -755,12 +759,13 @@ |
// TryGrabAllInputs() method later. (Nobody else needs to use it, so moving |
// its declaration to the header instead of keeping it in an anonymous |
// namespace feels a bit ugly.) |
- GrabWidget* cast_lock_widget = new GrabWidget(this); |
- lock_widget_ = cast_lock_widget; |
+ GrabWidget* grab_widget = new GrabWidget(this); |
+ lock_widget_ = grab_widget->GetWidget(); |
views::Widget::InitParams lock_params( |
views::Widget::InitParams::TYPE_CONTROL); |
lock_params.transparent = true; |
lock_params.parent_widget = lock_window_; |
+ lock_params.native_widget = grab_widget; |
lock_widget_->Init(lock_params); |
if (screen_lock_view_) { |
GrabWidgetRootView* root_view = new GrabWidgetRootView(screen_lock_view_); |
@@ -790,11 +795,11 @@ |
lock_window_->SetContentsView(background_view_); |
lock_window_->Show(); |
- cast_lock_widget->ClearGtkGrab(); |
+ grab_widget->ClearGtkGrab(); |
// Call this after lock_window_->Show(); otherwise the 1st invocation |
// of gdk_xxx_grab() will always fail. |
- cast_lock_widget->TryGrabAllInputs(); |
+ grab_widget->TryGrabAllInputs(); |
// Add the window to its own group so that its grab won't be stolen if |
// gtk_grab_add() gets called on behalf on a non-screen-locker widget (e.g. |