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() {} | 129 ResizeCorner(const BrowserWindow* parent) |
| 130 : parent_(parent) { |
| 131 } |
| 132 |
130 virtual void Paint(ChromeCanvas* canvas) { | 133 virtual void Paint(ChromeCanvas* canvas) { |
| 134 if (parent_ && (parent_->IsMaximized() || parent_->IsFullscreen())) |
| 135 return; |
| 136 |
131 SkBitmap * bitmap = ResourceBundle::GetSharedInstance().GetBitmapNamed( | 137 SkBitmap * bitmap = ResourceBundle::GetSharedInstance().GetBitmapNamed( |
132 IDR_TEXTAREA_RESIZER); | 138 IDR_TEXTAREA_RESIZER); |
133 bitmap->buildMipMap(false); | 139 bitmap->buildMipMap(false); |
134 bool rtl_dir = (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT); | 140 bool rtl_dir = (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT); |
135 if (rtl_dir) { | 141 if (rtl_dir) { |
136 canvas->TranslateInt(width(), 0); | 142 canvas->TranslateInt(width(), 0); |
137 canvas->ScaleInt(-1, 1); | 143 canvas->ScaleInt(-1, 1); |
138 canvas->save(); | 144 canvas->save(); |
139 } | 145 } |
140 canvas->DrawBitmapInt(*bitmap, width() - bitmap->width(), | 146 canvas->DrawBitmapInt(*bitmap, width() - bitmap->width(), |
141 height() - bitmap->height()); | 147 height() - bitmap->height()); |
142 if (rtl_dir) | 148 if (rtl_dir) |
143 canvas->restore(); | 149 canvas->restore(); |
144 } | 150 } |
145 | 151 |
146 static gfx::Size GetSize() { | 152 static gfx::Size GetSize() { |
147 return gfx::Size(views::NativeScrollBar::GetVerticalScrollBarWidth(), | 153 return gfx::Size(views::NativeScrollBar::GetVerticalScrollBarWidth(), |
148 views::NativeScrollBar::GetHorizontalScrollBarHeight()); | 154 views::NativeScrollBar::GetHorizontalScrollBarHeight()); |
149 } | 155 } |
150 | 156 |
151 virtual gfx::Size GetPreferredSize() { | 157 virtual gfx::Size GetPreferredSize() { |
| 158 if (parent_ && (parent_->IsMaximized() || parent_->IsFullscreen())) |
| 159 return gfx::Size(); |
152 return GetSize(); | 160 return GetSize(); |
153 } | 161 } |
154 | 162 |
155 virtual void Layout() { | 163 virtual void Layout() { |
156 views::View* parent_view = GetParent(); | 164 views::View* parent_view = GetParent(); |
157 if (parent_view) { | 165 if (parent_view) { |
158 gfx::Size ps = GetPreferredSize(); | 166 gfx::Size ps = GetPreferredSize(); |
159 // No need to handle Right to left text direction here, | 167 // No need to handle Right to left text direction here, |
160 // our parent must take care of it for us... | 168 // our parent must take care of it for us... |
161 SetBounds(parent_view->width() - ps.width(), | 169 SetBounds(parent_view->width() - ps.width(), |
162 parent_view->height() - ps.height(), ps.width(), ps.height()); | 170 parent_view->height() - ps.height(), ps.width(), ps.height()); |
163 } | 171 } |
164 } | 172 } |
165 | 173 |
166 private: | 174 private: |
| 175 const BrowserWindow* parent_; |
167 DISALLOW_COPY_AND_ASSIGN(ResizeCorner); | 176 DISALLOW_COPY_AND_ASSIGN(ResizeCorner); |
168 }; | 177 }; |
169 | 178 |
170 | 179 |
171 /////////////////////////////////////////////////////////////////////////////// | 180 /////////////////////////////////////////////////////////////////////////////// |
172 // BrowserView, public: | 181 // BrowserView, public: |
173 | 182 |
174 // static | 183 // static |
175 void BrowserView::SetShowState(int state) { | 184 void BrowserView::SetShowState(int state) { |
176 explicit_show_state = state; | 185 explicit_show_state = state; |
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
703 browser_.reset(); | 712 browser_.reset(); |
704 } | 713 } |
705 | 714 |
706 bool BrowserView::IsBookmarkBarVisible() const { | 715 bool BrowserView::IsBookmarkBarVisible() const { |
707 return SupportsWindowFeature(FEATURE_BOOKMARKBAR) && | 716 return SupportsWindowFeature(FEATURE_BOOKMARKBAR) && |
708 bookmark_bar_view_.get() && | 717 bookmark_bar_view_.get() && |
709 (bookmark_bar_view_->GetPreferredSize().height() != 0); | 718 (bookmark_bar_view_->GetPreferredSize().height() != 0); |
710 } | 719 } |
711 | 720 |
712 gfx::Rect BrowserView::GetRootWindowResizerRect() const { | 721 gfx::Rect BrowserView::GetRootWindowResizerRect() const { |
713 // There is no resize corner when we are maximized | 722 // There is no resize corner when we are maximized or full screen |
714 if (IsMaximized()) | 723 if (IsMaximized() || IsFullscreen()) |
715 return gfx::Rect(); | 724 return gfx::Rect(); |
716 | 725 |
717 // We don't specify a resize corner size if we have a bottom shelf either. | 726 // We don't specify a resize corner size if we have a bottom shelf either. |
718 // This is because we take care of drawing the resize corner on top of that | 727 // This is because we take care of drawing the resize corner on top of that |
719 // shelf, so we don't want others to do it for us in this case. | 728 // shelf, so we don't want others to do it for us in this case. |
720 // Currently, the only visible bottom shelf is the download shelf. | 729 // Currently, the only visible bottom shelf is the download shelf. |
721 // Other tests should be added here if we add more bottom shelves. | 730 // Other tests should be added here if we add more bottom shelves. |
722 TabContents* current_tab = browser_->GetSelectedTabContents(); | 731 TabContents* current_tab = browser_->GetSelectedTabContents(); |
723 if (current_tab && current_tab->IsDownloadShelfVisible()) { | 732 if (current_tab && current_tab->IsDownloadShelfVisible()) { |
724 DownloadShelfView* download_shelf = current_tab->GetDownloadShelfView(); | 733 DownloadShelfView* download_shelf = current_tab->GetDownloadShelfView(); |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1098 return true; | 1107 return true; |
1099 } | 1108 } |
1100 | 1109 |
1101 int BrowserView::NonClientHitTest(const gfx::Point& point) { | 1110 int BrowserView::NonClientHitTest(const gfx::Point& point) { |
1102 // Since the TabStrip only renders in some parts of the top of the window, | 1111 // Since the TabStrip only renders in some parts of the top of the window, |
1103 // the un-obscured area is considered to be part of the non-client caption | 1112 // the un-obscured area is considered to be part of the non-client caption |
1104 // area of the window. So we need to treat hit-tests in these regions as | 1113 // area of the window. So we need to treat hit-tests in these regions as |
1105 // hit-tests of the titlebar. | 1114 // hit-tests of the titlebar. |
1106 | 1115 |
1107 // There is not resize corner when we are maximised | 1116 // There is not resize corner when we are maximised |
1108 if (!IsMaximized()) { | 1117 if (!IsMaximized() && !IsFullscreen()) { |
1109 CRect client_rect; | 1118 CRect client_rect; |
1110 ::GetClientRect(frame_->GetWindow()->GetHWND(), &client_rect); | 1119 ::GetClientRect(frame_->GetWindow()->GetHWND(), &client_rect); |
1111 gfx::Size resize_corner_size = ResizeCorner::GetSize(); | 1120 gfx::Size resize_corner_size = ResizeCorner::GetSize(); |
1112 gfx::Rect resize_corner_rect(client_rect.right - resize_corner_size.width(), | 1121 gfx::Rect resize_corner_rect(client_rect.right - resize_corner_size.width(), |
1113 client_rect.bottom - resize_corner_size.height(), | 1122 client_rect.bottom - resize_corner_size.height(), |
1114 resize_corner_size.width(), resize_corner_size.height()); | 1123 resize_corner_size.width(), resize_corner_size.height()); |
1115 bool rtl_dir = (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT); | 1124 bool rtl_dir = (l10n_util::GetTextDirection() == l10n_util::RIGHT_TO_LEFT); |
1116 if (rtl_dir) | 1125 if (rtl_dir) |
1117 resize_corner_rect.set_x(0); | 1126 resize_corner_rect.set_x(0); |
1118 if (resize_corner_rect.Contains(point)) { | 1127 if (resize_corner_rect.Contains(point)) { |
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1432 // InfoBarContainer, DownloadShelfView and TabContents and this | 1441 // InfoBarContainer, DownloadShelfView and TabContents and this |
1433 // view is sorted out. | 1442 // view is sorted out. |
1434 return true; | 1443 return true; |
1435 } | 1444 } |
1436 | 1445 |
1437 bool BrowserView::MaybeShowDownloadShelf(TabContents* contents) { | 1446 bool BrowserView::MaybeShowDownloadShelf(TabContents* contents) { |
1438 views::View* new_shelf = NULL; | 1447 views::View* new_shelf = NULL; |
1439 if (contents && contents->IsDownloadShelfVisible()) { | 1448 if (contents && contents->IsDownloadShelfVisible()) { |
1440 new_shelf = contents->GetDownloadShelfView(); | 1449 new_shelf = contents->GetDownloadShelfView(); |
1441 if (new_shelf != active_download_shelf_) | 1450 if (new_shelf != active_download_shelf_) |
1442 new_shelf->AddChildView(new ResizeCorner()); | 1451 new_shelf->AddChildView(new ResizeCorner(this)); |
1443 } | 1452 } |
1444 return UpdateChildViewAndLayout(new_shelf, &active_download_shelf_); | 1453 return UpdateChildViewAndLayout(new_shelf, &active_download_shelf_); |
1445 } | 1454 } |
1446 | 1455 |
1447 void BrowserView::UpdateUIForContents(TabContents* contents) { | 1456 void BrowserView::UpdateUIForContents(TabContents* contents) { |
1448 bool needs_layout = MaybeShowBookmarkBar(contents); | 1457 bool needs_layout = MaybeShowBookmarkBar(contents); |
1449 needs_layout |= MaybeShowInfoBar(contents); | 1458 needs_layout |= MaybeShowInfoBar(contents); |
1450 needs_layout |= MaybeShowDownloadShelf(contents); | 1459 needs_layout |= MaybeShowDownloadShelf(contents); |
1451 if (needs_layout) | 1460 if (needs_layout) |
1452 Layout(); | 1461 Layout(); |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1638 | 1647 |
1639 // static | 1648 // static |
1640 void BrowserView::InitClass() { | 1649 void BrowserView::InitClass() { |
1641 static bool initialized = false; | 1650 static bool initialized = false; |
1642 if (!initialized) { | 1651 if (!initialized) { |
1643 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 1652 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
1644 default_favicon_ = *rb.GetBitmapNamed(IDR_DEFAULT_FAVICON); | 1653 default_favicon_ = *rb.GetBitmapNamed(IDR_DEFAULT_FAVICON); |
1645 initialized = true; | 1654 initialized = true; |
1646 } | 1655 } |
1647 } | 1656 } |
OLD | NEW |