bookmark_drop_info.cc revision c407dc5cd9bdc5668497f21b26b09d988ab439de
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/event.h" 13#include "views/view_constants.h" 14 15BookmarkDropInfo::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 25void BookmarkDropInfo::Update(const views::DropTargetEvent& event) { 26 source_operations_ = event.GetSourceOperations(); 27 is_control_down_ = event.IsControlDown(); 28 last_y_ = event.y(); 29 30#if defined(OS_WIN) 31 RECT client_rect; 32 GetClientRect(wnd_, &client_rect); 33 bool scroll_down = (last_y_ >= client_rect.bottom - views::kAutoscrollSize); 34#else 35 // TODO(port): Get the dimensions of the appropriate view/widget. 36 NOTIMPLEMENTED(); 37 bool scroll_down = false; 38#endif 39 scroll_up_ = (last_y_ <= top_margin_ + views::kAutoscrollSize); 40 if (scroll_up_ || scroll_down) { 41 if (!scroll_timer_.IsRunning()) { 42 scroll_timer_.Start( 43 base::TimeDelta::FromMilliseconds(views::kAutoscrollRowTimerMS), 44 this, 45 &BookmarkDropInfo::Scroll); 46 } 47 } else { 48 scroll_timer_.Stop(); 49 } 50} 51 52void BookmarkDropInfo::Scroll() { 53#if defined(OS_WIN) 54 SendMessage(wnd_, WM_VSCROLL, scroll_up_ ? SB_LINEUP : SB_LINEDOWN, NULL); 55 Scrolled(); 56#else 57 // TODO(port): Scroll the appropriate view/widget. 58 NOTIMPLEMENTED(); 59#endif 60} 61