#include "ui/views/test/test_views.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/events/event.h"
#include "ui/views/layout/box_layout.h"
#include "ui/views/widget/native_widget_private.h"
#include "ui/views/widget/widget.h"
namespace views {
StaticSizedView::StaticSizedView(const gfx::Size& preferred_size)
: preferred_size_(preferred_size), minimum_size_(preferred_size) {}
StaticSizedView::~StaticSizedView() = default;
gfx::Size StaticSizedView::CalculatePreferredSize(
const SizeBounds& ) const {
return preferred_size_;
}
gfx::Size StaticSizedView::GetMinimumSize() const {
return minimum_size_;
}
gfx::Size StaticSizedView::GetMaximumSize() const {
return maximum_size_;
}
BEGIN_METADATA(StaticSizedView)
END_METADATA
ProportionallySizedView::ProportionallySizedView(int factor)
: factor_(factor) {}
ProportionallySizedView::~ProportionallySizedView() = default;
void ProportionallySizedView::SetPreferredWidth(int width) {
preferred_width_ = width;
PreferredSizeChanged();
}
gfx::Size ProportionallySizedView::CalculatePreferredSize(
const SizeBounds& available_size) const {
if (preferred_width_ >= 0) {
return gfx::Size(preferred_width_, preferred_width_ * factor_);
} else if (available_size.width().is_bounded()) {
int w = available_size.width().value();
return gfx::Size(w, w * factor_);
} else {
return View::CalculatePreferredSize(available_size);
}
}
BEGIN_METADATA(ProportionallySizedView)
END_METADATA
CloseWidgetView::CloseWidgetView(ui::EventType event_type)
: event_type_(event_type) {}
void CloseWidgetView::OnEvent(ui::Event* event) {
if (event->type() == event_type_) {
GetWidget()->native_widget_private()->CloseNow();
} else {
View::OnEvent(event);
if (!event->IsTouchEvent()) {
event->SetHandled();
}
}
}
BEGIN_METADATA(CloseWidgetView)
END_METADATA
EventCountView::EventCountView() = default;
EventCountView::~EventCountView() = default;
int EventCountView::GetEventCount(ui::EventType type) {
return event_count_[type];
}
void EventCountView::ResetCounts() {
event_count_.clear();
}
void EventCountView::OnMouseMoved(const ui::MouseEvent& event) {
++event_count_[ui::EventType::kMouseMoved];
last_flags_ = 0;
}
void EventCountView::OnKeyEvent(ui::KeyEvent* event) {
RecordEvent(event);
}
void EventCountView::OnMouseEvent(ui::MouseEvent* event) {
RecordEvent(event);
}
void EventCountView::OnScrollEvent(ui::ScrollEvent* event) {
RecordEvent(event);
}
void EventCountView::OnGestureEvent(ui::GestureEvent* event) {
RecordEvent(event);
}
void EventCountView::RecordEvent(ui::Event* event) {
++event_count_[event->type()];
last_flags_ = event->flags();
if (handle_mode_ == HandleMode::kConsumeEvents) {
event->SetHandled();
}
}
BEGIN_METADATA(EventCountView)
END_METADATA
ResizeAwareParentView::ResizeAwareParentView() {
SetLayoutManager(
std::make_unique<BoxLayout>(BoxLayout::Orientation::kHorizontal));
}
void ResizeAwareParentView::ChildPreferredSizeChanged(View* child) {
DeprecatedLayoutImmediately();
}
BEGIN_METADATA(ResizeAwareParentView)
END_METADATA
}