scrollbars with mouse wheel :D

currently in custom game menu only
This commit is contained in:
titiger 2019-10-18 22:22:07 +02:00
parent b3267394d5
commit ae003836c3
6 changed files with 48 additions and 7 deletions

View File

@ -332,6 +332,9 @@ void GraphicComponent::init(int x, int y, int w, int h) {
reloadFonts();
enabled= true;
}
bool GraphicComponent::eventMouseWheel(int x, int y,int zDelta){
return false;
}
bool GraphicComponent::mouseMove(int x, int y) {
if(this->getVisible() == false) {
@ -913,14 +916,24 @@ void GraphicComboBox::togglePopupVisibility(){
}
}
bool GraphicComboBox::mouseMove(int x, int y){
if(this->getVisible() == false) {
bool GraphicComboBox::eventMouseWheel(int x, int y, int zDelta) {
if (popupShowing == true) {
int newVisibleStart = scrollBar.getVisibleStart() - zDelta/60;
if (newVisibleStart < 0)
newVisibleStart = 0;
if (newVisibleStart > scrollBar.getLength() - scrollBar.getVisibleSize())
newVisibleStart = scrollBar.getLength() - scrollBar.getVisibleSize();
scrollBar.setVisibleStart(newVisibleStart);
layoutButtons();
mouseMoveOverButtons(x,y);
return true;
} else
return false;
}
}
bool GraphicComboBox::mouseMoveOverButtons(int x, int y){
bool result=false;
bool scrollbarResult=scrollBar.mouseMove(x,y);
bool buttonResult=dropDownButton.mouseMove(x, y);
result=scrollbarResult||buttonResult;
if (popupShowing) {
bool foundMouseOver=false;
for (int i = scrollBar.getVisibleStart(); i <= scrollBar.getVisibleEnd(); ++i) {
@ -935,7 +948,16 @@ bool GraphicComboBox::mouseMove(int x, int y){
}
}
}
return result;
return result;
}
bool GraphicComboBox::mouseMove(int x, int y){
if(this->getVisible() == false) {
return false;
}
bool scrollbarResult=scrollBar.mouseMove(x,y);
bool buttonResult=dropDownButton.mouseMove(x, y);
return scrollbarResult||buttonResult||mouseMoveOverButtons(x,y);;
}
bool GraphicComboBox::mouseClick(int x, int y) {

View File

@ -127,6 +127,7 @@ public:
virtual void reloadFonts();
static void reloadFontsForRegisterGraphicComponents(std::string containerName);
virtual bool eventMouseWheel(int x, int y,int zDelta);
virtual bool mouseMove(int x, int y);
virtual bool mouseClick(int x, int y);
@ -411,6 +412,7 @@ public:
virtual void setX(int x);
virtual void setY(int y);
virtual bool eventMouseWheel(int x, int y,int zDelta);
virtual bool mouseMove(int x, int y);
virtual bool mouseClick(int x, int y);
virtual bool mouseDown(int x, int y);
@ -436,6 +438,7 @@ public:
}
private:
bool mouseMoveOverButtons(int x, int y);
void setPreselectedItemIndex(int index) {
this->preselectedItemIndex = index;
}

View File

@ -217,6 +217,10 @@ void MainMenu::mouseMove(int x, int y, const MouseState *ms){
state->mouseMove(x, y, ms);
}
void MainMenu::eventMouseWheel(int x, int y,int zDelta){
state->eventMouseWheel(x, y, zDelta);
}
//returns if exiting
void MainMenu::mouseDownLeft(int x, int y){
if(GraphicComponent::getFade()<0.2f) return;

View File

@ -72,6 +72,7 @@ public:
virtual void update();
virtual void init();
virtual void mouseMove(int x, int y, const MouseState *mouseState);
virtual void eventMouseWheel(int x, int y,int zDelta);
virtual void mouseDownLeft(int x, int y);
virtual void mouseDownRight(int x, int y);
virtual void mouseUpLeft(int x, int y);
@ -120,6 +121,7 @@ public:
virtual void mouseClick(int x, int y, MouseButton mouseButton)=0;
virtual void mouseUp(int x, int y, const MouseButton mouseButton){};
virtual void mouseMove(int x, int y, const MouseState *mouseState)=0;
virtual void eventMouseWheel(int x, int y, int zDelta){};
virtual void render()=0;
virtual void update(){};

View File

@ -2105,6 +2105,15 @@ void MenuStateCustomGame::PlayNow(bool saveGame) {
}
}
void MenuStateCustomGame::eventMouseWheel(int x, int y,int zDelta) {
if(isMasterserverMode() == true) {
return;
}
comboBoxMap.eventMouseWheel(x,y,zDelta);
comboBoxLoadSetup.eventMouseWheel(x,y,zDelta);
}
void MenuStateCustomGame::mouseMove(int x, int y, const MouseState *ms) {
if(isMasterserverMode() == true) {
return;

View File

@ -243,6 +243,7 @@ public:
void mouseClick(int x, int y, MouseButton mouseButton);
void mouseMove(int x, int y, const MouseState *mouseState);
void eventMouseWheel(int x, int y,int zDelta);
void render();
void update();