diff options
| author | oshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-11 01:32:25 +0000 |
|---|---|---|
| committer | oshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-11 01:32:25 +0000 |
| commit | a3e3d1f3365ec95b47035b11a8d191606100377a (patch) | |
| tree | de23dc04cec98dee2d88297918209c9c548b753f | |
| parent | 2c73263a78261b1aa7283412df634ee810835d38 (diff) | |
| download | chromium_src-a3e3d1f3365ec95b47035b11a8d191606100377a.zip chromium_src-a3e3d1f3365ec95b47035b11a8d191606100377a.tar.gz chromium_src-a3e3d1f3365ec95b47035b11a8d191606100377a.tar.bz2 | |
Merge 84904 - Disable context menu in screen locker
Don't show image behind screen locker.
BUG=chromium-os:14985, chromium-os:13154
TEST=lock the screen, and alt-click or right click passworld field.
Review URL: http://codereview.chromium.org/6997007
TBR=oshima@google.com
Review URL: http://codereview.chromium.org/7003017
git-svn-id: svn://svn.chromium.org/chrome/branches/742/src@84905 0039d316-1c4b-4281-b951-d872f2087c98
| -rw-r--r-- | chrome/browser/chromeos/login/screen_lock_view.cc | 32 | ||||
| -rw-r--r-- | chrome/browser/chromeos/login/screen_locker.cc | 6 |
2 files changed, 31 insertions, 7 deletions
diff --git a/chrome/browser/chromeos/login/screen_lock_view.cc b/chrome/browser/chromeos/login/screen_lock_view.cc index ac39b7b..ad579e4 100644 --- a/chrome/browser/chromeos/login/screen_lock_view.cc +++ b/chrome/browser/chromeos/login/screen_lock_view.cc @@ -23,6 +23,7 @@ #include "views/border.h" #include "views/controls/image_view.h" #include "views/controls/label.h" +#include "views/controls/textfield/native_textfield_wrapper.h" #include "views/controls/textfield/textfield.h" #include "views/layout/grid_layout.h" @@ -38,7 +39,8 @@ const int kCornerRadius = 5; class PasswordField : public TextfieldWithMargin { public: PasswordField() - : TextfieldWithMargin(views::Textfield::STYLE_PASSWORD) { + : TextfieldWithMargin(views::Textfield::STYLE_PASSWORD), + context_menu_disabled_(false) { set_text_to_display_when_empty( l10n_util::GetStringUTF16(IDS_LOGIN_POD_EMPTY_PASSWORD_TEXT)); } @@ -49,10 +51,38 @@ class PasswordField : public TextfieldWithMargin { return false; } + virtual void ViewHierarchyChanged(bool is_add, + views::View* parent, + views::View* child) OVERRIDE { + Textfield::ViewHierarchyChanged(is_add, parent, child); + // Wiat until native widget is created. + if (!context_menu_disabled_ && native_wrapper_) { + gfx::NativeView widget = native_wrapper_->GetTestingHandle(); + if (widget) { + context_menu_disabled_ = true; + g_signal_connect(widget, "button-press-event", + G_CALLBACK(OnButtonPressEventThunk), this); + } + } + } + + CHROMEGTK_CALLBACK_1(PasswordField, gboolean, OnButtonPressEvent, + GdkEventButton*); + private: + bool context_menu_disabled_; + DISALLOW_COPY_AND_ASSIGN(PasswordField); }; +gboolean PasswordField::OnButtonPressEvent(GtkWidget* widget, + GdkEventButton* event) { + // Eat button 2/3 and alt + any button to disable context menu. + return event->state & GDK_MOD1_MASK || + event->button == 2 || + event->button == 3; +} + } // namespace using views::GridLayout; diff --git a/chrome/browser/chromeos/login/screen_locker.cc b/chrome/browser/chromeos/login/screen_locker.cc index b602bab..23a539a 100644 --- a/chrome/browser/chromeos/login/screen_locker.cc +++ b/chrome/browser/chromeos/login/screen_locker.cc @@ -796,12 +796,6 @@ void ScreenLocker::Init() { GTK_WINDOW(lock_window_->GetNativeView())); g_object_unref(window_group); - // Don't let X draw default background, which was causing flash on - // resume. - gdk_window_set_back_pixmap(lock_window_->GetNativeView()->window, - NULL, false); - gdk_window_set_back_pixmap(lock_widget_->GetNativeView()->window, - NULL, false); lock_window->set_toplevel_focus_widget(lock_widget_->window_contents()); // Create the SystemKeyEventListener so it can listen for system keyboard |
