| Index: chrome/browser/chromeos/input_method/candidate_window_view.h
|
| diff --git a/chrome/browser/chromeos/input_method/candidate_window_view.h b/chrome/browser/chromeos/input_method/candidate_window_view.h
|
| index dc69f758f823a32fbd5e2c4764ceede36734a1a7..f5848f1f18f476ff413ebed2523e20cc367f27d4 100644
|
| --- a/chrome/browser/chromeos/input_method/candidate_window_view.h
|
| +++ b/chrome/browser/chromeos/input_method/candidate_window_view.h
|
| @@ -5,25 +5,19 @@
|
| #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_CANDIDATE_WINDOW_VIEW_H_
|
| #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_CANDIDATE_WINDOW_VIEW_H_
|
|
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| #include "chromeos/ime/candidate_window.h"
|
| -#include "ui/views/view.h"
|
| -
|
| -namespace gfx {
|
| -class Font;
|
| -}
|
| +#include "ui/views/bubble/bubble_delegate.h"
|
| +#include "ui/views/controls/button/button.h"
|
|
|
| namespace chromeos {
|
| namespace input_method {
|
|
|
| class CandidateView;
|
| -class CandidateWindow;
|
| -class HidableArea;
|
| class InformationTextArea;
|
|
|
| // CandidateWindowView is the main container of the candidate window UI.
|
| -class CandidateWindowView : public views::View {
|
| +class CandidateWindowView : public views::BubbleDelegateView,
|
| + public views::ButtonListener {
|
| public:
|
| // The object can be monitored by the observer.
|
| class Observer {
|
| @@ -31,14 +25,11 @@ class CandidateWindowView : public views::View {
|
| virtual ~Observer() {}
|
| // The function is called when a candidate is committed.
|
| virtual void OnCandidateCommitted(int index) = 0;
|
| -
|
| - virtual void OnCandidateWindowOpened() = 0;
|
| - virtual void OnCandidateWindowClosed() = 0;
|
| };
|
|
|
| - explicit CandidateWindowView(views::Widget* parent_frame);
|
| + explicit CandidateWindowView(gfx::NativeView parent);
|
| virtual ~CandidateWindowView();
|
| - void Init();
|
| + views::Widget* InitWidget();
|
|
|
| // Adds the given observer. The ownership is not transferred.
|
| void AddObserver(Observer* observer) {
|
| @@ -50,19 +41,6 @@ class CandidateWindowView : public views::View {
|
| observers_.RemoveObserver(observer);
|
| }
|
|
|
| - // Selects the candidate specified by the index in the current page
|
| - // (zero-origin). Changes the appearance of the selected candidate,
|
| - // updates the information in the candidate window as needed.
|
| - void SelectCandidateAt(int index_in_page);
|
| -
|
| - // The function is called when a candidate is being dragged. From the
|
| - // given point, locates the candidate under the mouse cursor, and
|
| - // selects it.
|
| - void OnCandidatePressed(const gfx::Point& point);
|
| -
|
| - // Commits the candidate currently being selected.
|
| - void CommitCandidate();
|
| -
|
| // Hides the lookup table.
|
| void HideLookupTable();
|
|
|
| @@ -72,9 +50,6 @@ class CandidateWindowView : public views::View {
|
| // Hides the preedit text.
|
| void HidePreeditText();
|
|
|
| - // Hides whole the candidate window.
|
| - void HideAll();
|
| -
|
| // Shows the lookup table.
|
| void ShowLookupTable();
|
|
|
| @@ -87,83 +62,27 @@ class CandidateWindowView : public views::View {
|
| // Updates the preedit text.
|
| void UpdatePreeditText(const std::string& utf8_text);
|
|
|
| - // Returns true if we should update candidate views in the window. For
|
| - // instance, if we are going to show the same candidates as before, we
|
| - // don't have to update candidate views. This happens when the user just
|
| - // moves the cursor in the same page in the candidate window.
|
| - static bool ShouldUpdateCandidateViews(
|
| - const CandidateWindow& old_candidate_window,
|
| - const CandidateWindow& new_candidate_window);
|
| -
|
| // Updates candidates of the candidate window from |candidate_window|.
|
| // Candidates are arranged per |orientation|.
|
| void UpdateCandidates(const CandidateWindow& candidate_window);
|
|
|
| - // Resizes and moves the parent frame. The two actions should be
|
| - // performed consecutively as resizing may require the candidate window
|
| - // to move. For instance, we may need to move the candidate window from
|
| - // below the cursor to above the cursor, if the candidate window becomes
|
| - // too big to be shown near the bottom of the screen. This function
|
| - // needs to be called when the visible contents of the candidate window
|
| - // are modified.
|
| - void ResizeAndMoveParentFrame();
|
| -
|
| - // Returns the horizontal offset used for placing the vertical candidate
|
| - // window so that the first candidate is aligned with the the text being
|
| - // converted like:
|
| - //
|
| - // XXX <- The user is converting XXX
|
| - // +-----+
|
| - // |1 XXX|
|
| - // |2 YYY|
|
| - // |3 ZZZ|
|
| - //
|
| - // Returns 0 if no candidate is present.
|
| - int GetHorizontalOffset();
|
| -
|
| - void set_cursor_bounds(const gfx::Rect& cursor_bounds) {
|
| - cursor_bounds_ = cursor_bounds;
|
| - }
|
| -
|
| - void set_composition_head_bounds(
|
| - const gfx::Rect& composition_head_bounds) {
|
| - composition_head_bounds_ = composition_head_bounds;
|
| - }
|
| + void SetCursorBounds(const gfx::Rect& cursor_bounds,
|
| + const gfx::Rect& composition_head);
|
|
|
| - const gfx::Rect& cursor_bounds() const { return cursor_bounds_; }
|
| - const gfx::Rect& composition_head_bounds() const {
|
| - return composition_head_bounds_;
|
| - }
|
| -
|
| - protected:
|
| - // Override View::VisibilityChanged()
|
| - virtual void VisibilityChanged(View* starting_from, bool is_visible) OVERRIDE;
|
| + private:
|
| + friend class CandidateWindowViewTest;
|
|
|
| - // Override View::OnBoundsChanged()
|
| - virtual void OnBoundsChanged(const gfx::Rect& previous_bounds) OVERRIDE;
|
| + // Overridden from views::ButtonListener:
|
| + virtual void ButtonPressed(views::Button* sender,
|
| + const ui::Event& event) OVERRIDE;
|
|
|
| - private:
|
| - FRIEND_TEST_ALL_PREFIXES(CandidateWindowViewTest,
|
| - UpdateCandidatesTest_CursorVisibility);
|
| - FRIEND_TEST_ALL_PREFIXES(CandidateWindowViewTest, ShortcutSettingTest);
|
| - FRIEND_TEST_ALL_PREFIXES(CandidateWindowViewTest,
|
| - DoNotChangeRowHeightWithLabelSwitchTest);
|
| + void SelectCandidateAt(int index_in_page);
|
| + void UpdateVisibility();
|
|
|
| // Initializes the candidate views if needed.
|
| void MaybeInitializeCandidateViews(const CandidateWindow& candidate_window);
|
|
|
| - // Returns the appropriate area (header or footer) to put auxiliary texts.
|
| - InformationTextArea* GetAuxiliaryTextArea();
|
| -
|
| - // Returns true if the candidate window is open. The suggestion window does
|
| - // not count as the candidate window.
|
| - bool IsCandidateWindowOpen() const;
|
| -
|
| - // Notifies observers if the candidate window's opened/closed state has
|
| - // changed from the previous call to this function.
|
| - void NotifyIfCandidateWindowOpenedOrClosed();
|
| -
|
| - // The candidate window.
|
| + // The candidate window data model.
|
| CandidateWindow candidate_window_;
|
|
|
| // The index in the current page of the candidate currently being selected.
|
| @@ -172,28 +91,14 @@ class CandidateWindowView : public views::View {
|
| // The observers of the object.
|
| ObserverList<Observer> observers_;
|
|
|
| - // The parent frame.
|
| - views::Widget* parent_frame_;
|
| -
|
| // Views created in the class will be part of tree of |this|, so these
|
| // child views will be deleted when |this| is deleted.
|
| + InformationTextArea* auxiliary_text_;
|
| + InformationTextArea* preedit_;
|
| + views::View* candidate_area_;
|
|
|
| - // The preedit area is where the preedit text is shown, if it is needed
|
| - // in cases such as the focus is on a plugin that doesn't support in-line
|
| - // preedit drawing.
|
| - InformationTextArea* preedit_area_;
|
| - // The header area is where the auxiliary text is shown, if the
|
| - // orientation is horizontal. If the auxiliary text is not provided, we
|
| - // show nothing. For instance, we show pinyin text like "zhong'guo".
|
| - InformationTextArea* header_area_;
|
| - // The candidate area is where candidates are rendered.
|
| - HidableArea* candidate_area_;
|
| // The candidate views are used for rendering candidates.
|
| std::vector<CandidateView*> candidate_views_;
|
| - // The footer area is where the auxiliary text is shown, if the
|
| - // orientation is vertical. Usually the auxiliary text is used for
|
| - // showing candidate number information like 2/19.
|
| - InformationTextArea* footer_area_;
|
|
|
| // Current columns size in |candidate_area_|.
|
| gfx::Size previous_shortcut_column_size_;
|
| @@ -218,10 +123,6 @@ class CandidateWindowView : public views::View {
|
| // send OnCandidateWindowOpened and OnCandidateWindowClosed events.
|
| bool was_candidate_window_open_;
|
|
|
| - // This function judge whether the candidate window should be shown or not,
|
| - // if should be, shows parent_frame and if not, hides parent_frame.
|
| - void UpdateParentArea();
|
| -
|
| DISALLOW_COPY_AND_ASSIGN(CandidateWindowView);
|
| };
|
|
|
|
|