summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-11 01:32:25 +0000
committeroshima@google.com <oshima@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-11 01:32:25 +0000
commita3e3d1f3365ec95b47035b11a8d191606100377a (patch)
treede23dc04cec98dee2d88297918209c9c548b753f
parent2c73263a78261b1aa7283412df634ee810835d38 (diff)
downloadchromium_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.cc32
-rw-r--r--chrome/browser/chromeos/login/screen_locker.cc6
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