OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/command_line.h" | 5 #include "base/command_line.h" |
6 | 6 |
7 #include "chrome/browser/views/frame/browser_view.h" | 7 #include "chrome/browser/views/frame/browser_view.h" |
8 | 8 |
9 #include "base/file_version_info.h" | 9 #include "base/file_version_info.h" |
10 #include "base/time.h" | 10 #include "base/time.h" |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 { false, IDC_RELOAD, IDS_APP_MENU_RELOAD }, | 119 { false, IDC_RELOAD, IDS_APP_MENU_RELOAD }, |
120 { false, IDC_FORWARD, IDS_CONTENT_CONTEXT_FORWARD }, | 120 { false, IDC_FORWARD, IDS_CONTENT_CONTEXT_FORWARD }, |
121 { false, IDC_BACK, IDS_CONTENT_CONTEXT_BACK } | 121 { false, IDC_BACK, IDS_CONTENT_CONTEXT_BACK } |
122 }; | 122 }; |
123 | 123 |
124 /////////////////////////////////////////////////////////////////////////////// | 124 /////////////////////////////////////////////////////////////////////////////// |
125 // ResizeCorner, private: | 125 // ResizeCorner, private: |
126 | 126 |
127 class ResizeCorner : public views::View { | 127 class ResizeCorner : public views::View { |
128 public: | 128 public: |
129 ResizeCorner(const BrowserWindow* parent) | 129 explicit ResizeCorner(const BrowserView* parent) |
130 : parent_(parent) { | 130 : parent_(parent) { |
131 } | 131 } |
132 | 132 |
133 virtual void Paint(ChromeCanvas* canvas) { | 133 virtual void Paint(ChromeCanvas* canvas) { |
134 if (parent_ && (parent_->IsMaximized() || parent_->IsFullscreen())) | 134 if (parent_ && !parent_->CanCurrentlyResize()) |
135 return; | 135 return; |
136 | 136 |
137 SkBitmap * bitmap = ResourceBundle::GetSharedInstance().GetBitmapNamed( | 137 SkBitmap* bitmap = ResourceBundle::GetSharedInstance().GetBitmapNamed( |
138 IDR_TEXTAREA_RESIZER); | 138 IDR_TEXTAREA_RESIZER); |
139 bitmap->buildMipMap(false); | 139 bitmap->buildMipMap(false); |
140 bool rtl_dir = (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT); | 140 bool rtl_dir = (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT); |
141 if (rtl_dir) { | 141 if (rtl_dir) { |
142 canvas->TranslateInt(width(), 0); | 142 canvas->TranslateInt(width(), 0); |
143 canvas->ScaleInt(-1, 1); | 143 canvas->ScaleInt(-1, 1); |
144 canvas->save(); | 144 canvas->save(); |
145 } | 145 } |
146 canvas->DrawBitmapInt(*bitmap, width() - bitmap->width(), | 146 canvas->DrawBitmapInt(*bitmap, width() - bitmap->width(), |
147 height() - bitmap->height()); | 147 height() - bitmap->height()); |
148 if (rtl_dir) | 148 if (rtl_dir) |
149 canvas->restore(); | 149 canvas->restore(); |
150 } | 150 } |
151 | 151 |
152 static gfx::Size GetSize() { | 152 static gfx::Size GetSize() { |
153 return gfx::Size(views::NativeScrollBar::GetVerticalScrollBarWidth(), | 153 return gfx::Size(views::NativeScrollBar::GetVerticalScrollBarWidth(), |
154 views::NativeScrollBar::GetHorizontalScrollBarHeight()); | 154 views::NativeScrollBar::GetHorizontalScrollBarHeight()); |
155 } | 155 } |
156 | 156 |
157 virtual gfx::Size GetPreferredSize() { | 157 virtual gfx::Size GetPreferredSize() { |
158 if (parent_ && (parent_->IsMaximized() || parent_->IsFullscreen())) | 158 return (parent_ && !parent_->CanCurrentlyResize()) ? |
159 return gfx::Size(); | 159 gfx::Size() : GetSize(); |
160 return GetSize(); | |
161 } | 160 } |
162 | 161 |
163 virtual void Layout() { | 162 virtual void Layout() { |
164 views::View* parent_view = GetParent(); | 163 views::View* parent_view = GetParent(); |
165 if (parent_view) { | 164 if (parent_view) { |
166 gfx::Size ps = GetPreferredSize(); | 165 gfx::Size ps = GetPreferredSize(); |
167 // No need to handle Right to left text direction here, | 166 // No need to handle Right to left text direction here, |
168 // our parent must take care of it for us... | 167 // our parent must take care of it for us... |
169 SetBounds(parent_view->width() - ps.width(), | 168 SetBounds(parent_view->width() - ps.width(), |
170 parent_view->height() - ps.height(), ps.width(), ps.height()); | 169 parent_view->height() - ps.height(), ps.width(), ps.height()); |
171 } | 170 } |
172 } | 171 } |
173 | 172 |
174 private: | 173 private: |
175 const BrowserWindow* parent_; | 174 const BrowserView* parent_; |
176 DISALLOW_COPY_AND_ASSIGN(ResizeCorner); | 175 DISALLOW_COPY_AND_ASSIGN(ResizeCorner); |
177 }; | 176 }; |
178 | 177 |
179 | 178 |
180 /////////////////////////////////////////////////////////////////////////////// | 179 /////////////////////////////////////////////////////////////////////////////// |
181 // BrowserView, public: | 180 // BrowserView, public: |
182 | 181 |
183 // static | 182 // static |
184 void BrowserView::SetShowState(int state) { | 183 void BrowserView::SetShowState(int state) { |
185 explicit_show_state = state; | 184 explicit_show_state = state; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 if (toolbar_->GetLocationBarView()) | 252 if (toolbar_->GetLocationBarView()) |
254 toolbar_->GetLocationBarView()->location_entry()->ClosePopup(); | 253 toolbar_->GetLocationBarView()->location_entry()->ClosePopup(); |
255 } | 254 } |
256 | 255 |
257 void BrowserView::WindowMoveOrResizeStarted() { | 256 void BrowserView::WindowMoveOrResizeStarted() { |
258 TabContents* tab_contents = GetSelectedTabContents(); | 257 TabContents* tab_contents = GetSelectedTabContents(); |
259 if (tab_contents && tab_contents->AsWebContents()) | 258 if (tab_contents && tab_contents->AsWebContents()) |
260 tab_contents->AsWebContents()->WindowMoveOrResizeStarted(); | 259 tab_contents->AsWebContents()->WindowMoveOrResizeStarted(); |
261 } | 260 } |
262 | 261 |
| 262 bool BrowserView::CanCurrentlyResize() const { |
| 263 return !IsMaximized() && !IsFullscreen(); |
| 264 } |
| 265 |
263 gfx::Rect BrowserView::GetToolbarBounds() const { | 266 gfx::Rect BrowserView::GetToolbarBounds() const { |
264 return toolbar_->bounds(); | 267 return toolbar_->bounds(); |
265 } | 268 } |
266 | 269 |
267 gfx::Rect BrowserView::GetClientAreaBounds() const { | 270 gfx::Rect BrowserView::GetClientAreaBounds() const { |
268 gfx::Rect container_bounds = contents_container_->bounds(); | 271 gfx::Rect container_bounds = contents_container_->bounds(); |
269 gfx::Point container_origin = container_bounds.origin(); | 272 gfx::Point container_origin = container_bounds.origin(); |
270 ConvertPointToView(this, GetParent(), &container_origin); | 273 ConvertPointToView(this, GetParent(), &container_origin); |
271 container_bounds.set_origin(container_origin); | 274 container_bounds.set_origin(container_origin); |
272 return container_bounds; | 275 return container_bounds; |
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
706 browser_.reset(); | 709 browser_.reset(); |
707 } | 710 } |
708 | 711 |
709 bool BrowserView::IsBookmarkBarVisible() const { | 712 bool BrowserView::IsBookmarkBarVisible() const { |
710 return SupportsWindowFeature(FEATURE_BOOKMARKBAR) && | 713 return SupportsWindowFeature(FEATURE_BOOKMARKBAR) && |
711 bookmark_bar_view_.get() && | 714 bookmark_bar_view_.get() && |
712 (bookmark_bar_view_->GetPreferredSize().height() != 0); | 715 (bookmark_bar_view_->GetPreferredSize().height() != 0); |
713 } | 716 } |
714 | 717 |
715 gfx::Rect BrowserView::GetRootWindowResizerRect() const { | 718 gfx::Rect BrowserView::GetRootWindowResizerRect() const { |
716 // There is no resize corner when we are maximized or full screen | 719 if (!CanCurrentlyResize()) |
717 if (IsMaximized() || IsFullscreen()) | |
718 return gfx::Rect(); | 720 return gfx::Rect(); |
719 | 721 |
720 // We don't specify a resize corner size if we have a bottom shelf either. | 722 // We don't specify a resize corner size if we have a bottom shelf either. |
721 // This is because we take care of drawing the resize corner on top of that | 723 // This is because we take care of drawing the resize corner on top of that |
722 // shelf, so we don't want others to do it for us in this case. | 724 // shelf, so we don't want others to do it for us in this case. |
723 // Currently, the only visible bottom shelf is the download shelf. | 725 // Currently, the only visible bottom shelf is the download shelf. |
724 // Other tests should be added here if we add more bottom shelves. | 726 // Other tests should be added here if we add more bottom shelves. |
725 TabContents* current_tab = browser_->GetSelectedTabContents(); | 727 TabContents* current_tab = browser_->GetSelectedTabContents(); |
726 if (current_tab && current_tab->IsDownloadShelfVisible()) { | 728 if (current_tab && current_tab->IsDownloadShelfVisible()) { |
727 DownloadShelfView* download_shelf = current_tab->GetDownloadShelfView(); | 729 DownloadShelfView* download_shelf = current_tab->GetDownloadShelfView(); |
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1099 NotificationService::NoDetails()); | 1101 NotificationService::NoDetails()); |
1100 return true; | 1102 return true; |
1101 } | 1103 } |
1102 | 1104 |
1103 int BrowserView::NonClientHitTest(const gfx::Point& point) { | 1105 int BrowserView::NonClientHitTest(const gfx::Point& point) { |
1104 // Since the TabStrip only renders in some parts of the top of the window, | 1106 // Since the TabStrip only renders in some parts of the top of the window, |
1105 // the un-obscured area is considered to be part of the non-client caption | 1107 // the un-obscured area is considered to be part of the non-client caption |
1106 // area of the window. So we need to treat hit-tests in these regions as | 1108 // area of the window. So we need to treat hit-tests in these regions as |
1107 // hit-tests of the titlebar. | 1109 // hit-tests of the titlebar. |
1108 | 1110 |
1109 // There is not resize corner when we are maximised | 1111 if (CanCurrentlyResize()) { |
1110 if (!IsMaximized() && !IsFullscreen()) { | |
1111 CRect client_rect; | 1112 CRect client_rect; |
1112 ::GetClientRect(frame_->GetWindow()->GetHWND(), &client_rect); | 1113 ::GetClientRect(frame_->GetWindow()->GetHWND(), &client_rect); |
1113 gfx::Size resize_corner_size = ResizeCorner::GetSize(); | 1114 gfx::Size resize_corner_size = ResizeCorner::GetSize(); |
1114 gfx::Rect resize_corner_rect(client_rect.right - resize_corner_size.width(), | 1115 gfx::Rect resize_corner_rect(client_rect.right - resize_corner_size.width(), |
1115 client_rect.bottom - resize_corner_size.height(), | 1116 client_rect.bottom - resize_corner_size.height(), |
1116 resize_corner_size.width(), resize_corner_size.height()); | 1117 resize_corner_size.width(), resize_corner_size.height()); |
1117 bool rtl_dir = (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT); | 1118 bool rtl_dir = (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT); |
1118 if (rtl_dir) | 1119 if (rtl_dir) |
1119 resize_corner_rect.set_x(0); | 1120 resize_corner_rect.set_x(0); |
1120 if (resize_corner_rect.Contains(point)) { | 1121 if (resize_corner_rect.Contains(point)) { |
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1663 | 1664 |
1664 // static | 1665 // static |
1665 void BrowserView::InitClass() { | 1666 void BrowserView::InitClass() { |
1666 static bool initialized = false; | 1667 static bool initialized = false; |
1667 if (!initialized) { | 1668 if (!initialized) { |
1668 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 1669 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
1669 default_favicon_ = *rb.GetBitmapNamed(IDR_DEFAULT_FAVICON); | 1670 default_favicon_ = *rb.GetBitmapNamed(IDR_DEFAULT_FAVICON); |
1670 initialized = true; | 1671 initialized = true; |
1671 } | 1672 } |
1672 } | 1673 } |
OLD | NEW |