Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(323)

Unified Diff: chrome/browser/ui/panels/panel_browser_view.cc

Issue 10187021: Add key modifier to minimize/restore button click to minimize/restore-all panels for Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/panels/panel_browser_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/panels/panel_browser_view.cc
diff --git a/chrome/browser/ui/panels/panel_browser_view.cc b/chrome/browser/ui/panels/panel_browser_view.cc
index bc154189aa452b03c6cb5d315201d559f1849d79..6a973c209856fb2659fc831c06c60aae89872dc9 100644
--- a/chrome/browser/ui/panels/panel_browser_view.cc
+++ b/chrome/browser/ui/panels/panel_browser_view.cc
@@ -19,14 +19,11 @@
#include "content/public/browser/notification_service.h"
#include "grit/chromium_strings.h"
#include "ui/base/l10n/l10n_util.h"
+#include "ui/views/events/event.h"
#include "ui/views/controls/button/image_button.h"
#include "ui/views/controls/label.h"
#include "ui/views/widget/widget.h"
-#if defined(OS_WIN) && !defined(USE_AURA)
-#include "base/win/win_util.h" // for IsCtrlPressed()
-#endif
-
using content::WebContents;
NativePanel* Panel::CreateNativePanel(Browser* browser, Panel* panel,
@@ -440,19 +437,27 @@ PanelBrowserFrameView* PanelBrowserView::GetFrameView() const {
return static_cast<PanelBrowserFrameView*>(frame()->GetFrameView());
}
-bool PanelBrowserView::OnTitlebarMousePressed(
- const gfx::Point& mouse_location) {
+bool PanelBrowserView::OnTitlebarMousePressed(const views::MouseEvent& event) {
+ // |event.location| is in the view's coordinate system. Convert it to the
+ // screen coordinate system.
+ gfx::Point mouse_location = event.location();
+ views::View::ConvertPointToScreen(this, &mouse_location);
jianli 2012/04/27 22:32:10 |event| is for PanelBrowserFrameView, not PanelBro
jennb 2012/04/27 23:27:54 Changed to pass modifier around rather than event.
+
mouse_pressed_ = true;
mouse_dragging_state_ = NO_DRAGGING;
last_mouse_location_ = mouse_location;
return true;
}
-bool PanelBrowserView::OnTitlebarMouseDragged(
- const gfx::Point& mouse_location) {
+bool PanelBrowserView::OnTitlebarMouseDragged(const views::MouseEvent& event) {
if (!mouse_pressed_)
return false;
+ // |event.location| is in the view's coordinate system. Convert it to the
+ // screen coordinate system.
+ gfx::Point mouse_location = event.location();
+ views::View::ConvertPointToScreen(this, &mouse_location);
+
int delta_x = mouse_location.x() - last_mouse_location_.x();
int delta_y = mouse_location.y() - last_mouse_location_.y();
if (mouse_dragging_state_ == NO_DRAGGING &&
@@ -475,7 +480,7 @@ bool PanelBrowserView::OnTitlebarMouseDragged(
return true;
}
-bool PanelBrowserView::OnTitlebarMouseReleased() {
+bool PanelBrowserView::OnTitlebarMouseReleased(const views::MouseEvent& event) {
if (mouse_dragging_state_ != NO_DRAGGING) {
// Ensure dragging a minimized panel does not leave it activated.
// Windows activates a panel on mouse-down, regardless of our attempts
@@ -500,16 +505,8 @@ bool PanelBrowserView::OnTitlebarMouseReleased() {
return true;
}
- panel::ClickModifier click_modifier = panel::NO_MODIFIER;
-#if defined(OS_WIN) && !defined(USE_AURA)
- if (base::win::IsCtrlPressed()) {
- click_modifier = panel::APPLY_TO_ALL;
- }
-#else
- // Proceed without modifier.
-#endif
-
- panel_->OnTitlebarClicked(click_modifier);
+ panel_->OnTitlebarClicked(
+ event.IsControlDown() ? panel::APPLY_TO_ALL : panel::NO_MODIFIER);
return true;
}
@@ -530,6 +527,16 @@ bool PanelBrowserView::EndDragging(bool cancelled) {
return true;
}
+void PanelBrowserView::MinimizeButtonPressed(const views::Event& event) {
+ panel_->OnMinimizeButtonClicked(
+ event.IsControlDown() ? panel::APPLY_TO_ALL : panel::NO_MODIFIER);
+}
+
+void PanelBrowserView::RestoreButtonPressed(const views::Event& event) {
+ panel_->OnRestoreButtonClicked(
+ event.IsControlDown() ? panel::APPLY_TO_ALL : panel::NO_MODIFIER);
+}
+
void PanelBrowserView::SetPanelAppIconVisibility(bool visible) {
#if defined(OS_WIN) && !defined(USE_AURA)
gfx::NativeWindow native_window = GetNativeHandle();
@@ -615,48 +622,35 @@ NativePanelTestingWin::NativePanelTestingWin(
void NativePanelTestingWin::PressLeftMouseButtonTitlebar(
const gfx::Point& mouse_location, panel::ClickModifier modifier) {
-#if defined(OS_WIN) && !defined(USE_AURA)
- if (modifier == panel::APPLY_TO_ALL) {
- BYTE keyState[256];
- ::GetKeyboardState(keyState);
- BYTE newKeyState[256];
- memcpy(newKeyState, keyState, sizeof(keyState));
- newKeyState[VK_CONTROL] = 0x80;
- ::SetKeyboardState(newKeyState);
- panel_browser_view_->OnTitlebarMousePressed(mouse_location);
- ::SetKeyboardState(keyState); // restore to original
- return;
- }
-#else
- // Cannot test with modifier. Proceed without it.
-#endif
-
- panel_browser_view_->OnTitlebarMousePressed(mouse_location);
+ int flags = ui::EF_LEFT_MOUSE_BUTTON;
+ if (modifier == panel::APPLY_TO_ALL)
+ flags |= ui::EF_CONTROL_DOWN;
+ views::MouseEvent event(ui::ET_MOUSE_PRESSED,
+ mouse_location.x(),
+ mouse_location.y(),
+ flags);
+ panel_browser_view_->OnTitlebarMousePressed(event);
}
void NativePanelTestingWin::ReleaseMouseButtonTitlebar(
panel::ClickModifier modifier) {
-#if defined(OS_WIN) && !defined(USE_AURA)
- if (modifier == panel::APPLY_TO_ALL) {
- BYTE keyState[256];
- ::GetKeyboardState(keyState);
- BYTE newKeyState[256];
- memcpy(newKeyState, keyState, sizeof(keyState));
- newKeyState[VK_CONTROL] = 0x80;
- ::SetKeyboardState(newKeyState);
- panel_browser_view_->OnTitlebarMouseReleased();
- ::SetKeyboardState(keyState); // restore to original
- return;
- }
-#else
- // Cannot test with modifier. Proceed without it.
-#endif
-
- panel_browser_view_->OnTitlebarMouseReleased();
+ int flags = ui::EF_RIGHT_MOUSE_BUTTON;
+ if (modifier == panel::APPLY_TO_ALL)
+ flags |= ui::EF_CONTROL_DOWN;
+ // Mouse location does not matter on button release.
+ views::MouseEvent event(ui::ET_MOUSE_RELEASED,
+ 0,
+ 0,
+ flags);
+ panel_browser_view_->OnTitlebarMouseReleased(event);
}
void NativePanelTestingWin::DragTitlebar(const gfx::Point& mouse_location) {
- panel_browser_view_->OnTitlebarMouseDragged(mouse_location);
+ views::MouseEvent event(ui::ET_MOUSE_PRESSED,
+ mouse_location.x(),
+ mouse_location.y(),
+ ui::EF_LEFT_MOUSE_BUTTON);
+ panel_browser_view_->OnTitlebarMouseDragged(event);
}
void NativePanelTestingWin::CancelDragTitlebar() {
@@ -664,7 +658,7 @@ void NativePanelTestingWin::CancelDragTitlebar() {
}
void NativePanelTestingWin::FinishDragTitlebar() {
- panel_browser_view_->OnTitlebarMouseReleased();
+ ReleaseMouseButtonTitlebar(panel::NO_MODIFIER);
}
bool NativePanelTestingWin::VerifyDrawingAttention() const {
« no previous file with comments | « chrome/browser/ui/panels/panel_browser_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698