void BButton::MouseDown(BPoint point) { if (!IsEnabled()) return; SetValue(B_CONTROL_ON); if (Window()->Flags() & B_ASYNCHRONOUS_CONTROLS) { SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS); } else { BRect bounds = Bounds(); uint32 buttons; do { Window()->UpdateIfNeeded(); snooze(40000); GetMouse(&point, &buttons, true); bool inside = bounds.Contains(point); if ((Value() == B_CONTROL_ON) != inside) SetValue(inside ? B_CONTROL_ON : B_CONTROL_OFF); } while (buttons != 0); if (Value() == B_CONTROL_ON) Invoke(); } }
void CollapsableBox::MouseDown(BPoint where) { if (!IsEnabled()) return; Window()->Activate(); uint32 buttons; GetMouse(&where, &buttons); if ((buttons & B_PRIMARY_MOUSE_BUTTON) == 0) return; if (! m_collapsed_rect.Contains(where)) return; m_click = where; SetMouseEventMask(B_POINTER_EVENTS, B_SUSPEND_VIEW_FOCUS | B_LOCK_WINDOW_FOCUS | B_NO_POINTER_HISTORY); SetTracking(true); m_pressing = true; Draw(Bounds()); Flush(); }
//! Track the mouse without blocking the window void CPUButton::MouseDown(BPoint point) { BPoint mousePosition; uint32 mouseButtons; GetMouse(&mousePosition, &mouseButtons); if ((B_PRIMARY_MOUSE_BUTTON & mouseButtons) != 0) { SetValue(!Value()); SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS); } else if ((B_SECONDARY_MOUSE_BUTTON & mouseButtons) != 0 && fReplicantInDeskbar) { BPopUpMenu *menu = new BPopUpMenu(B_TRANSLATE("Deskbar menu")); menu->AddItem(new BMenuItem(B_TRANSLATE("About Pulse" B_UTF8_ELLIPSIS), new BMessage(B_ABOUT_REQUESTED))); menu->AddSeparatorItem(); menu->AddItem(new BMenuItem(B_TRANSLATE("Remove replicant"), new BMessage(kDeleteReplicant))); menu->SetTargetForItems(this); ConvertToScreen(&point); menu->Go(point, true, true, true); } }
void BButton::MouseDown(BPoint point) { if (!IsEnabled()) return; if (fBehavior == B_POP_UP_BEHAVIOR && _PopUpRect().Contains(point)) { InvokeNotify(fPopUpMessage, B_CONTROL_MODIFIED); return; } bool toggleBehavior = fBehavior == B_TOGGLE_BEHAVIOR; if (toggleBehavior) { bool wasPressed = Value() == B_CONTROL_ON; _SetFlag(FLAG_WAS_PRESSED, wasPressed); SetValue(wasPressed ? B_CONTROL_OFF : B_CONTROL_ON); Invalidate(); } else SetValue(B_CONTROL_ON); if (Window()->Flags() & B_ASYNCHRONOUS_CONTROLS) { SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS); } else { BRect bounds = Bounds(); uint32 buttons; bool inside = false; do { Window()->UpdateIfNeeded(); snooze(40000); GetMouse(&point, &buttons, true); inside = bounds.Contains(point); if (toggleBehavior) { bool pressed = inside ^ _Flag(FLAG_WAS_PRESSED); SetValue(pressed ? B_CONTROL_ON : B_CONTROL_OFF); } else { if ((Value() == B_CONTROL_ON) != inside) SetValue(inside ? B_CONTROL_ON : B_CONTROL_OFF); } } while (buttons != 0); if (inside) { if (toggleBehavior) { SetValue( _Flag(FLAG_WAS_PRESSED) ? B_CONTROL_OFF : B_CONTROL_ON); } Invoke(); } else if (_Flag(FLAG_FLAT)) Invalidate(); } }
//! This one calls _Update() if needed; BControl::SetTracking() isn't virtual. void BIconButton::_SetTracking(bool tracking) { if (IsTracking() == tracking) return; SetTracking(tracking); _Update(); }
void VolumeSlider::MouseDown(BPoint point) { if (!fSoundPlayer || !Bounds().InsetBySelf(2,2).Contains(point)) return; _UpdateVolume(point); SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS); }
void CPUButton::MouseUp(BPoint point) { if (IsTracking()) { if (Bounds().Contains(point)) Invoke(); SetTracking(false); } }
void TransportButton::MouseUp(BPoint point) { if (IsTracking()) { if (Bounds().Contains(point)) MouseDonePressing(); else MouseCancelPressing(); SetTracking(false); } }
void TransportButton::MouseDown(BPoint) { if (!IsEnabled()) return; ASSERT(Window()->Flags() & B_ASYNCHRONOUS_CONTROLS); SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS); MouseStartPressing(); }
void BSlider::MouseUp(BPoint point) { if (IsTracking()) { if (_Location() != fInitialLocation) Invoke(); SetTracking(false); } else BControl::MouseUp(point); }
void BButton::MouseUp(BPoint point) { if (!IsTracking()) return; if (Bounds().Contains(point)) Invoke(); SetTracking(false); }
void BChannelSlider::MouseUp(BPoint where) { if (IsEnabled() && IsTracking()) { _FinishChange(); SetTracking(false); fAllChannels = false; fCurrentChannel = -1; fMinPoint = 0; } else { BChannelControl::MouseUp(where); } }
void VolumeSlider::MouseUp(BPoint point) { if (!IsTracking()) return; if (fSoundPlayer && Bounds().InsetBySelf(2,2).Contains(point)) { _UpdateVolume(point); } Invoke(); SetTracking(false); Draw(Bounds()); Flush(); }
void UpDownButton::MouseDown(BPoint point) { if(!IsEnabled()) return; fLastValue = Value(); fTrackingY = (Bounds().top + Bounds().Height()/2); SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS); SetValue(Value() == B_CONTROL_ON ? B_CONTROL_OFF : B_CONTROL_ON); }
void BButton::MouseUp(BPoint where) { if (!IsTracking()) return; if (Bounds().Contains(where)) { if (fBehavior == B_TOGGLE_BEHAVIOR) SetValue(_Flag(FLAG_WAS_PRESSED) ? B_CONTROL_OFF : B_CONTROL_ON); Invoke(); } else if (_Flag(FLAG_FLAT)) Invalidate(); SetTracking(false); }
void BRadioButton::MouseUp(BPoint point) { if (!IsTracking()) return; fOutlined = Bounds().Contains(point); if (fOutlined) { fOutlined = false; SetValue(B_CONTROL_ON); Invoke(); } Invalidate(); SetTracking(false); }
void BPictureButton::MouseUp(BPoint point) { if (IsEnabled() && IsTracking()) { if (Bounds().Contains(point)) { if (fBehavior == B_ONE_STATE_BUTTON) { if (Value() == B_CONTROL_ON) { snooze(75000); SetValue(B_CONTROL_OFF); } } Invoke(); } SetTracking(false); } }
void CollapsableBox::MouseUp(BPoint where) { if (!IsTracking()) return; bool inside = m_collapsed_rect.Contains(where); if (inside) SetValue(Value() == B_CONTROL_OFF ? B_CONTROL_ON : B_CONTROL_OFF); else { Draw(Bounds()); Flush(); }; m_pressing = false; SetTracking(false); SetMouseEventMask(0, 0); }
void UpDownButton::MouseUp(BPoint point) { if (!IsTracking()) return; if((Bounds().top + Bounds().Height()/2) > (fTrackingY + 3)) SetValue(B_CONTROL_ON); else if((Bounds().top + Bounds().Height()/2) < (fTrackingY - 3)) SetValue(B_CONTROL_OFF); if(Value()!=fLastValue) Invoke(); SetTracking(false); Draw(Bounds()); Flush(); fLastValue = Value(); }
void BSlider::MouseDown(BPoint point) { if (!IsEnabled()) return; if (BarFrame().Contains(point) || ThumbFrame().Contains(point)) fInitialLocation = _Location(); uint32 buttons; GetMouse(&point, &buttons, true); _ConstrainPoint(point, fInitialLocation); SetValue(ValueForPoint(point)); if (_Location() != fInitialLocation) InvokeNotify(ModificationMessage(), B_CONTROL_MODIFIED); if (Window()->Flags() & B_ASYNCHRONOUS_CONTROLS) { SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS | B_NO_POINTER_HISTORY); } else { // synchronous mouse tracking BPoint prevPoint; while (buttons) { prevPoint = point; snooze(SnoozeAmount()); GetMouse(&point, &buttons, true); if (_ConstrainPoint(point, prevPoint)) { int32 value = ValueForPoint(point); if (value != Value()) { SetValue(value); InvokeNotify(ModificationMessage(), B_CONTROL_MODIFIED); } } } if (_Location() != fInitialLocation) Invoke(); } }
void BRadioButton::MouseDown(BPoint point) { if (!IsEnabled()) return; fOutlined = true; if (Window()->Flags() & B_ASYNCHRONOUS_CONTROLS) { Invalidate(); SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS); } else { _Redraw(); BRect bounds = Bounds(); uint32 buttons; do { snooze(40000); GetMouse(&point, &buttons, true); bool inside = bounds.Contains(point); if (fOutlined != inside) { fOutlined = inside; _Redraw(); } } while (buttons != 0); if (fOutlined) { fOutlined = false; _Redraw(); SetValue(B_CONTROL_ON); Invoke(); } else { _Redraw(); } } }
void VolumeSlider::MouseMoved(BPoint point, uint32 transit, const BMessage *message) { if (!IsTracking()) return; uint32 mouseButtons; BPoint where; GetMouse(&where, &mouseButtons, true); // button not pressed, exit if (! (mouseButtons & B_PRIMARY_MOUSE_BUTTON)) { Invoke(); SetTracking(false); } if (!fSoundPlayer || !Bounds().InsetBySelf(2,2).Contains(point)) return; _UpdateVolume(point); }
void BPictureButton::MouseDown(BPoint point) { if (!IsEnabled()) { BControl::MouseDown(point); return; } SetMouseEventMask(B_POINTER_EVENTS, B_NO_POINTER_HISTORY | B_SUSPEND_VIEW_FOCUS); if (fBehavior == B_ONE_STATE_BUTTON) { SetValue(B_CONTROL_ON); } else { if (Value() == B_CONTROL_ON) SetValue(B_CONTROL_OFF); else SetValue(B_CONTROL_ON); } SetTracking(true); }
void BChannelSlider::_FinishChange(bool update) { if (fInitialValues != NULL) { bool* inMask = NULL; int32 numChannels = CountChannels(); if (!fAllChannels) { inMask = new (std::nothrow) bool[CountChannels()]; if (inMask) { for (int i=0; i<numChannels; i++) inMask[i] = false; inMask[fCurrentChannel] = true; } } InvokeChannel(update ? ModificationMessage() : NULL, 0, numChannels, inMask); } if (!update) { SetTracking(false); Invalidate(); } }
void BitmapControl::MouseDown(BPoint point) { SetValue(!value); SetTracking(true); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS); }
void BChannelSlider::MouseDown(BPoint where) { if (!IsEnabled()) BControl::MouseDown(where); else { fCurrentChannel = -1; fMinPoint = 0; // Search the channel on which the mouse was over int32 numChannels = CountChannels(); for (int32 channel = 0; channel < numChannels; channel++) { BRect frame = ThumbFrameFor(channel); frame.OffsetBy(fClickDelta); float range = ThumbRangeFor(channel); if (fIsVertical) { fMinPoint = frame.top + frame.Height() / 2; frame.bottom += range; } else { // TODO: Fix this, the clickzone isn't perfect frame.right += range; fMinPoint = frame.Width(); } // Click was on a slider. if (frame.Contains(where)) { fCurrentChannel = channel; SetCurrentChannel(channel); break; } } // Click wasn't on a slider. Bail out. if (fCurrentChannel == -1) return; uint32 buttons = 0; BMessage* currentMessage = Window()->CurrentMessage(); if (currentMessage != NULL) currentMessage->FindInt32("buttons", (int32*)&buttons); fAllChannels = (buttons & B_SECONDARY_MOUSE_BUTTON) == 0; if (fInitialValues != NULL && fAllChannels) { delete[] fInitialValues; fInitialValues = NULL; } if (fInitialValues == NULL) fInitialValues = new (std::nothrow) int32[numChannels]; if (fInitialValues) { if (fAllChannels) { for (int32 i = 0; i < numChannels; i++) fInitialValues[i] = ValueFor(i); } else { fInitialValues[fCurrentChannel] = ValueFor(fCurrentChannel); } } if (Window()->Flags() & B_ASYNCHRONOUS_CONTROLS) { if (!IsTracking()) { SetTracking(true); _DrawThumbs(); Flush(); } _MouseMovedCommon(where, B_ORIGIN); SetMouseEventMask(B_POINTER_EVENTS, B_LOCK_WINDOW_FOCUS | B_NO_POINTER_HISTORY); } else { do { snooze(30000); GetMouse(&where, &buttons); _MouseMovedCommon(where, B_ORIGIN); } while (buttons != 0); _FinishChange(); fCurrentChannel = -1; fAllChannels = false; } } }
void BitmapControl::MouseUp(BPoint point) { if (Bounds().Contains(point)) Invoke(); SetTracking(false); }