mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-01-04 09:14:21 +03:00
LibGUI+Apps: Let Splitters select which resizee to set fixed
This gives Splitters more versatility when the right resizee is intended to remain fixed or be toggled on and off.
This commit is contained in:
parent
495fd1d2c4
commit
c3ce562240
Notes:
sideshowbarker
2024-07-17 23:02:37 +09:00
Author: https://github.com/thankyouverycool Commit: https://github.com/SerenityOS/serenity/commit/c3ce562240 Pull-request: https://github.com/SerenityOS/serenity/pull/12681 Issue: https://github.com/SerenityOS/serenity/issues/12561 Reviewed-by: https://github.com/IdanHo ✅
@ -30,6 +30,8 @@
|
||||
}
|
||||
|
||||
@GUI::HorizontalSplitter {
|
||||
fixed_resizee: "Second"
|
||||
|
||||
@GUI::Widget {
|
||||
layout: @GUI::VerticalBoxLayout {}
|
||||
|
||||
|
@ -59,6 +59,8 @@
|
||||
}
|
||||
|
||||
@GUI::HorizontalSplitter {
|
||||
fixed_resizee: "Second"
|
||||
|
||||
@GUI::Widget {
|
||||
layout: @GUI::VerticalBoxLayout {}
|
||||
|
||||
|
@ -14,6 +14,8 @@
|
||||
}
|
||||
|
||||
@GUI::HorizontalSplitter {
|
||||
fixed_resizee: "Second"
|
||||
|
||||
@GUI::TextEditor {
|
||||
name: "editor"
|
||||
}
|
||||
|
@ -20,6 +20,9 @@ Splitter::Splitter(Orientation orientation)
|
||||
{
|
||||
REGISTER_INT_PROPERTY("first_resizee_minimum_size", first_resizee_minimum_size, set_first_resizee_minimum_size);
|
||||
REGISTER_INT_PROPERTY("second_resizee_minimum_size", second_resizee_minimum_size, set_second_resizee_minimum_size);
|
||||
REGISTER_ENUM_PROPERTY("fixed_resizee", fixed_resizee, set_fixed_resizee, FixedResizee,
|
||||
{ FixedResizee::First, "First" },
|
||||
{ FixedResizee::Second, "Second" });
|
||||
|
||||
set_background_role(ColorRole::Button);
|
||||
set_layout<BoxLayout>(orientation);
|
||||
@ -218,11 +221,11 @@ void Splitter::mousemove_event(MouseEvent& event)
|
||||
}
|
||||
|
||||
if (m_orientation == Orientation::Horizontal) {
|
||||
m_first_resizee->set_fixed_width(new_first_resizee_size.width());
|
||||
m_second_resizee->set_fixed_width(-1);
|
||||
m_first_resizee->set_fixed_width(fixed_resizee() == FixedResizee::First ? new_first_resizee_size.width() : -1);
|
||||
m_second_resizee->set_fixed_width(fixed_resizee() == FixedResizee::Second ? new_second_resizee_size.width() : -1);
|
||||
} else {
|
||||
m_first_resizee->set_fixed_height(new_first_resizee_size.height());
|
||||
m_second_resizee->set_fixed_height(-1);
|
||||
m_first_resizee->set_fixed_height(fixed_resizee() == FixedResizee::First ? new_first_resizee_size.height() : -1);
|
||||
m_second_resizee->set_fixed_height(fixed_resizee() == FixedResizee::Second ? new_second_resizee_size.height() : -1);
|
||||
}
|
||||
|
||||
invalidate_layout();
|
||||
|
@ -14,6 +14,11 @@ class Splitter : public Widget {
|
||||
C_OBJECT(Splitter);
|
||||
|
||||
public:
|
||||
enum class FixedResizee {
|
||||
First,
|
||||
Second
|
||||
};
|
||||
|
||||
virtual ~Splitter() override;
|
||||
|
||||
int first_resizee_minimum_size() { return m_first_resizee_minimum_size; }
|
||||
@ -33,6 +38,9 @@ protected:
|
||||
|
||||
virtual void did_layout() override;
|
||||
|
||||
FixedResizee fixed_resizee() const { return m_fixed_resizee; }
|
||||
void set_fixed_resizee(FixedResizee resizee) { m_fixed_resizee = resizee; }
|
||||
|
||||
private:
|
||||
void override_cursor(bool do_override);
|
||||
Gfx::IntRect rect_between_widgets(GUI::Widget const& first_widget, GUI::Widget const& second_widget, bool honor_grabbable_margins) const;
|
||||
@ -47,6 +55,7 @@ private:
|
||||
Gfx::IntSize m_second_resizee_start_size;
|
||||
int m_first_resizee_minimum_size { 0 };
|
||||
int m_second_resizee_minimum_size { 0 };
|
||||
FixedResizee m_fixed_resizee { FixedResizee::First };
|
||||
|
||||
void recompute_grabbables();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user