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 b3f6d43ad20c6f61957fb0dcda16fb95f3ca71a5..f35e3bb8899e64674003ed9cfd8ebd9407e2ce38 100644 |
--- a/chrome/browser/ui/panels/panel_browser_view.cc |
+++ b/chrome/browser/ui/panels/panel_browser_view.cc |
@@ -428,14 +428,10 @@ PanelBrowserFrameView* PanelBrowserView::GetFrameView() const { |
} |
bool PanelBrowserView::OnTitlebarMousePressed(const gfx::Point& location) { |
- // |location| is in the view's coordinate system. Convert it to the screen |
- // coordinate system. |
- mouse_location_ = location; |
- views::View::ConvertPointToScreen(this, &mouse_location_); |
- |
mouse_pressed_ = true; |
mouse_pressed_time_ = base::TimeTicks::Now(); |
mouse_dragging_state_ = NO_DRAGGING; |
+ mouse_location_ = location; |
return true; |
} |
@@ -447,11 +443,7 @@ bool PanelBrowserView::OnTitlebarMouseDragged(const gfx::Point& location) { |
return true; |
gfx::Point last_mouse_location = mouse_location_; |
- |
- // |location| is in the view's coordinate system. Convert it to the screen |
- // coordinate system. |
mouse_location_ = 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(); |
@@ -462,11 +454,11 @@ bool PanelBrowserView::OnTitlebarMouseDragged(const gfx::Point& location) { |
old_focused_view_ = GetFocusManager()->GetFocusedView(); |
GetFocusManager()->SetFocusedView(GetFrameView()); |
- panel_->manager()->StartDragging(panel_.get()); |
+ panel_->manager()->StartDragging(panel_.get(), last_mouse_location); |
mouse_dragging_state_ = DRAGGING_STARTED; |
} |
if (mouse_dragging_state_ == DRAGGING_STARTED) |
- panel_->manager()->Drag(delta_x, delta_y); |
+ panel_->manager()->Drag(mouse_location_); |
return true; |
} |
@@ -528,21 +520,29 @@ bool PanelBrowserView::EndDragging(bool cancelled) { |
} |
void PanelBrowserView::SetPanelAppIconVisibility(bool visible) { |
+ // The panel should not show app icon in the desktop bar if it is in overflow. |
#if defined(OS_WIN) && !defined(USE_AURA) |
gfx::NativeWindow native_window = GetNativeHandle(); |
- ::ShowWindow(native_window, SW_HIDE); |
int style = ::GetWindowLong(native_window, GWL_EXSTYLE); |
+ int new_style = style; |
if (visible) |
- style &= (~WS_EX_TOOLWINDOW); |
+ new_style &= (~WS_EX_TOOLWINDOW); |
else |
- style |= WS_EX_TOOLWINDOW; |
- ::SetWindowLong(native_window, GWL_EXSTYLE, style); |
- ::ShowWindow(native_window, SW_SHOWNA); |
+ new_style |= WS_EX_TOOLWINDOW; |
+ if (style != new_style) { |
+ ::ShowWindow(native_window, SW_HIDE); |
+ ::SetWindowLong(native_window, GWL_EXSTYLE, new_style); |
+ ::ShowWindow(native_window, SW_SHOWNA); |
+ } |
#else |
NOTIMPLEMENTED(); |
#endif |
} |
+void PanelBrowserView::SetPanelAlwaysOnTop(bool on_top) { |
+ GetWidget()->SetAlwaysOnTop(on_top); |
+} |
+ |
// NativePanelTesting implementation. |
class NativePanelTestingWin : public NativePanelTesting { |
public: |
@@ -550,9 +550,9 @@ class NativePanelTestingWin : public NativePanelTesting { |
private: |
virtual void PressLeftMouseButtonTitlebar( |
- const gfx::Point& point) OVERRIDE; |
+ const gfx::Point& mouse_location) OVERRIDE; |
virtual void ReleaseMouseButtonTitlebar() OVERRIDE; |
- virtual void DragTitlebar(int delta_x, int delta_y) OVERRIDE; |
+ virtual void DragTitlebar(const gfx::Point& mouse_location) OVERRIDE; |
virtual void CancelDragTitlebar() OVERRIDE; |
virtual void FinishDragTitlebar() OVERRIDE; |
virtual bool VerifyDrawingAttention() const OVERRIDE; |
@@ -577,23 +577,16 @@ NativePanelTestingWin::NativePanelTestingWin( |
} |
void NativePanelTestingWin::PressLeftMouseButtonTitlebar( |
- const gfx::Point& point) { |
- panel_browser_view_->OnTitlebarMousePressed(point); |
+ const gfx::Point& mouse_location) { |
+ panel_browser_view_->OnTitlebarMousePressed(mouse_location); |
} |
void NativePanelTestingWin::ReleaseMouseButtonTitlebar() { |
panel_browser_view_->OnTitlebarMouseReleased(); |
} |
-void NativePanelTestingWin::DragTitlebar(int delta_x, int delta_y) { |
- gfx::Point new_mouse_location = panel_browser_view_->mouse_location_; |
- new_mouse_location.Offset(delta_x, delta_y); |
- |
- // Convert from the screen coordinate system to the view's coordinate system |
- // since OnTitlebarMouseDragged takes the point in the latter. |
- views::View::ConvertPointToView(NULL, panel_browser_view_, |
- &new_mouse_location); |
- panel_browser_view_->OnTitlebarMouseDragged(new_mouse_location); |
+void NativePanelTestingWin::DragTitlebar(const gfx::Point& mouse_location) { |
+ panel_browser_view_->OnTitlebarMouseDragged(mouse_location); |
} |
void NativePanelTestingWin::CancelDragTitlebar() { |