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

Side by Side Diff: chrome/browser/ui/panels/panel_browser_window_gtk.cc

Issue 10262025: Make bottom corners of panels not rounded on GTK. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch to land Created 8 years, 7 months 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
« no previous file with comments | « chrome/browser/ui/panels/panel_browser_window_gtk.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/panels/panel_browser_window_gtk.h" 5 #include "chrome/browser/ui/panels/panel_browser_window_gtk.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "chrome/browser/ui/browser_list.h" 8 #include "chrome/browser/ui/browser_list.h"
9 #include "chrome/browser/ui/gtk/browser_titlebar.h" 9 #include "chrome/browser/ui/gtk/browser_titlebar.h"
10 #include "chrome/browser/ui/gtk/custom_button.h" 10 #include "chrome/browser/ui/gtk/custom_button.h"
11 #include "chrome/browser/ui/gtk/nine_box.h"
11 #include "chrome/browser/ui/gtk/theme_service_gtk.h" 12 #include "chrome/browser/ui/gtk/theme_service_gtk.h"
12 #include "chrome/browser/ui/panels/panel.h" 13 #include "chrome/browser/ui/panels/panel.h"
13 #include "chrome/browser/ui/panels/panel_bounds_animation.h" 14 #include "chrome/browser/ui/panels/panel_bounds_animation.h"
14 #include "chrome/browser/ui/panels/panel_browser_titlebar_gtk.h" 15 #include "chrome/browser/ui/panels/panel_browser_titlebar_gtk.h"
15 #include "chrome/browser/ui/panels/panel_drag_gtk.h" 16 #include "chrome/browser/ui/panels/panel_drag_gtk.h"
16 #include "chrome/browser/ui/panels/panel_manager.h" 17 #include "chrome/browser/ui/panels/panel_manager.h"
17 #include "chrome/browser/ui/panels/panel_strip.h" 18 #include "chrome/browser/ui/panels/panel_strip.h"
18 #include "chrome/common/chrome_notification_types.h" 19 #include "chrome/common/chrome_notification_types.h"
19 #include "content/public/browser/notification_service.h" 20 #include "content/public/browser/notification_service.h"
20 #include "grit/theme_resources_standard.h" 21 #include "grit/theme_resources_standard.h"
22 #include "grit/ui_resources.h"
21 #include "third_party/skia/include/core/SkShader.h" 23 #include "third_party/skia/include/core/SkShader.h"
22 #include "ui/gfx/canvas.h" 24 #include "ui/gfx/canvas.h"
23 #include "ui/gfx/image/cairo_cached_surface.h" 25 #include "ui/gfx/image/cairo_cached_surface.h"
24 #include "ui/gfx/image/image.h" 26 #include "ui/gfx/image/image.h"
25 #include "ui/gfx/skia_util.h" 27 #include "ui/gfx/skia_util.h"
26 28
27 using content::WebContents; 29 using content::WebContents;
28 30
29 namespace { 31 namespace {
30 32
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 return FALSE; 148 return FALSE;
147 if (*edge == GDK_WINDOW_EDGE_SOUTH_WEST) 149 if (*edge == GDK_WINDOW_EDGE_SOUTH_WEST)
148 *edge = GDK_WINDOW_EDGE_WEST; 150 *edge = GDK_WINDOW_EDGE_WEST;
149 else if (*edge == GDK_WINDOW_EDGE_SOUTH_EAST) 151 else if (*edge == GDK_WINDOW_EDGE_SOUTH_EAST)
150 *edge = GDK_WINDOW_EDGE_EAST; 152 *edge = GDK_WINDOW_EDGE_EAST;
151 } 153 }
152 154
153 return TRUE; 155 return TRUE;
154 } 156 }
155 157
158 GdkRegion* PanelBrowserWindowGtk::GetWindowShape(int width, int height) const {
159 // For panels, only top corners are rounded. The bottom corners are not
160 // rounded because panels are aligned to the bottom edge of the screen.
161 GdkRectangle top_top_rect = { 3, 0, width - 6, 1 };
162 GdkRectangle top_mid_rect = { 1, 1, width - 2, 2 };
163 GdkRectangle mid_rect = { 0, 3, width, height - 3 };
164 GdkRegion* mask = gdk_region_rectangle(&top_top_rect);
165 gdk_region_union_with_rect(mask, &top_mid_rect);
166 gdk_region_union_with_rect(mask, &mid_rect);
167 return mask;
168 }
169
170 void PanelBrowserWindowGtk::DrawCustomFrameBorder(GtkWidget* widget) {
171 static NineBox* custom_frame_border = NULL;
172 if (!custom_frame_border) {
173 custom_frame_border = new NineBox(IDR_WINDOW_TOP_LEFT_CORNER,
174 IDR_WINDOW_TOP_CENTER,
175 IDR_WINDOW_TOP_RIGHT_CORNER,
176 IDR_WINDOW_LEFT_SIDE,
177 0,
178 IDR_WINDOW_RIGHT_SIDE,
179 IDR_PANEL_BOTTOM_LEFT_CORNER,
180 IDR_WINDOW_BOTTOM_CENTER,
181 IDR_PANEL_BOTTOM_RIGHT_CORNER);
182 }
183 custom_frame_border->RenderToWidget(widget);
184 }
185
156 void PanelBrowserWindowGtk::EnsureDragHelperCreated() { 186 void PanelBrowserWindowGtk::EnsureDragHelperCreated() {
157 if (drag_helper_.get()) 187 if (drag_helper_.get())
158 return; 188 return;
159 189
160 drag_helper_.reset(new PanelDragGtk(panel_.get())); 190 drag_helper_.reset(new PanelDragGtk(panel_.get()));
161 gtk_box_pack_end(GTK_BOX(window_vbox_), drag_helper_->widget(), 191 gtk_box_pack_end(GTK_BOX(window_vbox_), drag_helper_->widget(),
162 FALSE, FALSE, 0); 192 FALSE, FALSE, 0);
163 } 193 }
164 194
165 bool PanelBrowserWindowGtk::HandleTitleBarLeftMousePress( 195 bool PanelBrowserWindowGtk::HandleTitleBarLeftMousePress(
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 break; 710 break;
681 case RESTORE_BUTTON: 711 case RESTORE_BUTTON:
682 button = titlebar->unminimize_button(); 712 button = titlebar->unminimize_button();
683 break; 713 break;
684 default: 714 default:
685 NOTREACHED(); 715 NOTREACHED();
686 return false; 716 return false;
687 } 717 }
688 return gtk_widget_get_visible(button->widget()); 718 return gtk_widget_get_visible(button->widget());
689 } 719 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/panel_browser_window_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698