mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-20 18:12:53 +00:00
Today the profile viewer timeline view has a static size, which is computed as half the height of the window given it has two root widgets. Instead the timeline view should shrink to only consume the size that each process timeline consumes.
73 lines
1.9 KiB
C++
73 lines
1.9 KiB
C++
/*
|
|
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include "TimelineContainer.h"
|
|
#include "TimelineView.h"
|
|
#include <LibGUI/BoxLayout.h>
|
|
|
|
namespace Profiler {
|
|
|
|
TimelineContainer::TimelineContainer(GUI::Widget& header_container, TimelineView& timeline_view)
|
|
{
|
|
set_layout<GUI::HorizontalBoxLayout>();
|
|
set_should_hide_unnecessary_scrollbars(true);
|
|
m_header_container = header_container;
|
|
m_timeline_view = timeline_view;
|
|
add_child(header_container);
|
|
add_child(timeline_view);
|
|
header_container.move_to_back();
|
|
timeline_view.move_to_back();
|
|
update_widget_sizes();
|
|
update_widget_positions();
|
|
set_shrink_to_fit(true);
|
|
|
|
m_timeline_view->on_scale_change = [this] {
|
|
update_widget_positions();
|
|
update_widget_sizes();
|
|
};
|
|
}
|
|
|
|
TimelineContainer::~TimelineContainer()
|
|
{
|
|
}
|
|
|
|
void TimelineContainer::did_scroll()
|
|
{
|
|
AbstractScrollableWidget::did_scroll();
|
|
update_widget_positions();
|
|
}
|
|
|
|
void TimelineContainer::update_widget_positions()
|
|
{
|
|
m_header_container->move_to(0, -vertical_scrollbar().value());
|
|
m_timeline_view->move_to(m_header_container->width() + -horizontal_scrollbar().value(), -vertical_scrollbar().value());
|
|
}
|
|
|
|
void TimelineContainer::update_widget_sizes()
|
|
{
|
|
{
|
|
m_timeline_view->do_layout();
|
|
auto preferred_size = m_timeline_view->layout()->preferred_size();
|
|
m_timeline_view->resize(preferred_size);
|
|
set_content_size(preferred_size);
|
|
}
|
|
|
|
{
|
|
m_header_container->do_layout();
|
|
auto preferred_size = m_header_container->layout()->preferred_size();
|
|
m_header_container->resize(preferred_size);
|
|
set_size_occupied_by_fixed_elements({ preferred_size.width(), 0 });
|
|
}
|
|
}
|
|
|
|
void TimelineContainer::resize_event(GUI::ResizeEvent& event)
|
|
{
|
|
AbstractScrollableWidget::resize_event(event);
|
|
update_widget_positions();
|
|
update_widget_sizes();
|
|
}
|
|
|
|
}
|