From b168f450b5c7fa443b8bd17635a00eac58e45192 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Fri, 2 Nov 2012 20:07:50 +0000 Subject: [PATCH] - scrollbar patch applied from cygal / quentin --> Thanks --- source/glest_game/facilities/components.cpp | 30 ++++++++++++------- source/glest_game/facilities/components.h | 2 ++ source/glest_game/menu/main_menu.cpp | 5 ++++ source/glest_game/menu/main_menu.h | 2 ++ .../glest_game/menu/menu_state_keysetup.cpp | 6 ++++ source/glest_game/menu/menu_state_keysetup.h | 1 + .../glest_game/menu/menu_state_load_game.cpp | 6 ++++ source/glest_game/menu/menu_state_load_game.h | 1 + .../menu/menu_state_masterserver.cpp | 7 +++++ .../glest_game/menu/menu_state_masterserver.h | 1 + source/glest_game/menu/menu_state_mods.cpp | 9 ++++++ source/glest_game/menu/menu_state_mods.h | 1 + 12 files changed, 61 insertions(+), 10 deletions(-) diff --git a/source/glest_game/facilities/components.cpp b/source/glest_game/facilities/components.cpp index 27c60fcf..08a94704 100644 --- a/source/glest_game/facilities/components.cpp +++ b/source/glest_game/facilities/components.cpp @@ -723,6 +723,7 @@ const int GraphicScrollBar::defLength= 200; GraphicScrollBar::GraphicScrollBar(std::string containerName, std::string objName) : GraphicComponent(containerName, objName) { lighted = false; + activated = false; horizontal = false; elementCount = 0; visibleSize = 0; @@ -741,13 +742,14 @@ void GraphicScrollBar::init(int x, int y, bool horizontal,int length, int thickn this->visibleStart=0; this->visibleCompPosStart=0; this->visibleCompPosEnd=length; - lighted= false; + activated = false; + lighted = false; } bool GraphicScrollBar::mouseDown(int x, int y) { if(getVisible() && getEnabled() && getEditable()) { - if(mouseMove(x,y)) + if(activated) { if( elementCount>visibleSize) { int pos; @@ -771,6 +773,11 @@ bool GraphicScrollBar::mouseDown(int x, int y) { return false; } +void GraphicScrollBar::mouseUp(int x, int y) { + activated = false; + lighted = false; +} + void GraphicScrollBar::setVisibleStart(int vs){ visibleStart=vs; @@ -806,20 +813,23 @@ void GraphicScrollBar::setVisibleSize(int visibleSize){ bool GraphicScrollBar::mouseClick(int x, int y){ bool result=GraphicComponent::mouseClick( x, y); - if(result) + if(result) { + activated = true; + lighted = true; mouseDown( x, y); - return result; + } + return result; } bool GraphicScrollBar::mouseMove(int x, int y){ - if(this->getVisible() == false) { - return false; + bool inScrollBar = GraphicComponent::mouseMove(x, y); + if (activated) { + lighted = true; + } else { + lighted = inScrollBar; } - - bool b= GraphicComponent::mouseMove(x, y); - lighted= b; - return b; + return inScrollBar; } int GraphicScrollBar::getLength() const { diff --git a/source/glest_game/facilities/components.h b/source/glest_game/facilities/components.h index 8be51991..327bde31 100644 --- a/source/glest_game/facilities/components.h +++ b/source/glest_game/facilities/components.h @@ -355,6 +355,7 @@ public: static const int defThickness; private: + bool activated; bool lighted; bool horizontal; int elementCount; @@ -370,6 +371,7 @@ public: void init(int x, int y, bool horizontal,int length=defLength, int thickness=defThickness); virtual bool mouseDown(int x, int y); virtual bool mouseMove(int x, int y); + virtual void mouseUp(int x, int y); virtual bool mouseClick(int x, int y); diff --git a/source/glest_game/menu/main_menu.cpp b/source/glest_game/menu/main_menu.cpp index 2dac09f4..ce11f8f2 100644 --- a/source/glest_game/menu/main_menu.cpp +++ b/source/glest_game/menu/main_menu.cpp @@ -222,6 +222,11 @@ void MainMenu::mouseDownRight(int x, int y){ state->mouseClick(x, y, mbRight); } +void MainMenu::mouseUpLeft(int x, int y){ + if(GraphicComponent::getFade()<0.2f) return; + state->mouseUp(x, y, mbLeft); +} + void MainMenu::keyDown(SDL_KeyboardEvent key) { state->keyDown(key); } diff --git a/source/glest_game/menu/main_menu.h b/source/glest_game/menu/main_menu.h index d522787d..1a3e363d 100644 --- a/source/glest_game/menu/main_menu.h +++ b/source/glest_game/menu/main_menu.h @@ -74,6 +74,7 @@ public: virtual void mouseMove(int x, int y, const MouseState *mouseState); virtual void mouseDownLeft(int x, int y); virtual void mouseDownRight(int x, int y); + virtual void mouseUpLeft(int x, int y); virtual void keyDown(SDL_KeyboardEvent key); virtual void keyUp(SDL_KeyboardEvent key); virtual void keyPress(SDL_KeyboardEvent key); @@ -115,6 +116,7 @@ public: MenuState(Program *program, MainMenu *mainMenu, const string &stateName); virtual ~MenuState(); 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 render()=0; virtual void update(){}; diff --git a/source/glest_game/menu/menu_state_keysetup.cpp b/source/glest_game/menu/menu_state_keysetup.cpp index f08b4b15..38f0c654 100644 --- a/source/glest_game/menu/menu_state_keysetup.cpp +++ b/source/glest_game/menu/menu_state_keysetup.cpp @@ -304,6 +304,12 @@ void MenuStateKeysetup::mouseClick(int x, int y, MouseButton mouseButton){ } } +void MenuStateKeysetup::mouseUp(int x, int y, const MouseButton mouseButton){ + if (mouseButton == mbLeft) { + keyScrollBar.mouseUp(x, y); + } +} + void MenuStateKeysetup::mouseMove(int x, int y, const MouseState *ms){ buttonReturn.mouseMove(x, y); buttonOk.mouseMove(x, y); diff --git a/source/glest_game/menu/menu_state_keysetup.h b/source/glest_game/menu/menu_state_keysetup.h index 9246b903..d4fc9167 100644 --- a/source/glest_game/menu/menu_state_keysetup.h +++ b/source/glest_game/menu/menu_state_keysetup.h @@ -64,6 +64,7 @@ public: virtual ~MenuStateKeysetup(); void mouseClick(int x, int y, MouseButton mouseButton); + void mouseUp(int x, int y, const MouseButton mouseButton); void mouseMove(int x, int y, const MouseState *mouseState); void update(); void render(); diff --git a/source/glest_game/menu/menu_state_load_game.cpp b/source/glest_game/menu/menu_state_load_game.cpp index bf08a880..be04e7f2 100644 --- a/source/glest_game/menu/menu_state_load_game.cpp +++ b/source/glest_game/menu/menu_state_load_game.cpp @@ -324,6 +324,12 @@ void MenuStateLoadGame::mouseClick(int x, int y, MouseButton mouseButton){ } } +void MenuStateLoadGame::mouseUp(int x, int y, const MouseButton mouseButton){ + if (mouseButton == mbLeft) { + slotsScrollBar.mouseUp(x, y); + } +} + void MenuStateLoadGame::deleteSlot(int i){ if(selectedButton==slots[i]){ selectedButton=NULL; diff --git a/source/glest_game/menu/menu_state_load_game.h b/source/glest_game/menu/menu_state_load_game.h index 7305251e..54e873cb 100644 --- a/source/glest_game/menu/menu_state_load_game.h +++ b/source/glest_game/menu/menu_state_load_game.h @@ -54,6 +54,7 @@ public: ~MenuStateLoadGame(); void mouseClick(int x, int y, MouseButton mouseButton); + void mouseUp(int x, int y, const MouseButton mouseButton); void mouseMove(int x, int y, const MouseState *mouseState); void update(); void render(); diff --git a/source/glest_game/menu/menu_state_masterserver.cpp b/source/glest_game/menu/menu_state_masterserver.cpp index cee5e19b..23963fb4 100644 --- a/source/glest_game/menu/menu_state_masterserver.cpp +++ b/source/glest_game/menu/menu_state_masterserver.cpp @@ -588,6 +588,13 @@ void MenuStateMasterserver::mouseClick(int x, int y, MouseButton mouseButton){ } } +void MenuStateMasterserver::mouseUp(int x, int y, const MouseButton mouseButton){ + if (mouseButton == mbLeft) { + userScrollBar.mouseUp(x, y); + serverScrollBar.mouseUp(x, y); + } +} + void MenuStateMasterserver::mouseMove(int x, int y, const MouseState *ms){ MutexSafeWrapper safeMutex((updateFromMasterserverThread != NULL ? updateFromMasterserverThread->getMutexThreadObjectAccessor() : NULL),string(extractFileFromDirectoryPath(__FILE__).c_str()) + "_" + intToStr(__LINE__)); diff --git a/source/glest_game/menu/menu_state_masterserver.h b/source/glest_game/menu/menu_state_masterserver.h index 9b0cad4b..3d211f7e 100644 --- a/source/glest_game/menu/menu_state_masterserver.h +++ b/source/glest_game/menu/menu_state_masterserver.h @@ -117,6 +117,7 @@ public: ~MenuStateMasterserver(); void mouseClick(int x, int y, MouseButton mouseButton); + void mouseUp(int x, int y, const MouseButton mouseButton); void mouseMove(int x, int y, const MouseState *mouseState); void update(); void render(); diff --git a/source/glest_game/menu/menu_state_mods.cpp b/source/glest_game/menu/menu_state_mods.cpp index ffb34f18..4955dd2b 100644 --- a/source/glest_game/menu/menu_state_mods.cpp +++ b/source/glest_game/menu/menu_state_mods.cpp @@ -2005,6 +2005,15 @@ void MenuStateMods::showRemoteDesription(ModInfo *modInfo) { } } +void MenuStateMods::mouseUp(int x, int y, const MouseButton mouseButton){ + if (mouseButton == mbLeft) { + keyTechScrollBar.mouseUp(x, y); + keyTilesetScrollBar.mouseUp(x, y); + keyMapScrollBar.mouseUp(x, y); + keyScenarioScrollBar.mouseUp(x, y); + } +} + void MenuStateMods::mouseMove(int x, int y, const MouseState *ms) { buttonReturn.mouseMove(x, y); diff --git a/source/glest_game/menu/menu_state_mods.h b/source/glest_game/menu/menu_state_mods.h index fa9b9540..ccf05206 100644 --- a/source/glest_game/menu/menu_state_mods.h +++ b/source/glest_game/menu/menu_state_mods.h @@ -184,6 +184,7 @@ public: virtual ~MenuStateMods(); void mouseClick(int x, int y, MouseButton mouseButton); + void mouseUp(int x, int y, const MouseButton mouseButton); void mouseMove(int x, int y, const MouseState *mouseState); void render(); void update();