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

Side by Side Diff: chrome/browser/ui/views/frame/opaque_browser_frame_view.cc

Issue 111723012: Linux Aura: Added --use-system-title-bar flag. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Formatting. Created 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/ui/views/frame/opaque_browser_frame_view.h" 5 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 new_avatar_button()->GetMirroredBounds().Contains(point))) 214 new_avatar_button()->GetMirroredBounds().Contains(point)))
215 return HTCLIENT; 215 return HTCLIENT;
216 216
217 int frame_component = frame()->client_view()->NonClientHitTest(point); 217 int frame_component = frame()->client_view()->NonClientHitTest(point);
218 218
219 // See if we're in the sysmenu region. We still have to check the tabstrip 219 // See if we're in the sysmenu region. We still have to check the tabstrip
220 // first so that clicks in a tab don't get treated as sysmenu clicks. 220 // first so that clicks in a tab don't get treated as sysmenu clicks.
221 gfx::Rect sysmenu_rect(IconBounds()); 221 gfx::Rect sysmenu_rect(IconBounds());
222 // In maximized mode we extend the rect to the screen corner to take advantage 222 // In maximized mode we extend the rect to the screen corner to take advantage
223 // of Fitts' Law. 223 // of Fitts' Law.
224 if (frame()->IsMaximized()) 224 if (layout_->IsTitleBarCondensed())
225 sysmenu_rect.SetRect(0, 0, sysmenu_rect.right(), sysmenu_rect.bottom()); 225 sysmenu_rect.SetRect(0, 0, sysmenu_rect.right(), sysmenu_rect.bottom());
226 sysmenu_rect.set_x(GetMirroredXForRect(sysmenu_rect)); 226 sysmenu_rect.set_x(GetMirroredXForRect(sysmenu_rect));
227 if (sysmenu_rect.Contains(point)) 227 if (sysmenu_rect.Contains(point))
228 return (frame_component == HTCLIENT) ? HTCLIENT : HTSYSMENU; 228 return (frame_component == HTCLIENT) ? HTCLIENT : HTSYSMENU;
229 229
230 if (frame_component != HTNOWHERE) 230 if (frame_component != HTNOWHERE)
231 return frame_component; 231 return frame_component;
232 232
233 // Then see if the point is within any of the window controls. 233 // Then see if the point is within any of the window controls.
234 if (close_button_ && close_button_->visible() && 234 if (close_button_ && close_button_->visible() &&
(...skipping 18 matching lines...) Expand all
253 NonClientBorderThickness(), kResizeAreaCornerSize, kResizeAreaCornerSize, 253 NonClientBorderThickness(), kResizeAreaCornerSize, kResizeAreaCornerSize,
254 delegate->CanResize()); 254 delegate->CanResize());
255 // Fall back to the caption if no other component matches. 255 // Fall back to the caption if no other component matches.
256 return (window_component == HTNOWHERE) ? HTCAPTION : window_component; 256 return (window_component == HTNOWHERE) ? HTCAPTION : window_component;
257 } 257 }
258 258
259 void OpaqueBrowserFrameView::GetWindowMask(const gfx::Size& size, 259 void OpaqueBrowserFrameView::GetWindowMask(const gfx::Size& size,
260 gfx::Path* window_mask) { 260 gfx::Path* window_mask) {
261 DCHECK(window_mask); 261 DCHECK(window_mask);
262 262
263 if (frame()->IsMaximized() || frame()->IsFullscreen()) 263 if (layout_->IsTitleBarCondensed() || frame()->IsFullscreen())
264 return; 264 return;
265 265
266 views::GetDefaultWindowMask(size, window_mask); 266 views::GetDefaultWindowMask(size, window_mask);
267 } 267 }
268 268
269 void OpaqueBrowserFrameView::ResetWindowControls() { 269 void OpaqueBrowserFrameView::ResetWindowControls() {
270 if (!OpaqueBrowserFrameViewLayout::ShouldAddDefaultCaptionButtons()) 270 if (!OpaqueBrowserFrameViewLayout::ShouldAddDefaultCaptionButtons())
271 return; 271 return;
272 restore_button_->SetState(views::CustomButton::STATE_NORMAL); 272 restore_button_->SetState(views::CustomButton::STATE_NORMAL);
273 minimize_button_->SetState(views::CustomButton::STATE_NORMAL); 273 minimize_button_->SetState(views::CustomButton::STATE_NORMAL);
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 default: 404 default:
405 NOTREACHED() << "Got a notification we didn't register for!"; 405 NOTREACHED() << "Got a notification we didn't register for!";
406 break; 406 break;
407 } 407 }
408 } 408 }
409 409
410 /////////////////////////////////////////////////////////////////////////////// 410 ///////////////////////////////////////////////////////////////////////////////
411 // OpaqueBrowserFrameView, OpaqueBrowserFrameViewLayoutDelegate implementation: 411 // OpaqueBrowserFrameView, OpaqueBrowserFrameViewLayoutDelegate implementation:
412 412
413 bool OpaqueBrowserFrameView::ShouldShowWindowIcon() const { 413 bool OpaqueBrowserFrameView::ShouldShowWindowIcon() const {
414 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
415 // If using the system title bar, we do not want to show a second title bar
416 // inside the client area.
417 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kUseSystemTitleBar))
418 return false;
419 #endif
420
414 views::WidgetDelegate* delegate = frame()->widget_delegate(); 421 views::WidgetDelegate* delegate = frame()->widget_delegate();
415 return delegate && delegate->ShouldShowWindowIcon(); 422 return delegate && delegate->ShouldShowWindowIcon();
416 } 423 }
417 424
418 bool OpaqueBrowserFrameView::ShouldShowWindowTitle() const { 425 bool OpaqueBrowserFrameView::ShouldShowWindowTitle() const {
426 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
427 // If using the system title bar, we do not want to show a second title bar
428 // inside the client area.
429 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kUseSystemTitleBar))
430 return false;
431 #endif
432
419 // |delegate| may be NULL if called from callback of InputMethodChanged while 433 // |delegate| may be NULL if called from callback of InputMethodChanged while
420 // a window is being destroyed. 434 // a window is being destroyed.
421 // See more discussion at http://crosbug.com/8958 435 // See more discussion at http://crosbug.com/8958
422 views::WidgetDelegate* delegate = frame()->widget_delegate(); 436 views::WidgetDelegate* delegate = frame()->widget_delegate();
423 return delegate && delegate->ShouldShowWindowTitle(); 437 return delegate && delegate->ShouldShowWindowTitle();
424 } 438 }
425 439
426 base::string16 OpaqueBrowserFrameView::GetWindowTitle() const { 440 base::string16 OpaqueBrowserFrameView::GetWindowTitle() const {
427 return frame()->widget_delegate()->GetWindowTitle(); 441 return frame()->widget_delegate()->GetWindowTitle();
428 } 442 }
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 return s; 513 return s;
500 } 514 }
501 515
502 /////////////////////////////////////////////////////////////////////////////// 516 ///////////////////////////////////////////////////////////////////////////////
503 // OpaqueBrowserFrameView, views::View overrides: 517 // OpaqueBrowserFrameView, views::View overrides:
504 518
505 void OpaqueBrowserFrameView::OnPaint(gfx::Canvas* canvas) { 519 void OpaqueBrowserFrameView::OnPaint(gfx::Canvas* canvas) {
506 if (frame()->IsFullscreen()) 520 if (frame()->IsFullscreen())
507 return; // Nothing is visible, so don't bother to paint. 521 return; // Nothing is visible, so don't bother to paint.
508 522
509 if (frame()->IsMaximized()) 523 if (layout_->IsTitleBarCondensed())
510 PaintMaximizedFrameBorder(canvas); 524 PaintMaximizedFrameBorder(canvas);
511 else 525 else
512 PaintRestoredFrameBorder(canvas); 526 PaintRestoredFrameBorder(canvas);
513 527
514 // The window icon and title are painted by their respective views. 528 // The window icon and title are painted by their respective views.
515 /* TODO(pkasting): If this window is active, we should also draw a drop 529 /* TODO(pkasting): If this window is active, we should also draw a drop
516 * shadow on the title. This is tricky, because we don't want to hardcode a 530 * shadow on the title. This is tricky, because we don't want to hardcode a
517 * shadow color (since we want to work with various themes), but we can't 531 * shadow color (since we want to work with various themes), but we can't
518 * alpha-blend either (since the Windows text APIs don't really do this). 532 * alpha-blend either (since the Windows text APIs don't really do this).
519 * So we'd need to sample the background color at the right location and 533 * So we'd need to sample the background color at the right location and
520 * synthesize a good shadow color. */ 534 * synthesize a good shadow color. */
521 535
522 if (browser_view()->IsToolbarVisible()) 536 if (browser_view()->IsToolbarVisible())
523 PaintToolbarBackground(canvas); 537 PaintToolbarBackground(canvas);
524 if (!frame()->IsMaximized()) 538 if (!layout_->IsTitleBarCondensed())
525 PaintRestoredClientEdge(canvas); 539 PaintRestoredClientEdge(canvas);
526 } 540 }
527 541
528 /////////////////////////////////////////////////////////////////////////////// 542 ///////////////////////////////////////////////////////////////////////////////
529 // OpaqueBrowserFrameView, private: 543 // OpaqueBrowserFrameView, private:
530 544
531 views::ImageButton* OpaqueBrowserFrameView::InitWindowCaptionButton( 545 views::ImageButton* OpaqueBrowserFrameView::InitWindowCaptionButton(
532 int normal_image_id, 546 int normal_image_id,
533 int hot_image_id, 547 int hot_image_id,
534 int pushed_image_id, 548 int pushed_image_id,
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 892
879 int OpaqueBrowserFrameView::GetTopAreaHeight() const { 893 int OpaqueBrowserFrameView::GetTopAreaHeight() const {
880 gfx::ImageSkia* frame_image = GetFrameImage(); 894 gfx::ImageSkia* frame_image = GetFrameImage();
881 int top_area_height = frame_image->height(); 895 int top_area_height = frame_image->height();
882 if (browser_view()->IsTabStripVisible()) { 896 if (browser_view()->IsTabStripVisible()) {
883 top_area_height = std::max(top_area_height, 897 top_area_height = std::max(top_area_height,
884 GetBoundsForTabStrip(browser_view()->tabstrip()).bottom()); 898 GetBoundsForTabStrip(browser_view()->tabstrip()).bottom());
885 } 899 }
886 return top_area_height; 900 return top_area_height;
887 } 901 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698