| Index: ui/views/window/dialog_client_view.h
|
| diff --git a/ui/views/window/dialog_client_view.h b/ui/views/window/dialog_client_view.h
|
| index 3602812832829fe28371f772bb36f6e6bf6b8800..ff184b877617cc44b1805a81a96ce10711dfc6c4 100644
|
| --- a/ui/views/window/dialog_client_view.h
|
| +++ b/ui/views/window/dialog_client_view.h
|
| @@ -51,6 +51,9 @@ class VIEWS_EXPORT DialogClientView : public ClientView,
|
|
|
| // View implementation:
|
| gfx::Size GetPreferredSize() const override;
|
| + gfx::Size GetMinimumSize() const override;
|
| + gfx::Size GetMaximumSize() const override;
|
| +
|
| void Layout() override;
|
| bool AcceleratorPressed(const ui::Accelerator& accelerator) override;
|
| void ViewHierarchyChanged(
|
| @@ -67,7 +70,11 @@ class VIEWS_EXPORT DialogClientView : public ClientView,
|
| void set_minimum_size(const gfx::Size& size) { minimum_size_ = size; }
|
|
|
| private:
|
| - bool has_dialog_buttons() const { return ok_button_ || cancel_button_; }
|
| + enum {
|
| + // The number of buttons that DialogClientView can support.
|
| + kNumButtons = 3
|
| + };
|
| + class ButtonRowContainer;
|
|
|
| // Returns the DialogDelegate for the window.
|
| DialogDelegate* GetDialogDelegate() const;
|
| @@ -76,34 +83,25 @@ class VIEWS_EXPORT DialogClientView : public ClientView,
|
| void ChildPreferredSizeChanged(View* child) override;
|
| void ChildVisibilityChanged(View* child) override;
|
|
|
| - // Create a dialog button of the appropriate type.
|
| - LabelButton* CreateDialogButton(ui::DialogButton type);
|
| -
|
| - // Update |button|'s text and enabled state according to the delegate's state.
|
| - void UpdateButton(LabelButton* button, ui::DialogButton type);
|
| -
|
| - // Returns the height of the buttons.
|
| - int GetButtonHeight() const;
|
| -
|
| - // Returns the height of the extra view.
|
| - int GetExtraViewHeight() const;
|
| -
|
| - // Returns the height of the row containing the buttons and the extra view.
|
| - int GetButtonsAndExtraViewRowHeight() const;
|
| -
|
| - // Returns the insets for the buttons and extra view, including the vertical
|
| - // padding between them and the contents view.
|
| - gfx::Insets GetButtonRowInsets() const;
|
| -
|
| - // Sets up the focus chain for the child views. This is required since the
|
| - // delegate may choose to add/remove views at any time.
|
| - void SetupFocusChain();
|
| + // Creates, deletes, or updates the appearance of the button of type |type|
|
| + // (which must be pointed to by |member|). Which action is chosen is based on
|
| + // whether DialogDelegate::GetDialogButtons() includes |type|, and whether
|
| + // |member| points to a button that already exists.
|
| + void UpdateDialogButton(LabelButton** member, ui::DialogButton type);
|
|
|
| // Returns the spacing between the extra view and the ok/cancel buttons. 0 if
|
| // no extra view. Otherwise uses GetExtraViewPadding() or the default padding.
|
| int GetExtraViewSpacing() const;
|
|
|
| + // Returns Views in the button row, as they should appear in the layout. If
|
| + // a View should not appear, it will be null.
|
| + std::array<View*, kNumButtons> GetButtonRowViews();
|
| +
|
| + // Installs and configures the LayoutManager for |button_row_container_|.
|
| + void SetupLayout();
|
| +
|
| // Creates or deletes any buttons that are required. Updates data members.
|
| + // After calling this, no button row Views will be in the view hierarchy.
|
| void SetupViews();
|
|
|
| // How much to inset the button row.
|
| @@ -120,12 +118,18 @@ class VIEWS_EXPORT DialogClientView : public ClientView,
|
| // The extra view shown in the row of buttons; may be NULL.
|
| View* extra_view_ = nullptr;
|
|
|
| + // Container view for the button row.
|
| + ButtonRowContainer* button_row_container_ = nullptr;
|
| +
|
| // True if we've notified the delegate the window is closing and the delegate
|
| // allowed the close. In some situations it's possible to get two closes (see
|
| // http://crbug.com/71940). This is used to avoid notifying the delegate
|
| // twice, which can have bad consequences.
|
| bool delegate_allowed_close_ = false;
|
|
|
| + // When true, prevents ViewHierarchyChanged() from clearing out data members.
|
| + bool preserve_button_row_data_members_ = false;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(DialogClientView);
|
| };
|
|
|
|
|