Remove the scroll bar knobs and corresponding setting
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user