| Index: chrome/browser/autocomplete/autocomplete_edit_view_gtk.h
|
| diff --git a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h
|
| index 34dd01c51985198db75e00ff1702823371860daa..07e0ed3866325905e02603e8220f1e6980c3f870 100644
|
| --- a/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h
|
| +++ b/chrome/browser/autocomplete/autocomplete_edit_view_gtk.h
|
| @@ -174,6 +174,12 @@ class AutocompleteEditViewGtk : public AutocompleteEditView,
|
| GtkTextBuffer*, GtkTextIter*, const gchar*, gint);
|
| CHROMEG_CALLBACK_0(AutocompleteEditViewGtk, void,
|
| HandleKeymapDirectionChanged, GdkKeymap*);
|
| + CHROMEG_CALLBACK_2(AutocompleteEditViewGtk, void, HandleDeleteRange,
|
| + GtkTextBuffer*, GtkTextIter*, GtkTextIter*);
|
| + // Unlike above HandleMarkSet and HandleMarkSetAfter, this handler will always
|
| + // be connected to the signal.
|
| + CHROMEG_CALLBACK_2(AutocompleteEditViewGtk, void, HandleMarkSetAlways,
|
| + GtkTextBuffer*, GtkTextIter*, GtkTextMark*);
|
|
|
| CHROMEGTK_CALLBACK_1(AutocompleteEditViewGtk, gboolean, HandleKeyPress,
|
| GdkEventKey*);
|
| @@ -214,12 +220,16 @@ class AutocompleteEditViewGtk : public AutocompleteEditView,
|
| // listen to focus change events on it.
|
| CHROMEGTK_CALLBACK_1(AutocompleteEditViewGtk, void, HandleHierarchyChanged,
|
| GtkWidget*);
|
| - CHROMEGTK_CALLBACK_1(AutocompleteEditViewGtk, gboolean,
|
| - HandleInstantViewButtonPress, GdkEventButton*);
|
| -#if GTK_CHECK_VERSION(2,20,0)
|
| +#if GTK_CHECK_VERSION(2, 20, 0)
|
| CHROMEGTK_CALLBACK_1(AutocompleteEditViewGtk, void, HandlePreeditChanged,
|
| const gchar*);
|
| #endif
|
| + // Undo/redo operations won't trigger "begin-user-action" and
|
| + // "end-user-action" signals, so we need to hook into "undo" and "redo"
|
| + // signals and call OnBeforePossibleChange()/OnAfterPossibleChange() by
|
| + // ourselves.
|
| + CHROMEGTK_CALLBACK_0(AutocompleteEditViewGtk, void, HandleUndoRedo);
|
| + CHROMEGTK_CALLBACK_0(AutocompleteEditViewGtk, void, HandleUndoRedoAfter);
|
|
|
| CHROMEG_CALLBACK_1(AutocompleteEditViewGtk, void, HandleWindowSetFocus,
|
| GtkWindow*, GtkWidget*);
|
| @@ -269,10 +279,7 @@ class AutocompleteEditViewGtk : public AutocompleteEditView,
|
| GtkTextIter* iter_max);
|
|
|
| // Return the number of characers in the current buffer.
|
| - int GetTextLength();
|
| -
|
| - // Get the string contents for the given buffer.
|
| - std::wstring GetTextFromBuffer(GtkTextBuffer* buffer) const;
|
| + int GetTextLength() const;
|
|
|
| // Try to parse the current text as a URL and colorize the components.
|
| void EmphasizeURLComponents();
|
| @@ -306,6 +313,18 @@ class AutocompleteEditViewGtk : public AutocompleteEditView,
|
| // If the selected text parses as a URL OwnPrimarySelection is invoked.
|
| void UpdatePrimarySelectionIfValidURL();
|
|
|
| + // Retrieves the first and last iterators in the |text_buffer_|, but excludes
|
| + // the anchor holding the |instant_view_| widget.
|
| + void GetTextBufferBounds(GtkTextIter* start, GtkTextIter* end) const;
|
| +
|
| + // Validates an iterator in the |text_buffer_|, to make sure it doesn't go
|
| + // beyond the anchor for holding the |instant_view_| widget.
|
| + void ValidateTextBufferIter(GtkTextIter* iter) const;
|
| +
|
| + // Adjusts vertical alignment of the |instant_view_| in the |text_view_|, to
|
| + // make sure they have the same baseline.
|
| + void AdjustVerticalAlignmentOfInstantView();
|
| +
|
| // The widget we expose, used for vertically centering the real text edit,
|
| // since the height will change based on the font / font size, etc.
|
| OwnedWidgetGtk alignment_;
|
| @@ -321,9 +340,16 @@ class AutocompleteEditViewGtk : public AutocompleteEditView,
|
| GtkTextTag* normal_text_tag_;
|
|
|
| // Objects for the instant suggestion text view.
|
| + GtkTextTag* instant_anchor_tag_;
|
| +
|
| + // A widget for displaying instant suggestion text. It'll be attached to a
|
| + // child anchor in the |text_buffer_| object.
|
| GtkWidget* instant_view_;
|
| - GtkTextBuffer* instant_buffer_;
|
| - GtkTextTag* instant_text_tag_;
|
| +
|
| + // A mark to split the content and the instant anchor. Wherever the end
|
| + // iterator of the text buffer is required, the iterator to this mark should
|
| + // be used.
|
| + GtkTextMark* instant_mark_;
|
|
|
| scoped_ptr<AutocompleteEditModel> model_;
|
| scoped_ptr<AutocompletePopupView> popup_view_;
|
| @@ -434,7 +460,7 @@ class AutocompleteEditViewGtk : public AutocompleteEditView,
|
| // is not suggested text, that means the user manually made the selection.
|
| bool selection_suggested_;
|
|
|
| -#if GTK_CHECK_VERSION(2,20,0)
|
| +#if GTK_CHECK_VERSION(2, 20, 0)
|
| // Stores the text being composed by the input method.
|
| std::wstring preedit_;
|
| #endif
|
|
|