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
enum {
B_KNOB_STYLE_NONE = 0,
B_KNOB_STYLE_DOTS,
B_KNOB_STYLE_LINES
};
class BScrollBar : public BView {
public:
BScrollBar(BRect frame, const char* name,
-63
View File
@@ -1153,69 +1153,6 @@ BScrollBar::Draw(BRect updateRect)
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,
int32 knobStyle, BMessage* message)
BMessage* message)
:
BControl("FakeScrollBar", NULL, message, B_WILL_DRAW | B_NAVIGABLE),
fDrawArrows(drawArrows),
fDoubleArrows(doubleArrows),
fKnobStyle(knobStyle)
fDoubleArrows(doubleArrows)
{
SetExplicitMinSize(BSize(160, 20));
SetExplicitMaxSize(BSize(B_SIZE_UNLIMITED, 20));
@@ -142,42 +141,6 @@ FakeScrollBar::Draw(BRect updateRect)
// fill the clickable surface of the thumb
be_control_look->DrawButtonBackground(this, bgRect, updateRect,
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 {
public:
FakeScrollBar(bool drawArrows, bool doubleArrows,
int32 knobStyle, BMessage* message);
BMessage* message);
~FakeScrollBar(void);
virtual void MouseDown(BPoint point);
@@ -16,6 +16,7 @@
#include <stdlib.h>
#include <Alert.h>
#include <Alignment.h>
#include <Box.h>
#include <Button.h>
#include <Catalog.h>
@@ -28,7 +29,6 @@
#include <MenuField.h>
#include <MenuItem.h>
#include <PopUpMenu.h>
#include <RadioButton.h>
#include <ScrollBar.h>
#include <StringView.h>
#include <Size.h>
@@ -79,15 +79,15 @@ LookAndFeelSettingsView::LookAndFeelSettingsView(const char* name)
fDecorInfoButton = new BButton(B_TRANSLATE("About"),
new BMessage(kMsgDecorInfo));
// scrollbar arrow style
// scroll bar arrow style
BBox* arrowStyleBox = new BBox("arrow style");
arrowStyleBox->SetLabel(B_TRANSLATE("Arrow style"));
fSavedDoubleArrowsValue = _DoubleScrollBarArrows();
fArrowStyleSingle = new FakeScrollBar(true, false, B_KNOB_STYLE_LINES,
fArrowStyleSingle = new FakeScrollBar(true, false,
new BMessage(kMsgArrowStyleSingle));
fArrowStyleDouble = new FakeScrollBar(true, true, B_KNOB_STYLE_LINES,
fArrowStyleDouble = new FakeScrollBar(true, true,
new BMessage(kMsgArrowStyleDouble));
BView* arrowStyleView;
@@ -98,39 +98,18 @@ LookAndFeelSettingsView::LookAndFeelSettingsView(const char* name)
.Add(new BStringView("spacer", ""))
.Add(new BStringView("double", B_TRANSLATE("Double:")))
.Add(fArrowStyleDouble)
.Add(BSpaceLayoutItem::CreateVerticalStrut(0))
.SetInsets(B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING,
B_USE_DEFAULT_SPACING, B_USE_DEFAULT_SPACING)
.End()
.View();
arrowStyleBox->AddChild(arrowStyleView);
arrowStyleBox->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
B_ALIGN_VERTICAL_CENTER));
// scrollbar knob style
fSavedKnobStyleValue = _ScrollBarKnobStyle();
BBox* knobStyleBox = new BBox("knob style");
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);
BStringView* scrollBarLabel
= new BStringView("scroll bar", "Scroll bar:");
scrollBarLabel->SetExplicitAlignment(
BAlignment(B_ALIGN_LEFT, B_ALIGN_TOP));
SetLayout(new BGroupLayout(B_VERTICAL));
@@ -143,10 +122,9 @@ LookAndFeelSettingsView::LookAndFeelSettingsView(const char* name)
.Add(fDecorMenuField->CreateMenuBarLayoutItem(), 1, 0)
.Add(fDecorInfoButton, 2, 0)
)
.Add(new BStringView("label", B_TRANSLATE("Scroll bars:")))
.AddGroup(B_HORIZONTAL, B_USE_DEFAULT_SPACING)
.Add(scrollBarLabel)
.Add(arrowStyleBox)
.Add(knobStyleBox)
.End()
.AddGlue()
.End()
@@ -174,28 +152,11 @@ LookAndFeelSettingsView::AttachedToWindow()
fDecorInfoButton->SetTarget(this);
fArrowStyleSingle->SetTarget(this);
fArrowStyleDouble->SetTarget(this);
fKnobStyleNone->SetTarget(this);
fKnobStyleDots->SetTarget(this);
fKnobStyleLines->SetTarget(this);
if (fSavedDoubleArrowsValue)
fArrowStyleDouble->SetValue(B_CONTROL_ON);
else
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);
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:
BView::MessageReceived(msg);
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
LookAndFeelSettingsView::IsDefaultable()
{
return fCurrentDecor != fDecorUtility.DefaultDecorator()->Name()
|| _DoubleScrollBarArrows() != false
|| _ScrollBarKnobStyle() != B_KNOB_STYLE_DOTS;
|| _DoubleScrollBarArrows() != false;
}
@@ -410,7 +321,6 @@ LookAndFeelSettingsView::SetDefaults()
{
_SetDecor(fDecorUtility.DefaultDecorator());
_SetDoubleScrollBarArrows(false);
_SetScrollBarKnobStyle(B_KNOB_STYLE_DOTS);
}
@@ -418,8 +328,7 @@ bool
LookAndFeelSettingsView::IsRevertable()
{
return fCurrentDecor != fSavedDecor
|| _DoubleScrollBarArrows() != fSavedDoubleArrowsValue
|| _ScrollBarKnobStyle() != fSavedKnobStyleValue;
|| _DoubleScrollBarArrows() != fSavedDoubleArrowsValue;
}
@@ -427,6 +336,5 @@ void
LookAndFeelSettingsView::Revert()
{
_SetDecor(fSavedDecor);
_SetScrollBarKnobStyle(fSavedKnobStyleValue);
_SetDoubleScrollBarArrows(fSavedDoubleArrowsValue);
}
@@ -48,9 +48,6 @@ private:
bool _DoubleScrollBarArrows();
void _SetDoubleScrollBarArrows(bool doubleArrows);
int32 _ScrollBarKnobStyle();
void _SetScrollBarKnobStyle(int32 knobStyle);
private:
DecorInfoUtility fDecorUtility;
@@ -61,15 +58,10 @@ private:
FakeScrollBar* fArrowStyleSingle;
FakeScrollBar* fArrowStyleDouble;
FakeScrollBar* fKnobStyleNone;
FakeScrollBar* fKnobStyleDots;
FakeScrollBar* fKnobStyleLines;
BString fSavedDecor;
BString fCurrentDecor;
bool fSavedDoubleArrowsValue;
int32 fSavedKnobStyleValue;
};
#endif // LOOK_AND_FEEL_SETTINGS_VIEW_H