* Applied patch by hamish to fix layouting the clock.

* This closes #7937, thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42663 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2011-08-21 16:24:19 +00:00
parent cd73cccda7
commit 4e7d39f00f
2 changed files with 11 additions and 12 deletions
+7 -8
View File
@@ -98,7 +98,7 @@ TAnalogClock::MouseDown(BPoint point)
BView::MouseDown(point);
return;
}
if (InMinuteHand(point)) {
fMinuteDragging = true;
fDirty = true;
@@ -124,7 +124,7 @@ TAnalogClock::MouseUp(BPoint point)
BView::MouseUp(point);
return;
}
if (fHourDragging || fMinuteDragging) {
int32 hour, minute, second;
GetTime(&hour, &minute, &second);
@@ -160,7 +160,7 @@ TAnalogClock::MouseMoved(BPoint point, uint32 transit, const BMessage* message)
void
TAnalogClock::FrameResized(float, float)
TAnalogClock::DoLayout()
{
BRect bounds = Bounds();
@@ -168,8 +168,7 @@ TAnalogClock::FrameResized(float, float)
// (important when drawing with B_SUBPIXEL_PRECISE)
fCenterX = floorf((bounds.left + bounds.right) / 2 + 0.5) + 0.5;
fCenterY = floorf((bounds.top + bounds.bottom) / 2 + 0.5) + 0.5;
fRadius = floorf((MIN(bounds.Width(), bounds.Height()) / 2.0)) - 2.5;
fRadius -= 3;
fRadius = floorf((MIN(bounds.Width(), bounds.Height()) / 2.0)) - 5.5;
}
@@ -202,7 +201,7 @@ TAnalogClock::SetTime(int32 hour, int32 minute, int32 second)
// don't set the time if the hands are in a drag action
if (fHourDragging || fMinuteDragging || fTimeChangeIsOngoing)
return;
if (fHours == hour && fMinutes == minute && fSeconds == second)
return;
@@ -254,7 +253,7 @@ TAnalogClock::DrawClock()
rgb_color background = ui_color(B_PANEL_BACKGROUND_COLOR);
SetHighColor(background);
FillRect(bounds);
bounds.Set(fCenterX - fRadius, fCenterY - fRadius,
fCenterX + fRadius, fCenterY + fRadius);
@@ -459,7 +458,7 @@ TAnalogClock::_DrawHands(float x, float y, float radius,
offsetY = (radius * 0.95) * cosf((fSeconds * M_PI) / 30.0);
StrokeLine(BPoint(x, y), BPoint(x + offsetX, y - offsetY));
}
// draw the center knob
SetHighColor(knobColor);
FillEllipse(BPoint(x, y), radius * 0.06, radius * 0.06);
+4 -4
View File
@@ -27,8 +27,8 @@ public:
virtual void MouseUp(BPoint point);
virtual void MouseMoved(BPoint point, uint32 transit,
const BMessage* message);
virtual void FrameResized(float, float);
virtual void DoLayout();
virtual BSize MaxSize();
virtual BSize MinSize();
virtual BSize PreferredSize();
@@ -60,7 +60,7 @@ private:
int32 fMinutes;
int32 fSeconds;
bool fDirty;
float fCenterX;
float fCenterY;
float fRadius;
@@ -70,7 +70,7 @@ private:
bool fDrawSecondHand;
bool fInteractive;
bool fTimeChangeIsOngoing;
bool fTimeChangeIsOngoing;
};