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

Unified Diff: chrome/browser/dock_info.cc

Issue 5544002: Move a bunch more browser stuff around.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years 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/dock_info.h ('k') | chrome/browser/dock_info_gtk.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/dock_info.cc
===================================================================
--- chrome/browser/dock_info.cc (revision 68008)
+++ chrome/browser/dock_info.cc (working copy)
@@ -1,268 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/dock_info.h"
-
-#if defined(TOOLKIT_VIEWS)
-#include "chrome/browser/views/tabs/tab.h"
-#else
-#include "chrome/browser/gtk/tabs/tab_gtk.h"
-#endif
-
-namespace {
-
-// Distance in pixels between the hotspot and when the hint should be shown.
-const int kHotSpotDeltaX = 120;
-const int kHotSpotDeltaY = 120;
-
-// Size of the popup window.
-const int kPopupWidth = 70;
-const int kPopupHeight = 70;
-
-} // namespace
-
-// static
-DockInfo::Factory* DockInfo::factory_ = NULL;
-
-// static
-bool DockInfo::IsCloseToPoint(const gfx::Point& screen_loc,
- int x,
- int y,
- bool* in_enable_area) {
- int delta_x = abs(x - screen_loc.x());
- int delta_y = abs(y - screen_loc.y());
- *in_enable_area = (delta_x < kPopupWidth / 2 && delta_y < kPopupHeight / 2);
- return *in_enable_area || (delta_x < kHotSpotDeltaX &&
- delta_y < kHotSpotDeltaY);
-}
-
-// static
-bool DockInfo::IsCloseToMonitorPoint(const gfx::Point& screen_loc,
- int x,
- int y,
- DockInfo::Type type,
- bool* in_enable_area) {
- // Because the monitor relative positions are aligned with the edge of the
- // monitor these need to be handled differently.
- int delta_x = abs(x - screen_loc.x());
- int delta_y = abs(y - screen_loc.y());
-
- int enable_delta_x = kPopupWidth / 2;
- int enable_delta_y = kPopupHeight / 2;
- int hot_spot_delta_x = kHotSpotDeltaX;
- int hot_spot_delta_y = kHotSpotDeltaY;
-
- switch (type) {
- case DockInfo::LEFT_HALF:
- case DockInfo::RIGHT_HALF:
- enable_delta_x += enable_delta_x;
- hot_spot_delta_x += hot_spot_delta_x;
- break;
-
-
- case DockInfo::MAXIMIZE: {
- // Make the maximize height smaller than the tab height to avoid showing
- // the dock indicator when close to maximized browser.
-#if defined(TOOLKIT_VIEWS)
- hot_spot_delta_y = Tab::GetMinimumUnselectedSize().height() - 1;
-#else
- hot_spot_delta_y = TabGtk::GetMinimumUnselectedSize().height() - 1;
-#endif
- enable_delta_y = hot_spot_delta_y / 2;
- break;
- }
- case DockInfo::BOTTOM_HALF:
- enable_delta_y += enable_delta_y;
- hot_spot_delta_y += hot_spot_delta_y;
- break;
-
- default:
- NOTREACHED();
- return false;
- }
- *in_enable_area = (delta_x < enable_delta_x && delta_y < enable_delta_y);
- bool result = (*in_enable_area || (delta_x < hot_spot_delta_x &&
- delta_y < hot_spot_delta_y));
- if (type != DockInfo::MAXIMIZE)
- return result;
-
- // Make the hot spot/enable spot for maximized windows the whole top of the
- // monitor.
- int max_delta_y = abs(screen_loc.y() - y);
- *in_enable_area = (*in_enable_area || (max_delta_y < enable_delta_y));
- return *in_enable_area || (max_delta_y < hot_spot_delta_y);
-}
-
-// static
-int DockInfo::popup_width() {
- return kPopupWidth;
-}
-
-// static
-int DockInfo::popup_height() {
- return kPopupHeight;
-}
-
-bool DockInfo::IsValidForPoint(const gfx::Point& screen_point) {
- if (type_ == NONE)
- return false;
-
- if (window_) {
- return IsCloseToPoint(screen_point, hot_spot_.x(), hot_spot_.y(),
- &in_enable_area_);
- }
-
- return monitor_bounds_.Contains(screen_point) &&
- IsCloseToMonitorPoint(screen_point, hot_spot_.x(),
- hot_spot_.y(), type_, &in_enable_area_);
-}
-
-bool DockInfo::GetNewWindowBounds(gfx::Rect* new_window_bounds,
- bool* maximize_new_window) const {
- if (type_ == NONE || !in_enable_area_)
- return false;
-
- gfx::Rect window_bounds;
- if (window_ && !GetWindowBounds(&window_bounds))
- return false;
-
- int half_m_width = (monitor_bounds_.right() - monitor_bounds_.x()) / 2;
- int half_m_height = (monitor_bounds_.bottom() - monitor_bounds_.y()) / 2;
-
- *maximize_new_window = false;
-
- switch (type_) {
- case LEFT_OF_WINDOW:
- new_window_bounds->SetRect(monitor_bounds_.x(), window_bounds.y(),
- half_m_width, window_bounds.height());
- break;
-
- case RIGHT_OF_WINDOW:
- new_window_bounds->SetRect(monitor_bounds_.x() + half_m_width,
- window_bounds.y(), half_m_width,
- window_bounds.height());
- break;
-
- case TOP_OF_WINDOW:
- new_window_bounds->SetRect(window_bounds.x(), monitor_bounds_.y(),
- window_bounds.width(), half_m_height);
- break;
-
- case BOTTOM_OF_WINDOW:
- new_window_bounds->SetRect(window_bounds.x(),
- monitor_bounds_.y() + half_m_height,
- window_bounds.width(), half_m_height);
- break;
-
- case LEFT_HALF:
- new_window_bounds->SetRect(monitor_bounds_.x(), monitor_bounds_.y(),
- half_m_width, monitor_bounds_.height());
- break;
-
- case RIGHT_HALF:
- new_window_bounds->SetRect(monitor_bounds_.right() - half_m_width,
- monitor_bounds_.y(), half_m_width, monitor_bounds_.height());
- break;
-
- case BOTTOM_HALF:
- new_window_bounds->SetRect(monitor_bounds_.x(),
- monitor_bounds_.y() + half_m_height,
- monitor_bounds_.width(), half_m_height);
- break;
-
- case MAXIMIZE:
- *maximize_new_window = true;
- break;
-
- default:
- NOTREACHED();
- }
- return true;
-}
-
-void DockInfo::AdjustOtherWindowBounds() const {
- if (!in_enable_area_)
- return;
-
- gfx::Rect window_bounds;
- if (!window_ || !GetWindowBounds(&window_bounds))
- return;
-
- gfx::Rect other_window_bounds;
- int half_m_width = (monitor_bounds_.right() - monitor_bounds_.x()) / 2;
- int half_m_height = (monitor_bounds_.bottom() - monitor_bounds_.y()) / 2;
-
- switch (type_) {
- case LEFT_OF_WINDOW:
- other_window_bounds.SetRect(monitor_bounds_.x() + half_m_width,
- window_bounds.y(), half_m_width,
- window_bounds.height());
- break;
-
- case RIGHT_OF_WINDOW:
- other_window_bounds.SetRect(monitor_bounds_.x(), window_bounds.y(),
- half_m_width, window_bounds.height());
- break;
-
- case TOP_OF_WINDOW:
- other_window_bounds.SetRect(window_bounds.x(),
- monitor_bounds_.y() + half_m_height,
- window_bounds.width(), half_m_height);
- break;
-
- case BOTTOM_OF_WINDOW:
- other_window_bounds.SetRect(window_bounds.x(), monitor_bounds_.y(),
- window_bounds.width(), half_m_height);
- break;
-
- default:
- return;
- }
-
- SizeOtherWindowTo(other_window_bounds);
-}
-
-gfx::Rect DockInfo::GetPopupRect() const {
- int x = hot_spot_.x() - popup_width() / 2;
- int y = hot_spot_.y() - popup_height() / 2;
- switch (type_) {
- case LEFT_OF_WINDOW:
- case RIGHT_OF_WINDOW:
- case TOP_OF_WINDOW:
- case BOTTOM_OF_WINDOW: {
- // Constrain the popup to the monitor's bounds.
- gfx::Rect ideal_bounds(x, y, popup_width(), popup_height());
- ideal_bounds = ideal_bounds.AdjustToFit(monitor_bounds_);
- return ideal_bounds;
- }
- case DockInfo::MAXIMIZE:
- y += popup_height() / 2;
- break;
- case DockInfo::LEFT_HALF:
- x += popup_width() / 2;
- break;
- case DockInfo::RIGHT_HALF:
- x -= popup_width() / 2;
- break;
- case DockInfo::BOTTOM_HALF:
- y -= popup_height() / 2;
- break;
-
- default:
- NOTREACHED();
- }
- return gfx::Rect(x, y, popup_width(), popup_height());
-}
-
-bool DockInfo::CheckMonitorPoint(const gfx::Point& screen_loc,
- int x,
- int y,
- Type type) {
- if (IsCloseToMonitorPoint(screen_loc, x, y, type, &in_enable_area_)) {
- hot_spot_.SetPoint(x, y);
- type_ = type;
- return true;
- }
- return false;
-}
« no previous file with comments | « chrome/browser/dock_info.h ('k') | chrome/browser/dock_info_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698