void TextArea::OnMouseDown(unsigned short /*x*/, unsigned short /*y*/, unsigned short Button, unsigned short /*Mod*/) { ScrollBar* scrlbr = (ScrollBar*) sb; if (!scrlbr) { Control *ctrl = Owner->GetScrollControl(); if (ctrl && (ctrl->ControlType == IE_GUI_SCROLLBAR)) { scrlbr = (ScrollBar *) ctrl; } } if (scrlbr) { switch(Button) { case GEM_MB_SCRLUP: scrlbr->ScrollUp(); core->RedrawAll(); break; case GEM_MB_SCRLDOWN: scrlbr->ScrollDown(); core->RedrawAll(); break; } } }
/** Mouse Button Down */ void Button::OnMouseDown(unsigned short x, unsigned short y, unsigned short Button, unsigned short Mod) { if (State == IE_GUI_BUTTON_DISABLED) { Control::OnMouseDown(x,y,Button,Mod); return; } if (core->GetDraggedItem () && !ButtonOnDragDrop) { Control::OnMouseDown(x,y,Button,Mod); return; } ScrollBar* scrlbr = (ScrollBar*) sb; if (!scrlbr) { Control *ctrl = Owner->GetScrollControl(); if (ctrl && (ctrl->ControlType == IE_GUI_SCROLLBAR)) { scrlbr = (ScrollBar *) ctrl; } } //Button == 1 means Left Mouse Button switch(Button&GEM_MB_NORMAL) { case GEM_MB_ACTION: // We use absolute screen position here, so drag_start // remains valid even after window/control is moved drag_start.x = Owner->XPos + XPos + x; drag_start.y = Owner->YPos + YPos + y; if (State == IE_GUI_BUTTON_LOCKED) { SetState( IE_GUI_BUTTON_LOCKED_PRESSED ); return; } SetState( IE_GUI_BUTTON_PRESSED ); if (Flags & IE_GUI_BUTTON_SOUND) { core->PlaySound( DS_BUTTON_PRESSED ); } if ((Button & GEM_MB_DOUBLECLICK) && ButtonOnDoublePress) { RunEventHandler( ButtonOnDoublePress ); printMessage("Button","Doubleclick detected\n",GREEN); } break; case GEM_MB_SCRLUP: if (scrlbr) { scrlbr->ScrollUp(); core->RedrawAll(); } break; case GEM_MB_SCRLDOWN: if (scrlbr) { scrlbr->ScrollDown(); core->RedrawAll(); } break; } }