diff --git a/headers/os/interface/ControlLook.h b/headers/os/interface/ControlLook.h index 1e880ea9b4..b832a1dce8 100644 --- a/headers/os/interface/ControlLook.h +++ b/headers/os/interface/ControlLook.h @@ -79,7 +79,8 @@ public: /* TODO: virtual*/ float DefaultItemSpacing() const; - static float ComposeItemSpacing(float spacing); + + static float ComposeSpacing(float spacing); uint32 Flags(BControl* control) const; diff --git a/headers/os/interface/InterfaceDefs.h b/headers/os/interface/InterfaceDefs.h index 1e5a401096..e33e5f7621 100644 --- a/headers/os/interface/InterfaceDefs.h +++ b/headers/os/interface/InterfaceDefs.h @@ -223,7 +223,23 @@ enum vertical_alignment { B_ALIGN_USE_FULL_HEIGHT = -2L }; -const float B_USE_DEFAULT_SPACING = -2.0f; + +// Layout spacing and insets, see BControlLook::ComposeSpacing() + + +enum { + B_USE_DEFAULT_SPACING = -2, + B_USE_ITEM_SPACING = -2, + B_USE_ITEM_INSETS = -2, + B_USE_HALF_ITEM_SPACING = -3, + B_USE_HALF_ITEM_INSETS = -3, + B_USE_WINDOW_INSETS = -4, + B_USE_WINDOW_SPACING = -4, + B_USE_SMALL_INSETS = -5, + B_USE_SMALL_SPACING = -5, + B_USE_BIG_INSETS = -6, + B_USE_BIG_SPACING = -6 +}; // Line join and cap modes diff --git a/src/kits/interface/ControlLook.cpp b/src/kits/interface/ControlLook.cpp index 0c13e18c2c..9ab89514f4 100644 --- a/src/kits/interface/ControlLook.cpp +++ b/src/kits/interface/ControlLook.cpp @@ -51,14 +51,21 @@ BControlLook::DefaultItemSpacing() const float -BControlLook::ComposeItemSpacing(float spacing) +BControlLook::ComposeSpacing(float spacing) { - if (spacing != B_USE_DEFAULT_SPACING) - return spacing; - - if (be_control_look) + // We only need to check one of each synonym (B_*_SPACING | B_*_INSETS) + if (spacing == B_USE_ITEM_SPACING) { return be_control_look->DefaultItemSpacing(); - return 0; + } else if (spacing == B_USE_HALF_ITEM_SPACING) { + return be_control_look->DefaultItemSpacing() * 0.5f; + } else if (spacing == B_USE_WINDOW_INSETS) { + return be_control_look->DefaultItemSpacing(); + } else if (spacing == B_USE_SMALL_SPACING) { + return be_control_look->DefaultItemSpacing() * 0.7f; + } else if (spacing == B_USE_BIG_SPACING) { + return be_control_look->DefaultItemSpacing() * 1.3f; + } + return spacing; } diff --git a/src/kits/interface/GridLayout.cpp b/src/kits/interface/GridLayout.cpp index 740cc2f7c3..ad0791e9a7 100644 --- a/src/kits/interface/GridLayout.cpp +++ b/src/kits/interface/GridLayout.cpp @@ -253,7 +253,7 @@ BGridLayout::VerticalSpacing() const void BGridLayout::SetHorizontalSpacing(float spacing) { - spacing = BControlLook::ComposeItemSpacing(spacing); + spacing = BControlLook::ComposeSpacing(spacing); if (spacing != fHSpacing) { fHSpacing = spacing; @@ -265,7 +265,7 @@ BGridLayout::SetHorizontalSpacing(float spacing) void BGridLayout::SetVerticalSpacing(float spacing) { - spacing = BControlLook::ComposeItemSpacing(spacing); + spacing = BControlLook::ComposeSpacing(spacing); if (spacing != fVSpacing) { fVSpacing = spacing; @@ -277,8 +277,8 @@ BGridLayout::SetVerticalSpacing(float spacing) void BGridLayout::SetSpacing(float horizontal, float vertical) { - horizontal = BControlLook::ComposeItemSpacing(horizontal); - vertical = BControlLook::ComposeItemSpacing(vertical); + horizontal = BControlLook::ComposeSpacing(horizontal); + vertical = BControlLook::ComposeSpacing(vertical); if (horizontal != fHSpacing || vertical != fVSpacing) { fHSpacing = horizontal; fVSpacing = vertical; diff --git a/src/kits/interface/GroupLayout.cpp b/src/kits/interface/GroupLayout.cpp index 13b7fc10f1..37cdb1ac29 100644 --- a/src/kits/interface/GroupLayout.cpp +++ b/src/kits/interface/GroupLayout.cpp @@ -68,7 +68,7 @@ BGroupLayout::Spacing() const void BGroupLayout::SetSpacing(float spacing) { - spacing = BControlLook::ComposeItemSpacing(spacing); + spacing = BControlLook::ComposeSpacing(spacing); if (spacing != fHSpacing) { fHSpacing = spacing; fVSpacing = spacing; diff --git a/src/kits/interface/SplitLayout.cpp b/src/kits/interface/SplitLayout.cpp index ba4ae1b658..71d7350ada 100644 --- a/src/kits/interface/SplitLayout.cpp +++ b/src/kits/interface/SplitLayout.cpp @@ -162,7 +162,7 @@ BSplitLayout::BSplitLayout(enum orientation orientation, fTopInset(0), fBottomInset(0), fSplitterSize(6), - fSpacing(BControlLook::ComposeItemSpacing(spacing)), + fSpacing(BControlLook::ComposeSpacing(spacing)), fSplitterItems(), fVisibleItems(), @@ -268,10 +268,10 @@ BSplitLayout::~BSplitLayout() void BSplitLayout::SetInsets(float left, float top, float right, float bottom) { - fLeftInset = BControlLook::ComposeItemSpacing(left); - fTopInset = BControlLook::ComposeItemSpacing(top); - fRightInset = BControlLook::ComposeItemSpacing(right); - fBottomInset = BControlLook::ComposeItemSpacing(bottom); + fLeftInset = BControlLook::ComposeSpacing(left); + fTopInset = BControlLook::ComposeSpacing(top); + fRightInset = BControlLook::ComposeSpacing(right); + fBottomInset = BControlLook::ComposeSpacing(bottom); InvalidateLayout(); } @@ -302,7 +302,7 @@ BSplitLayout::Spacing() const void BSplitLayout::SetSpacing(float spacing) { - spacing = BControlLook::ComposeItemSpacing(spacing); + spacing = BControlLook::ComposeSpacing(spacing); if (spacing != fSpacing) { fSpacing = spacing; diff --git a/src/kits/interface/TwoDimensionalLayout.cpp b/src/kits/interface/TwoDimensionalLayout.cpp index e6219610c7..f2e0731f26 100644 --- a/src/kits/interface/TwoDimensionalLayout.cpp +++ b/src/kits/interface/TwoDimensionalLayout.cpp @@ -285,10 +285,10 @@ void BTwoDimensionalLayout::SetInsets(float left, float top, float right, float bottom) { - fLeftInset = BControlLook::ComposeItemSpacing(left); - fTopInset = BControlLook::ComposeItemSpacing(top); - fRightInset = BControlLook::ComposeItemSpacing(right); - fBottomInset = BControlLook::ComposeItemSpacing(bottom); + fLeftInset = BControlLook::ComposeSpacing(left); + fTopInset = BControlLook::ComposeSpacing(top); + fRightInset = BControlLook::ComposeSpacing(right); + fBottomInset = BControlLook::ComposeSpacing(bottom); InvalidateLayout(); }