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

Side by Side Diff: chrome/browser/renderer_host/render_widget_host_view_gtk.cc

Issue 1708015: Use customized RGBA-enabled tooltip window for tooltip on ChroemOS (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: fix the nit Created 10 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
« no previous file with comments | « chrome/browser/renderer_host/render_widget_host_view_gtk.h ('k') | views/views.gyp » ('j') | 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/renderer_host/render_widget_host_view_gtk.h" 5 #include "chrome/browser/renderer_host/render_widget_host_view_gtk.h"
6 6
7 // If this gets included after the gtk headers, then a bunch of compiler 7 // If this gets included after the gtk headers, then a bunch of compiler
8 // errors happen because of a "#define Status int" in Xlib.h, which interacts 8 // errors happen because of a "#define Status int" in Xlib.h, which interacts
9 // badly with URLRequestStatus::Status. 9 // badly with URLRequestStatus::Status.
10 #include "chrome/common/render_messages.h" 10 #include "chrome/common/render_messages.h"
(...skipping 21 matching lines...) Expand all
32 #include "chrome/browser/renderer_host/gtk_im_context_wrapper.h" 32 #include "chrome/browser/renderer_host/gtk_im_context_wrapper.h"
33 #include "chrome/browser/renderer_host/gtk_key_bindings_handler.h" 33 #include "chrome/browser/renderer_host/gtk_key_bindings_handler.h"
34 #include "chrome/browser/renderer_host/render_widget_host.h" 34 #include "chrome/browser/renderer_host/render_widget_host.h"
35 #include "chrome/browser/renderer_host/video_layer_x.h" 35 #include "chrome/browser/renderer_host/video_layer_x.h"
36 #include "chrome/common/chrome_switches.h" 36 #include "chrome/common/chrome_switches.h"
37 #include "chrome/common/native_web_keyboard_event.h" 37 #include "chrome/common/native_web_keyboard_event.h"
38 #include "gfx/gtk_util.h" 38 #include "gfx/gtk_util.h"
39 #include "third_party/WebKit/WebKit/chromium/public/gtk/WebInputEventFactory.h" 39 #include "third_party/WebKit/WebKit/chromium/public/gtk/WebInputEventFactory.h"
40 #include "webkit/glue/webcursor_gtk_data.h" 40 #include "webkit/glue/webcursor_gtk_data.h"
41 41
42 #if defined(OS_CHROMEOS)
43 #include "views/widget/tooltip_window_gtk.h"
44 #endif // defined(OS_CHROMEOS)
45
42 static const int kMaxWindowWidth = 4000; 46 static const int kMaxWindowWidth = 4000;
43 static const int kMaxWindowHeight = 4000; 47 static const int kMaxWindowHeight = 4000;
44 48
45 static const char* kRenderWidgetHostViewKey = "__RENDER_WIDGET_HOST_VIEW__"; 49 static const char* kRenderWidgetHostViewKey = "__RENDER_WIDGET_HOST_VIEW__";
46 50
47 using WebKit::WebInputEventFactory; 51 using WebKit::WebInputEventFactory;
48 52
49 // This class is a simple convenience wrapper for Gtk functions. It has only 53 // This class is a simple convenience wrapper for Gtk functions. It has only
50 // static methods. 54 // static methods.
51 class RenderWidgetHostViewGtkWidget { 55 class RenderWidgetHostViewGtkWidget {
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 view_.Destroy(); 346 view_.Destroy();
343 } 347 }
344 348
345 void RenderWidgetHostViewGtk::InitAsChild() { 349 void RenderWidgetHostViewGtk::InitAsChild() {
346 view_.Own(RenderWidgetHostViewGtkWidget::CreateNewWidget(this)); 350 view_.Own(RenderWidgetHostViewGtkWidget::CreateNewWidget(this));
347 // |im_context_| must be created after creating |view_| widget. 351 // |im_context_| must be created after creating |view_| widget.
348 im_context_.reset(new GtkIMContextWrapper(this)); 352 im_context_.reset(new GtkIMContextWrapper(this));
349 // |key_bindings_handler_| must be created after creating |view_| widget. 353 // |key_bindings_handler_| must be created after creating |view_| widget.
350 key_bindings_handler_.reset(new GtkKeyBindingsHandler(view_.get())); 354 key_bindings_handler_.reset(new GtkKeyBindingsHandler(view_.get()));
351 plugin_container_manager_.set_host_widget(view_.get()); 355 plugin_container_manager_.set_host_widget(view_.get());
356
357 #if defined(OS_CHROMEOS)
358 tooltip_window_.reset(new views::TooltipWindowGtk(view_.get()));
359 #endif // defined(OS_CHROMEOS)
360
352 gtk_widget_show(view_.get()); 361 gtk_widget_show(view_.get());
353 } 362 }
354 363
355 void RenderWidgetHostViewGtk::InitAsPopup( 364 void RenderWidgetHostViewGtk::InitAsPopup(
356 RenderWidgetHostView* parent_host_view, const gfx::Rect& pos) { 365 RenderWidgetHostView* parent_host_view, const gfx::Rect& pos) {
357 parent_host_view_ = parent_host_view; 366 parent_host_view_ = parent_host_view;
358 parent_ = parent_host_view->GetNativeView(); 367 parent_ = parent_host_view->GetNativeView();
359 GtkWidget* popup = gtk_window_new(GTK_WINDOW_POPUP); 368 GtkWidget* popup = gtk_window_new(GTK_WINDOW_POPUP);
360 view_.Own(RenderWidgetHostViewGtkWidget::CreateNewWidget(this)); 369 view_.Own(RenderWidgetHostViewGtkWidget::CreateNewWidget(this));
361 // |im_context_| must be created after creating |view_| widget. 370 // |im_context_| must be created after creating |view_| widget.
362 im_context_.reset(new GtkIMContextWrapper(this)); 371 im_context_.reset(new GtkIMContextWrapper(this));
363 // |key_bindings_handler_| must be created after creating |view_| widget. 372 // |key_bindings_handler_| must be created after creating |view_| widget.
364 key_bindings_handler_.reset(new GtkKeyBindingsHandler(view_.get())); 373 key_bindings_handler_.reset(new GtkKeyBindingsHandler(view_.get()));
365 plugin_container_manager_.set_host_widget(view_.get()); 374 plugin_container_manager_.set_host_widget(view_.get());
375
376 #if defined(OS_CHROMEOS)
377 tooltip_window_.reset(new views::TooltipWindowGtk(view_.get()));
378 #endif // defined(OS_CHROMEOS)
379
366 gtk_container_add(GTK_CONTAINER(popup), view_.get()); 380 gtk_container_add(GTK_CONTAINER(popup), view_.get());
367 381
368 // If we are not activatable, we don't want to grab keyboard input, 382 // If we are not activatable, we don't want to grab keyboard input,
369 // and webkit will manage our destruction. 383 // and webkit will manage our destruction.
370 if (NeedsInputGrab()) { 384 if (NeedsInputGrab()) {
371 // Grab all input for the app. If a click lands outside the bounds of the 385 // Grab all input for the app. If a click lands outside the bounds of the
372 // popup, WebKit will notice and destroy us. Before doing this we need 386 // popup, WebKit will notice and destroy us. Before doing this we need
373 // to ensure that the the popup is added to the browser's window group, 387 // to ensure that the the popup is added to the browser's window group,
374 // to allow for the grabs to work correctly. 388 // to allow for the grabs to work correctly.
375 gtk_window_group_add_window(gtk_window_get_group( 389 gtk_window_group_add_window(gtk_window_get_group(
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 // this itself). 615 // this itself).
602 // I filed https://bugzilla.gnome.org/show_bug.cgi?id=604641 upstream. 616 // I filed https://bugzilla.gnome.org/show_bug.cgi?id=604641 upstream.
603 const std::wstring& clamped_tooltip = 617 const std::wstring& clamped_tooltip =
604 l10n_util::TruncateString(tooltip_text, kMaxTooltipLength); 618 l10n_util::TruncateString(tooltip_text, kMaxTooltipLength);
605 619
606 if (clamped_tooltip.empty()) { 620 if (clamped_tooltip.empty()) {
607 gtk_widget_set_has_tooltip(view_.get(), FALSE); 621 gtk_widget_set_has_tooltip(view_.get(), FALSE);
608 } else { 622 } else {
609 gtk_widget_set_tooltip_text(view_.get(), 623 gtk_widget_set_tooltip_text(view_.get(),
610 WideToUTF8(clamped_tooltip).c_str()); 624 WideToUTF8(clamped_tooltip).c_str());
625 #if defined(OS_CHROMEOS)
626 tooltip_window_->SetTooltipText(clamped_tooltip);
627 #endif // defined(OS_CHROMEOS)
611 } 628 }
612 } 629 }
613 630
614 void RenderWidgetHostViewGtk::SelectionChanged(const std::string& text) { 631 void RenderWidgetHostViewGtk::SelectionChanged(const std::string& text) {
615 GtkClipboard* x_clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); 632 GtkClipboard* x_clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
616 gtk_clipboard_set_text(x_clipboard, text.c_str(), text.length()); 633 gtk_clipboard_set_text(x_clipboard, text.c_str(), text.length());
617 } 634 }
618 635
619 void RenderWidgetHostViewGtk::ShowingContextMenu(bool showing) { 636 void RenderWidgetHostViewGtk::ShowingContextMenu(bool showing) {
620 is_showing_context_menu_ = showing; 637 is_showing_context_menu_ = showing;
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
842 } 859 }
843 860
844 // static 861 // static
845 RenderWidgetHostView* 862 RenderWidgetHostView*
846 RenderWidgetHostView::GetRenderWidgetHostViewFromNativeView( 863 RenderWidgetHostView::GetRenderWidgetHostViewFromNativeView(
847 gfx::NativeView widget) { 864 gfx::NativeView widget) {
848 gpointer user_data = g_object_get_data(G_OBJECT(widget), 865 gpointer user_data = g_object_get_data(G_OBJECT(widget),
849 kRenderWidgetHostViewKey); 866 kRenderWidgetHostViewKey);
850 return reinterpret_cast<RenderWidgetHostView*>(user_data); 867 return reinterpret_cast<RenderWidgetHostView*>(user_data);
851 } 868 }
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/render_widget_host_view_gtk.h ('k') | views/views.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698