OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/gtk/gtk_util.h" | 5 #include "chrome/browser/ui/gtk/gtk_util.h" |
6 | 6 |
7 #include <cairo/cairo.h> | 7 #include <cairo/cairo.h> |
8 #include <gdk/gdkx.h> | 8 #include <gdk/gdkx.h> |
9 #include <gtk/gtk.h> | 9 #include <gtk/gtk.h> |
10 | 10 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 #include "ui/gfx/gtk_util.h" | 45 #include "ui/gfx/gtk_util.h" |
46 #include "ui/gfx/image/image.h" | 46 #include "ui/gfx/image/image.h" |
47 | 47 |
48 #if defined(OS_CHROMEOS) | 48 #if defined(OS_CHROMEOS) |
49 #include "chrome/browser/chromeos/frame/browser_view.h" | 49 #include "chrome/browser/chromeos/frame/browser_view.h" |
50 #include "chrome/browser/chromeos/native_dialog_window.h" | 50 #include "chrome/browser/chromeos/native_dialog_window.h" |
51 #else | 51 #else |
52 #include "chrome/browser/ui/gtk/browser_window_gtk.h" | 52 #include "chrome/browser/ui/gtk/browser_window_gtk.h" |
53 #endif | 53 #endif |
54 | 54 |
55 using WebKit::WebDragOperationsMask; | |
56 using WebKit::WebDragOperation; | |
57 using WebKit::WebDragOperationNone; | |
58 using WebKit::WebDragOperationCopy; | |
59 using WebKit::WebDragOperationLink; | |
60 using WebKit::WebDragOperationMove; | |
61 | |
62 namespace { | 55 namespace { |
63 | 56 |
64 #if defined(GOOGLE_CHROME_BUILD) | 57 #if defined(GOOGLE_CHROME_BUILD) |
65 static const char* kIconName = "google-chrome"; | 58 static const char* kIconName = "google-chrome"; |
66 #else | 59 #else |
67 static const char* kIconName = "chromium-browser"; | 60 static const char* kIconName = "chromium-browser"; |
68 #endif | 61 #endif |
69 | 62 |
70 const char kBoldLabelMarkup[] = "<span weight='bold'>%s</span>"; | 63 const char kBoldLabelMarkup[] = "<span weight='bold'>%s</span>"; |
71 | 64 |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
501 GtkWidget* centering_vbox = gtk_vbox_new(FALSE, 0); | 494 GtkWidget* centering_vbox = gtk_vbox_new(FALSE, 0); |
502 gtk_box_pack_start(GTK_BOX(centering_vbox), widget, TRUE, FALSE, 0); | 495 gtk_box_pack_start(GTK_BOX(centering_vbox), widget, TRUE, FALSE, 0); |
503 if (pack_at_end) | 496 if (pack_at_end) |
504 gtk_box_pack_end(GTK_BOX(hbox), centering_vbox, FALSE, FALSE, padding); | 497 gtk_box_pack_end(GTK_BOX(hbox), centering_vbox, FALSE, FALSE, padding); |
505 else | 498 else |
506 gtk_box_pack_start(GTK_BOX(hbox), centering_vbox, FALSE, FALSE, padding); | 499 gtk_box_pack_start(GTK_BOX(hbox), centering_vbox, FALSE, FALSE, padding); |
507 | 500 |
508 return centering_vbox; | 501 return centering_vbox; |
509 } | 502 } |
510 | 503 |
511 bool IsScreenComposited() { | |
512 GdkScreen* screen = gdk_screen_get_default(); | |
513 return gdk_screen_is_composited(screen) == TRUE; | |
514 } | |
515 | |
516 void EnumerateTopLevelWindows(ui::EnumerateWindowsDelegate* delegate) { | 504 void EnumerateTopLevelWindows(ui::EnumerateWindowsDelegate* delegate) { |
517 std::vector<XID> stack; | 505 std::vector<XID> stack; |
518 if (!ui::GetXWindowStack(ui::GetX11RootWindow(), &stack)) { | 506 if (!ui::GetXWindowStack(ui::GetX11RootWindow(), &stack)) { |
519 // Window Manager doesn't support _NET_CLIENT_LIST_STACKING, so fall back | 507 // Window Manager doesn't support _NET_CLIENT_LIST_STACKING, so fall back |
520 // to old school enumeration of all X windows. Some WMs parent 'top-level' | 508 // to old school enumeration of all X windows. Some WMs parent 'top-level' |
521 // windows in unnamed actual top-level windows (ion WM), so extend the | 509 // windows in unnamed actual top-level windows (ion WM), so extend the |
522 // search depth to all children of top-level windows. | 510 // search depth to all children of top-level windows. |
523 const int kMaxSearchDepth = 1; | 511 const int kMaxSearchDepth = 1; |
524 ui::EnumerateAllWindows(delegate, kMaxSearchDepth); | 512 ui::EnumerateAllWindows(delegate, kMaxSearchDepth); |
525 return; | 513 return; |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 prefs->subpixel_rendering = RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VBGR; | 701 prefs->subpixel_rendering = RENDERER_PREFERENCES_SUBPIXEL_RENDERING_VBGR; |
714 } | 702 } |
715 } | 703 } |
716 | 704 |
717 if (hint_style) | 705 if (hint_style) |
718 g_free(hint_style); | 706 g_free(hint_style); |
719 if (rgba_style) | 707 if (rgba_style) |
720 g_free(rgba_style); | 708 g_free(rgba_style); |
721 } | 709 } |
722 | 710 |
723 gfx::Point ScreenPoint(GtkWidget* widget) { | |
724 int x, y; | |
725 gdk_display_get_pointer(gtk_widget_get_display(widget), NULL, &x, &y, | |
726 NULL); | |
727 return gfx::Point(x, y); | |
728 } | |
729 | |
730 gfx::Point ClientPoint(GtkWidget* widget) { | |
731 int x, y; | |
732 gtk_widget_get_pointer(widget, &x, &y); | |
733 return gfx::Point(x, y); | |
734 } | |
735 | |
736 GdkPoint MakeBidiGdkPoint(gint x, gint y, gint width, bool ltr) { | 711 GdkPoint MakeBidiGdkPoint(gint x, gint y, gint width, bool ltr) { |
737 GdkPoint point = {ltr ? x : width - x, y}; | 712 GdkPoint point = {ltr ? x : width - x, y}; |
738 return point; | 713 return point; |
739 } | 714 } |
740 | 715 |
741 std::string BuildTooltipTitleFor(string16 title, const GURL& url) { | 716 std::string BuildTooltipTitleFor(string16 title, const GURL& url) { |
742 const std::string& url_str = url.possibly_invalid_spec(); | 717 const std::string& url_str = url.possibly_invalid_spec(); |
743 const std::string& title_str = UTF16ToUTF8(title); | 718 const std::string& title_str = UTF16ToUTF8(title); |
744 | 719 |
745 std::string truncated_url = UTF16ToUTF8(ui::TruncateString( | 720 std::string truncated_url = UTF16ToUTF8(ui::TruncateString( |
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1176 | 1151 |
1177 void InitLabelSizeRequestAndEllipsizeMode(GtkWidget* label) { | 1152 void InitLabelSizeRequestAndEllipsizeMode(GtkWidget* label) { |
1178 GtkRequisition size; | 1153 GtkRequisition size; |
1179 gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_NONE); | 1154 gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_NONE); |
1180 gtk_widget_set_size_request(label, -1, -1); | 1155 gtk_widget_set_size_request(label, -1, -1); |
1181 gtk_widget_size_request(label, &size); | 1156 gtk_widget_size_request(label, &size); |
1182 gtk_widget_set_size_request(label, size.width, size.height); | 1157 gtk_widget_set_size_request(label, size.width, size.height); |
1183 gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); | 1158 gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END); |
1184 } | 1159 } |
1185 | 1160 |
1186 GdkDragAction WebDragOpToGdkDragAction(WebDragOperationsMask op) { | |
1187 GdkDragAction action = static_cast<GdkDragAction>(0); | |
1188 if (op & WebDragOperationCopy) | |
1189 action = static_cast<GdkDragAction>(action | GDK_ACTION_COPY); | |
1190 if (op & WebDragOperationLink) | |
1191 action = static_cast<GdkDragAction>(action | GDK_ACTION_LINK); | |
1192 if (op & WebDragOperationMove) | |
1193 action = static_cast<GdkDragAction>(action | GDK_ACTION_MOVE); | |
1194 return action; | |
1195 } | |
1196 | |
1197 WebDragOperationsMask GdkDragActionToWebDragOp(GdkDragAction action) { | |
1198 WebDragOperationsMask op = WebDragOperationNone; | |
1199 if (action & GDK_ACTION_COPY) | |
1200 op = static_cast<WebDragOperationsMask>(op | WebDragOperationCopy); | |
1201 if (action & GDK_ACTION_LINK) | |
1202 op = static_cast<WebDragOperationsMask>(op | WebDragOperationLink); | |
1203 if (action & GDK_ACTION_MOVE) | |
1204 op = static_cast<WebDragOperationsMask>(op | WebDragOperationMove); | |
1205 return op; | |
1206 } | |
1207 | |
1208 void ApplyMessageDialogQuirks(GtkWidget* dialog) { | 1161 void ApplyMessageDialogQuirks(GtkWidget* dialog) { |
1209 if (gtk_window_get_modal(GTK_WINDOW(dialog))) { | 1162 if (gtk_window_get_modal(GTK_WINDOW(dialog))) { |
1210 // Work around a KDE 3 window manager bug. | 1163 // Work around a KDE 3 window manager bug. |
1211 scoped_ptr<base::Environment> env(base::Environment::Create()); | 1164 scoped_ptr<base::Environment> env(base::Environment::Create()); |
1212 if (base::nix::DESKTOP_ENVIRONMENT_KDE3 == | 1165 if (base::nix::DESKTOP_ENVIRONMENT_KDE3 == |
1213 base::nix::GetDesktopEnvironment(env.get())) | 1166 base::nix::GetDesktopEnvironment(env.get())) |
1214 gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); | 1167 gtk_window_set_skip_taskbar_hint(GTK_WINDOW(dialog), FALSE); |
1215 } | 1168 } |
1216 } | 1169 } |
1217 | 1170 |
(...skipping 25 matching lines...) Expand all Loading... |
1243 | 1196 |
1244 void DoCopy(BrowserWindow* window) { | 1197 void DoCopy(BrowserWindow* window) { |
1245 DoCutCopyPaste(window, &RenderViewHost::Copy, "copy-clipboard"); | 1198 DoCutCopyPaste(window, &RenderViewHost::Copy, "copy-clipboard"); |
1246 } | 1199 } |
1247 | 1200 |
1248 void DoPaste(BrowserWindow* window) { | 1201 void DoPaste(BrowserWindow* window) { |
1249 DoCutCopyPaste(window, &RenderViewHost::Paste, "paste-clipboard"); | 1202 DoCutCopyPaste(window, &RenderViewHost::Paste, "paste-clipboard"); |
1250 } | 1203 } |
1251 | 1204 |
1252 } // namespace gtk_util | 1205 } // namespace gtk_util |
OLD | NEW |