• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "chrome/browser/bookmarks/bookmark_drop_info.h"
6 
7 #if defined(OS_WIN)
8 #include <windows.h>
9 #endif
10 
11 #include "base/basictypes.h"
12 #include "views/events/event.h"
13 #include "views/view_constants.h"
14 
BookmarkDropInfo(gfx::NativeWindow wnd,int top_margin)15 BookmarkDropInfo::BookmarkDropInfo(gfx::NativeWindow wnd, int top_margin)
16     : source_operations_(0),
17       is_control_down_(false),
18       last_y_(0),
19       drop_operation_(0),
20       wnd_(wnd),
21       top_margin_(top_margin),
22       scroll_up_(false) {
23 }
24 
~BookmarkDropInfo()25 BookmarkDropInfo::~BookmarkDropInfo() {
26 }
27 
Update(const views::DropTargetEvent & event)28 void BookmarkDropInfo::Update(const views::DropTargetEvent& event) {
29   source_operations_ = event.source_operations();
30   is_control_down_ = event.IsControlDown();
31   last_y_ = event.y();
32 
33 #if defined(OS_WIN)
34   RECT client_rect;
35   GetClientRect(wnd_, &client_rect);
36   bool scroll_down = (last_y_ >= client_rect.bottom - views::kAutoscrollSize);
37 #else
38   // TODO(port): Get the dimensions of the appropriate view/widget.
39   NOTIMPLEMENTED();
40   bool scroll_down = false;
41 #endif
42   scroll_up_ = (last_y_ <= top_margin_ + views::kAutoscrollSize);
43   if (scroll_up_ || scroll_down) {
44     if (!scroll_timer_.IsRunning()) {
45       scroll_timer_.Start(
46           base::TimeDelta::FromMilliseconds(views::kAutoscrollRowTimerMS),
47           this,
48           &BookmarkDropInfo::Scroll);
49     }
50   } else {
51     scroll_timer_.Stop();
52   }
53 }
54 
Scroll()55 void BookmarkDropInfo::Scroll() {
56 #if defined(OS_WIN)
57   SendMessage(wnd_, WM_VSCROLL, scroll_up_ ? SB_LINEUP : SB_LINEDOWN, NULL);
58   Scrolled();
59 #else
60   // TODO(port): Scroll the appropriate view/widget.
61   NOTIMPLEMENTED();
62 #endif
63 }
64