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

Unified Diff: chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc

Issue 6036004: Refactor AutocompleteEditViewGtk so that AutocompleteEditView impl can be swapped. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 9 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc
diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc
index 911775e6d88818344476a6b87eaace05daae5bd9..acf0fe4c978a40977b2846730090f39314492352 100644
--- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc
+++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.cc
@@ -38,12 +38,14 @@
#include "third_party/undoview/undo_view.h"
#if defined(TOOLKIT_VIEWS)
-#include "chrome/browser/views/autocomplete/autocomplete_popup_contents_view.h"
-#include "chrome/browser/views/location_bar/location_bar_view.h"
+#include "chrome/browser/gtk/accessible_widget_helper_gtk.h"
+#include "chrome/browser/ui/views/autocomplete/autocomplete_popup_contents_view.h"
+#include "chrome/browser/ui/views/location_bar/location_bar_view.h"
#else
#include "chrome/browser/autocomplete/autocomplete_popup_view_gtk.h"
#include "chrome/browser/gtk/gtk_theme_provider.h"
#include "chrome/browser/gtk/location_bar_view_gtk.h"
+#include "views/controls/native/native_view_host.h"
#endif
namespace {
@@ -418,44 +420,6 @@ void AutocompleteEditViewGtk::SetFocus() {
gtk_widget_grab_focus(text_view_);
}
-int AutocompleteEditViewGtk::TextWidth() {
- int horizontal_border_size =
- gtk_text_view_get_border_window_size(GTK_TEXT_VIEW(text_view_),
- GTK_TEXT_WINDOW_LEFT) +
- gtk_text_view_get_border_window_size(GTK_TEXT_VIEW(text_view_),
- GTK_TEXT_WINDOW_RIGHT) +
- gtk_text_view_get_left_margin(GTK_TEXT_VIEW(text_view_)) +
- gtk_text_view_get_right_margin(GTK_TEXT_VIEW(text_view_));
-
- GtkTextIter start, end;
- GdkRectangle first_char_bounds, last_char_bounds;
- gtk_text_buffer_get_start_iter(text_buffer_, &start);
-
- // Use the real end iterator here to take the width of instant suggestion
- // text into account, so that location bar can layout its children correctly.
- gtk_text_buffer_get_end_iter(text_buffer_, &end);
- gtk_text_view_get_iter_location(GTK_TEXT_VIEW(text_view_),
- &start, &first_char_bounds);
- gtk_text_view_get_iter_location(GTK_TEXT_VIEW(text_view_),
- &end, &last_char_bounds);
-
- gint first_char_start = first_char_bounds.x;
- gint first_char_end = first_char_start + first_char_bounds.width;
- gint last_char_start = last_char_bounds.x;
- gint last_char_end = last_char_start + last_char_bounds.width;
-
- // bounds width could be negative for RTL text.
- if (first_char_start > first_char_end)
- std::swap(first_char_start, first_char_end);
- if (last_char_start > last_char_end)
- std::swap(last_char_start, last_char_end);
-
- gint text_width = first_char_start < last_char_start ?
- last_char_end - first_char_start : first_char_end - last_char_start;
-
- return text_width + horizontal_border_size;
-}
-
int AutocompleteEditViewGtk::WidthOfTextAfterCursor() {
// Not used.
return -1;
@@ -790,6 +754,102 @@ CommandUpdater* AutocompleteEditViewGtk::GetCommandUpdater() {
return command_updater_;
}
+#if defined(TOOLKIT_VIEWS)
+views::View* AutocompleteEditViewGtk::AddToView(views::View* parent) {
+ views::NativeViewHost* host = new views::NativeViewHost;
+ parent->AddChildView(host);
+ host->set_focus_view(parent);
+ host->Attach(GetNativeView());
+ return host;
+}
+
+bool AutocompleteEditViewGtk::CommitInstantSuggestion(
+ const std::wstring& typed_text,
+ const std::wstring& suggestion) {
+ return CommitInstantSuggestion();
+}
+
+void AutocompleteEditViewGtk::EnableAccessibility() {
+ accessible_widget_helper_.reset(
+ new AccessibleWidgetHelper(text_view(), model_->profile()));
+ accessible_widget_helper_->SetWidgetName(
+ text_view(), l10n_util::GetStringUTF8(IDS_ACCNAME_LOCATION));
+}
+
+void AutocompleteEditViewGtk::SetInstantSuggestion(const string16& suggestion) {
+ SetInstantSuggestion(UTF16ToUTF8(suggestion));
+}
+#endif
+
+int AutocompleteEditViewGtk::TextWidth() const {
+ int horizontal_border_size =
+ gtk_text_view_get_border_window_size(GTK_TEXT_VIEW(text_view_),
+ GTK_TEXT_WINDOW_LEFT) +
+ gtk_text_view_get_border_window_size(GTK_TEXT_VIEW(text_view_),
+ GTK_TEXT_WINDOW_RIGHT) +
+ gtk_text_view_get_left_margin(GTK_TEXT_VIEW(text_view_)) +
+ gtk_text_view_get_right_margin(GTK_TEXT_VIEW(text_view_));
+
+ GtkTextIter start, end;
+ GdkRectangle first_char_bounds, last_char_bounds;
+ gtk_text_buffer_get_start_iter(text_buffer_, &start);
+
+ // Use the real end iterator here to take the width of instant suggestion
+ // text into account, so that location bar can layout its children correctly.
+ gtk_text_buffer_get_end_iter(text_buffer_, &end);
+ gtk_text_view_get_iter_location(GTK_TEXT_VIEW(text_view_),
+ &start, &first_char_bounds);
+ gtk_text_view_get_iter_location(GTK_TEXT_VIEW(text_view_),
+ &end, &last_char_bounds);
+
+ gint first_char_start = first_char_bounds.x;
+ gint first_char_end = first_char_start + first_char_bounds.width;
+ gint last_char_start = last_char_bounds.x;
+ gint last_char_end = last_char_start + last_char_bounds.width;
+
+ // bounds width could be negative for RTL text.
+ if (first_char_start > first_char_end)
+ std::swap(first_char_start, first_char_end);
+ if (last_char_start > last_char_end)
+ std::swap(last_char_start, last_char_end);
+
+ gint text_width = first_char_start < last_char_start ?
+ last_char_end - first_char_start : first_char_end - last_char_start;
+
+ return text_width + horizontal_border_size;
+}
+
+#if defined(TOOLKIT_VIEWS)
+// static
+AutocompleteEditView* AutocompleteEditViewGtk::Create(
+ AutocompleteEditController* controller,
+ ToolbarModel* toolbar_model,
+ Profile* profile,
+ CommandUpdater* command_updater,
+ bool popup_window_mode,
+ const views::View* location_bar) {
+ AutocompleteEditViewGtk* autocomplete =
+ new AutocompleteEditViewGtk(controller,
+ toolbar_model,
+ profile,
+ command_updater,
+ popup_window_mode,
+ location_bar);
+ autocomplete->Init();
+
+ // Make all the children of the widget visible. NOTE: this won't display
+ // anything, it just toggles the visible flag.
+ gtk_widget_show_all(autocomplete->GetNativeView());
+ // Hide the widget. NativeViewHostGtk will make it visible again as
+ // necessary.
+ gtk_widget_hide(autocomplete->GetNativeView());
+
+ autocomplete->EnableAccessibility();
+
+ return autocomplete;
+}
+#endif
+
void AutocompleteEditViewGtk::Observe(NotificationType type,
const NotificationSource& source,
const NotificationDetails& details) {

Powered by Google App Engine
This is Rietveld 408576698