Remove the scroll bar knobs and corresponding setting

This commit is contained in:
John Scipione
2012-11-04 15:37:57 -05:00
parent 4e3d346e91
commit b5446310e9
6 changed files with 16 additions and 223 deletions
-7
View File
@@ -19,13 +19,6 @@
#define DISABLES_ON_WINDOW_DEACTIVATION 1 #define DISABLES_ON_WINDOW_DEACTIVATION 1
enum {
B_KNOB_STYLE_NONE = 0,
B_KNOB_STYLE_DOTS,
B_KNOB_STYLE_LINES
};
class BScrollBar : public BView { class BScrollBar : public BView {
public: public:
BScrollBar(BRect frame, const char* name, BScrollBar(BRect frame, const char* name,
-63
View File
@@ -1153,69 +1153,6 @@ BScrollBar::Draw(BRect updateRect)
FillRect(rect); FillRect(rect);
} }
} }
if (fPrivateData->fScrollBarInfo.knob == B_KNOB_STYLE_NONE)
return;
// draw the scrollbar thumb knobs
bool square = fPrivateData->fScrollBarInfo.knob == B_KNOB_STYLE_DOTS;
int32 knobWidth = 0;
int32 knobHeight = 0;
if (square) {
knobWidth = 2;
knobHeight = 2;
} else {
knobWidth = 1;
knobHeight = 3;
}
int32 flags = 0;
if (!enabled)
flags |= BControlLook::B_DISABLED;
float hmiddle = rect.Width() / 2;
float vmiddle = rect.Height() / 2;
BRect middleKnob = BRect(
rect.left + hmiddle
- (fOrientation == B_HORIZONTAL ? knobWidth : knobHeight),
rect.top + vmiddle
- (fOrientation == B_HORIZONTAL ? knobHeight : knobWidth),
rect.left + hmiddle
+ (fOrientation == B_HORIZONTAL ? knobWidth : knobHeight),
rect.top + vmiddle
+ (fOrientation == B_HORIZONTAL ? knobHeight : knobWidth));
if (fOrientation == B_HORIZONTAL) {
BRect leftKnob = middleKnob.OffsetByCopy(knobWidth * -4, 0);
if (leftKnob.left > rect.left + knobWidth) {
be_control_look->DrawButtonBackground(this, leftKnob, updateRect,
normal, flags, BControlLook::B_ALL_BORDERS, fOrientation);
}
BRect rightKnob = middleKnob.OffsetByCopy(knobWidth * 4, 0);
if (rightKnob.right < rect.right - knobWidth) {
be_control_look->DrawButtonBackground(this, rightKnob, updateRect,
normal, flags, BControlLook::B_ALL_BORDERS, fOrientation);
}
} else {
BRect topKnob = middleKnob.OffsetByCopy(0, knobWidth * -4);
if (topKnob.top > rect.top + knobHeight) {
be_control_look->DrawButtonBackground(this, topKnob, updateRect,
normal, flags, BControlLook::B_ALL_BORDERS, fOrientation);
}
BRect bottomKnob = middleKnob.OffsetByCopy(0, knobWidth * 4);
if (bottomKnob.bottom < rect.bottom - knobHeight) {
be_control_look->DrawButtonBackground(this, bottomKnob, updateRect,
normal, flags, BControlLook::B_ALL_BORDERS, fOrientation);
}
}
// draw middle knob last because it modifies middleKnob
be_control_look->DrawButtonBackground(this, middleKnob, updateRect,
normal, flags, BControlLook::B_ALL_BORDERS, fOrientation);
} }
+2 -39
View File
@@ -29,12 +29,11 @@ typedef enum {
FakeScrollBar::FakeScrollBar(bool drawArrows, bool doubleArrows, FakeScrollBar::FakeScrollBar(bool drawArrows, bool doubleArrows,
int32 knobStyle, BMessage* message) BMessage* message)
: :
BControl("FakeScrollBar", NULL, message, B_WILL_DRAW | B_NAVIGABLE), BControl("FakeScrollBar", NULL, message, B_WILL_DRAW | B_NAVIGABLE),
fDrawArrows(drawArrows), fDrawArrows(drawArrows),
fDoubleArrows(doubleArrows), fDoubleArrows(doubleArrows)
fKnobStyle(knobStyle)
{ {
SetExplicitMinSize(BSize(160, 20)); SetExplicitMinSize(BSize(160, 20));
SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, 20)); SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, 20));
@@ -142,42 +141,6 @@ FakeScrollBar::Draw(BRect updateRect)
// fill the clickable surface of the thumb // fill the clickable surface of the thumb
be_control_look->DrawButtonBackground(this, bgRect, updateRect, be_control_look->DrawButtonBackground(this, bgRect, updateRect,
normal, 0, BControlLook::B_ALL_BORDERS, B_HORIZONTAL); normal, 0, BControlLook::B_ALL_BORDERS, B_HORIZONTAL);
if (fKnobStyle == B_KNOB_STYLE_NONE)
return;
// draw the scrollbar thumb knobs
bool square = fKnobStyle == B_KNOB_STYLE_DOTS;
int32 knobWidth = 0;
int32 knobHeight = 0;
if (square) {
knobWidth = 2;
knobHeight = 2;
} else {
knobWidth = 1;
knobHeight = 3;
}
float hmiddle = bgRect.Width() / 2;
float vmiddle = bgRect.Height() / 2;
BRect middleKnob = BRect(bgRect.left + hmiddle - knobWidth,
bgRect.top + vmiddle - knobHeight,
bgRect.left + hmiddle + knobWidth,
bgRect.top + vmiddle + knobHeight);
BRect leftKnob = middleKnob.OffsetByCopy(knobWidth * -4, 0);
be_control_look->DrawButtonBackground(this, leftKnob, updateRect,
normal, 0, BControlLook::B_ALL_BORDERS, B_HORIZONTAL);
BRect rightKnob = middleKnob.OffsetByCopy(knobWidth * 4, 0);
be_control_look->DrawButtonBackground(this, rightKnob, updateRect,
normal, 0, BControlLook::B_ALL_BORDERS, B_HORIZONTAL);
// draw middle knob last because it modifies middleKnob
be_control_look->DrawButtonBackground(this, middleKnob, updateRect,
normal, 0, BControlLook::B_ALL_BORDERS, B_HORIZONTAL);
} }
+1 -1
View File
@@ -16,7 +16,7 @@
class FakeScrollBar : public BControl { class FakeScrollBar : public BControl {
public: public:
FakeScrollBar(bool drawArrows, bool doubleArrows, FakeScrollBar(bool drawArrows, bool doubleArrows,
int32 knobStyle, BMessage* message); BMessage* message);
~FakeScrollBar(void); ~FakeScrollBar(void);
virtual void MouseDown(BPoint point); virtual void MouseDown(BPoint point);
@@ -16,6 +16,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <Alert.h> #include <Alert.h>
#include <Alignment.h>
#include <Box.h> #include <Box.h>
#include <Button.h> #include <Button.h>
#include <Catalog.h> #include <Catalog.h>
@@ -28,7 +29,6 @@
#include <MenuField.h> #include <MenuField.h>
#include <MenuItem.h> #include <MenuItem.h>
#include <PopUpMenu.h> #include <PopUpMenu.h>
#include <RadioButton.h>
#include <ScrollBar.h> #include <ScrollBar.h>
#include <StringView.h> #include <StringView.h>
#include <Size.h> #include <Size.h>
@@ -79,15 +79,15 @@ LookAndFeelSettingsView::LookAndFeelSettingsView(const char* name)
fDecorInfoButton = new BButton(B_TRANSLATE("About"), fDecorInfoButton = new BButton(B_TRANSLATE("About"),
new BMessage(kMsgDecorInfo)); new BMessage(kMsgDecorInfo));
// scrollbar arrow style // scroll bar arrow style
BBox* arrowStyleBox = new BBox("arrow style"); BBox* arrowStyleBox = new BBox("arrow style");
arrowStyleBox->SetLabel(B_TRANSLATE("Arrow style")); arrowStyleBox->SetLabel(B_TRANSLATE("Arrow style"));
fSavedDoubleArrowsValue = _DoubleScrollBarArrows(); fSavedDoubleArrowsValue = _DoubleScrollBarArrows();
fArrowStyleSingle = new FakeScrollBar(true, false, B_KNOB_STYLE_LINES, fArrowStyleSingle = new FakeScrollBar(true, false,
new BMessage(kMsgArrowStyleSingle)); new BMessage(kMsgArrowStyleSingle));
fArrowStyleDouble = new FakeScrollBar(true, true, B_KNOB_STYLE_LINES, fArrowStyleDouble = new FakeScrollBar(true, true,
new BMessage(kMsgArrowStyleDouble)); new BMessage(kMsgArrowStyleDouble));
BView* arrowStyleView; BView* arrowStyleView;
@@ -98,39 +98,18 @@ LookAndFeelSettingsView::LookAndFeelSettingsView(const char* name)
.Add(new BStringView("spacer", "")) .Add(new BStringView("spacer", ""))
.Add(new BStringView("double", B_TRANSLATE("Double:"))) .Add(new BStringView("double", B_TRANSLATE("Double:")))
.Add(fArrowStyleDouble) .Add(fArrowStyleDouble)
.Add(BSpaceLayoutItem::CreateVerticalStrut(0))
.SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING, .SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING,
B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING) B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING)
.End() .End()
.View(); .View();
arrowStyleBox->AddChild(arrowStyleView); arrowStyleBox->AddChild(arrowStyleView);
arrowStyleBox->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
B_ALIGN_VERTICAL_CENTER));
// scrollbar knob style BStringView* scrollBarLabel
fSavedKnobStyleValue = _ScrollBarKnobStyle(); = new BStringView("scroll bar", "Scroll bar:");
scrollBarLabel->SetExplicitAlignment(
BBox* knobStyleBox = new BBox("knob style"); BAlignment(B_ALIGN_LEFT, B_ALIGN_TOP));
knobStyleBox->SetLabel(B_TRANSLATE("Knob style"));
fKnobStyleNone = new FakeScrollBar(false, false, B_KNOB_STYLE_NONE,
new BMessage(kMsgKnobStyleNone));
fKnobStyleDots = new FakeScrollBar(false, false, B_KNOB_STYLE_DOTS,
new BMessage(kMsgKnobStyleDots));
fKnobStyleLines = new FakeScrollBar(false, false, B_KNOB_STYLE_LINES,
new BMessage(kMsgKnobStyleLines));
BView* knobStyleView;
knobStyleView = BLayoutBuilder::Group<>()
.AddGroup(B_VERTICAL, 0)
.Add(fKnobStyleNone)
.Add(new BStringView("spacer", ""))
.Add(fKnobStyleDots)
.Add(new BStringView("spacer", ""))
.Add(fKnobStyleLines)
.SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING,
B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING)
.End()
.View();
knobStyleBox->AddChild(knobStyleView);
SetLayout(new BGroupLayout(B_VERTICAL)); SetLayout(new BGroupLayout(B_VERTICAL));
@@ -143,10 +122,9 @@ LookAndFeelSettingsView::LookAndFeelSettingsView(const char* name)
.Add(fDecorMenuField->CreateMenuBarLayoutItem(), 1, 0) .Add(fDecorMenuField->CreateMenuBarLayoutItem(), 1, 0)
.Add(fDecorInfoButton, 2, 0) .Add(fDecorInfoButton, 2, 0)
) )
.Add(new BStringView("label", B_TRANSLATE("Scroll bars:")))
.AddGroup(B_HORIZONTAL, B_USE_DEFAULT_SPACING) .AddGroup(B_HORIZONTAL, B_USE_DEFAULT_SPACING)
.Add(scrollBarLabel)
.Add(arrowStyleBox) .Add(arrowStyleBox)
.Add(knobStyleBox)
.End() .End()
.AddGlue() .AddGlue()
.End() .End()
@@ -174,28 +152,11 @@ LookAndFeelSettingsView::AttachedToWindow()
fDecorInfoButton->SetTarget(this); fDecorInfoButton->SetTarget(this);
fArrowStyleSingle->SetTarget(this); fArrowStyleSingle->SetTarget(this);
fArrowStyleDouble->SetTarget(this); fArrowStyleDouble->SetTarget(this);
fKnobStyleNone->SetTarget(this);
fKnobStyleDots->SetTarget(this);
fKnobStyleLines->SetTarget(this);
if (fSavedDoubleArrowsValue) if (fSavedDoubleArrowsValue)
fArrowStyleDouble->SetValue(B_CONTROL_ON); fArrowStyleDouble->SetValue(B_CONTROL_ON);
else else
fArrowStyleSingle->SetValue(B_CONTROL_ON); fArrowStyleSingle->SetValue(B_CONTROL_ON);
switch (fSavedKnobStyleValue) {
case B_KNOB_STYLE_NONE:
fKnobStyleNone->SetValue(B_CONTROL_ON);
break;
case B_KNOB_STYLE_DOTS:
fKnobStyleDots->SetValue(B_CONTROL_ON);
break;
case B_KNOB_STYLE_LINES:
fKnobStyleLines->SetValue(B_CONTROL_ON);
break;
}
} }
@@ -248,18 +209,6 @@ LookAndFeelSettingsView::MessageReceived(BMessage *msg)
_SetDoubleScrollBarArrows(true); _SetDoubleScrollBarArrows(true);
break; break;
case kMsgKnobStyleNone:
_SetScrollBarKnobStyle(B_KNOB_STYLE_NONE);
break;
case kMsgKnobStyleDots:
_SetScrollBarKnobStyle(B_KNOB_STYLE_DOTS);
break;
case kMsgKnobStyleLines:
_SetScrollBarKnobStyle(B_KNOB_STYLE_LINES);
break;
default: default:
BView::MessageReceived(msg); BView::MessageReceived(msg);
break; break;
@@ -359,49 +308,11 @@ LookAndFeelSettingsView::_SetDoubleScrollBarArrows(bool doubleArrows)
} }
int32
LookAndFeelSettingsView::_ScrollBarKnobStyle()
{
scroll_bar_info info;
get_scroll_bar_info(&info);
return info.knob;
}
void
LookAndFeelSettingsView::_SetScrollBarKnobStyle(int32 knobStyle)
{
scroll_bar_info info;
get_scroll_bar_info(&info);
info.knob = knobStyle;
set_scroll_bar_info(&info);
switch (knobStyle) {
case B_KNOB_STYLE_NONE:
fKnobStyleNone->SetValue(B_CONTROL_ON);
break;
case B_KNOB_STYLE_DOTS:
fKnobStyleDots->SetValue(B_CONTROL_ON);
break;
case B_KNOB_STYLE_LINES:
fKnobStyleLines->SetValue(B_CONTROL_ON);
break;
}
Window()->PostMessage(kMsgUpdate);
}
bool bool
LookAndFeelSettingsView::IsDefaultable() LookAndFeelSettingsView::IsDefaultable()
{ {
return fCurrentDecor != fDecorUtility.DefaultDecorator()->Name() return fCurrentDecor != fDecorUtility.DefaultDecorator()->Name()
|| _DoubleScrollBarArrows() != false || _DoubleScrollBarArrows() != false;
|| _ScrollBarKnobStyle() != B_KNOB_STYLE_DOTS;
} }
@@ -410,7 +321,6 @@ LookAndFeelSettingsView::SetDefaults()
{ {
_SetDecor(fDecorUtility.DefaultDecorator()); _SetDecor(fDecorUtility.DefaultDecorator());
_SetDoubleScrollBarArrows(false); _SetDoubleScrollBarArrows(false);
_SetScrollBarKnobStyle(B_KNOB_STYLE_DOTS);
} }
@@ -418,8 +328,7 @@ bool
LookAndFeelSettingsView::IsRevertable() LookAndFeelSettingsView::IsRevertable()
{ {
return fCurrentDecor != fSavedDecor return fCurrentDecor != fSavedDecor
|| _DoubleScrollBarArrows() != fSavedDoubleArrowsValue || _DoubleScrollBarArrows() != fSavedDoubleArrowsValue;
|| _ScrollBarKnobStyle() != fSavedKnobStyleValue;
} }
@@ -427,6 +336,5 @@ void
LookAndFeelSettingsView::Revert() LookAndFeelSettingsView::Revert()
{ {
_SetDecor(fSavedDecor); _SetDecor(fSavedDecor);
_SetScrollBarKnobStyle(fSavedKnobStyleValue);
_SetDoubleScrollBarArrows(fSavedDoubleArrowsValue); _SetDoubleScrollBarArrows(fSavedDoubleArrowsValue);
} }
@@ -48,9 +48,6 @@ private:
bool _DoubleScrollBarArrows(); bool _DoubleScrollBarArrows();
void _SetDoubleScrollBarArrows(bool doubleArrows); void _SetDoubleScrollBarArrows(bool doubleArrows);
int32 _ScrollBarKnobStyle();
void _SetScrollBarKnobStyle(int32 knobStyle);
private: private:
DecorInfoUtility fDecorUtility; DecorInfoUtility fDecorUtility;
@@ -61,15 +58,10 @@ private:
FakeScrollBar* fArrowStyleSingle; FakeScrollBar* fArrowStyleSingle;
FakeScrollBar* fArrowStyleDouble; FakeScrollBar* fArrowStyleDouble;
FakeScrollBar* fKnobStyleNone;
FakeScrollBar* fKnobStyleDots;
FakeScrollBar* fKnobStyleLines;
BString fSavedDecor; BString fSavedDecor;
BString fCurrentDecor; BString fCurrentDecor;
bool fSavedDoubleArrowsValue; bool fSavedDoubleArrowsValue;
int32 fSavedKnobStyleValue;
}; };
#endif // LOOK_AND_FEEL_SETTINGS_VIEW_H #endif // LOOK_AND_FEEL_SETTINGS_VIEW_H