Skip to content

Commit b168f45

Browse files
committed
- scrollbar patch applied from cygal / quentin --> Thanks
1 parent 61c86c1 commit b168f45

12 files changed

+61
-10
lines changed

source/glest_game/facilities/components.cpp

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,7 @@ const int GraphicScrollBar::defLength= 200;
723723
GraphicScrollBar::GraphicScrollBar(std::string containerName, std::string objName)
724724
: GraphicComponent(containerName, objName) {
725725
lighted = false;
726+
activated = false;
726727
horizontal = false;
727728
elementCount = 0;
728729
visibleSize = 0;
@@ -741,13 +742,14 @@ void GraphicScrollBar::init(int x, int y, bool horizontal,int length, int thickn
741742
this->visibleStart=0;
742743
this->visibleCompPosStart=0;
743744
this->visibleCompPosEnd=length;
744-
lighted= false;
745+
activated = false;
746+
lighted = false;
745747
}
746748

747749
bool GraphicScrollBar::mouseDown(int x, int y) {
748750
if(getVisible() && getEnabled() && getEditable())
749751
{
750-
if(mouseMove(x,y))
752+
if(activated)
751753
{
752754
if( elementCount>visibleSize) {
753755
int pos;
@@ -771,6 +773,11 @@ bool GraphicScrollBar::mouseDown(int x, int y) {
771773
return false;
772774
}
773775

776+
void GraphicScrollBar::mouseUp(int x, int y) {
777+
activated = false;
778+
lighted = false;
779+
}
780+
774781
void GraphicScrollBar::setVisibleStart(int vs){
775782
visibleStart=vs;
776783

@@ -806,20 +813,23 @@ void GraphicScrollBar::setVisibleSize(int visibleSize){
806813

807814
bool GraphicScrollBar::mouseClick(int x, int y){
808815
bool result=GraphicComponent::mouseClick( x, y);
809-
if(result)
816+
if(result) {
817+
activated = true;
818+
lighted = true;
810819
mouseDown( x, y);
811-
return result;
820+
}
821+
return result;
812822
}
813823

814824

815825
bool GraphicScrollBar::mouseMove(int x, int y){
816-
if(this->getVisible() == false) {
817-
return false;
826+
bool inScrollBar = GraphicComponent::mouseMove(x, y);
827+
if (activated) {
828+
lighted = true;
829+
} else {
830+
lighted = inScrollBar;
818831
}
819-
820-
bool b= GraphicComponent::mouseMove(x, y);
821-
lighted= b;
822-
return b;
832+
return inScrollBar;
823833
}
824834

825835
int GraphicScrollBar::getLength() const {

source/glest_game/facilities/components.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ class GraphicScrollBar: public GraphicComponent {
355355
static const int defThickness;
356356

357357
private:
358+
bool activated;
358359
bool lighted;
359360
bool horizontal;
360361
int elementCount;
@@ -370,6 +371,7 @@ class GraphicScrollBar: public GraphicComponent {
370371
void init(int x, int y, bool horizontal,int length=defLength, int thickness=defThickness);
371372
virtual bool mouseDown(int x, int y);
372373
virtual bool mouseMove(int x, int y);
374+
virtual void mouseUp(int x, int y);
373375
virtual bool mouseClick(int x, int y);
374376

375377

source/glest_game/menu/main_menu.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,11 @@ void MainMenu::mouseDownRight(int x, int y){
222222
state->mouseClick(x, y, mbRight);
223223
}
224224

225+
void MainMenu::mouseUpLeft(int x, int y){
226+
if(GraphicComponent::getFade()<0.2f) return;
227+
state->mouseUp(x, y, mbLeft);
228+
}
229+
225230
void MainMenu::keyDown(SDL_KeyboardEvent key) {
226231
state->keyDown(key);
227232
}

source/glest_game/menu/main_menu.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ class MainMenu: public ProgramState {
7474
virtual void mouseMove(int x, int y, const MouseState *mouseState);
7575
virtual void mouseDownLeft(int x, int y);
7676
virtual void mouseDownRight(int x, int y);
77+
virtual void mouseUpLeft(int x, int y);
7778
virtual void keyDown(SDL_KeyboardEvent key);
7879
virtual void keyUp(SDL_KeyboardEvent key);
7980
virtual void keyPress(SDL_KeyboardEvent key);
@@ -115,6 +116,7 @@ class MenuState {
115116
MenuState(Program *program, MainMenu *mainMenu, const string &stateName);
116117
virtual ~MenuState();
117118
virtual void mouseClick(int x, int y, MouseButton mouseButton)=0;
119+
virtual void mouseUp(int x, int y, const MouseButton mouseButton){};
118120
virtual void mouseMove(int x, int y, const MouseState *mouseState)=0;
119121
virtual void render()=0;
120122
virtual void update(){};

source/glest_game/menu/menu_state_keysetup.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,12 @@ void MenuStateKeysetup::mouseClick(int x, int y, MouseButton mouseButton){
304304
}
305305
}
306306

307+
void MenuStateKeysetup::mouseUp(int x, int y, const MouseButton mouseButton){
308+
if (mouseButton == mbLeft) {
309+
keyScrollBar.mouseUp(x, y);
310+
}
311+
}
312+
307313
void MenuStateKeysetup::mouseMove(int x, int y, const MouseState *ms){
308314
buttonReturn.mouseMove(x, y);
309315
buttonOk.mouseMove(x, y);

source/glest_game/menu/menu_state_keysetup.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class MenuStateKeysetup: public MenuState {
6464
virtual ~MenuStateKeysetup();
6565

6666
void mouseClick(int x, int y, MouseButton mouseButton);
67+
void mouseUp(int x, int y, const MouseButton mouseButton);
6768
void mouseMove(int x, int y, const MouseState *mouseState);
6869
void update();
6970
void render();

source/glest_game/menu/menu_state_load_game.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,12 @@ void MenuStateLoadGame::mouseClick(int x, int y, MouseButton mouseButton){
324324
}
325325
}
326326

327+
void MenuStateLoadGame::mouseUp(int x, int y, const MouseButton mouseButton){
328+
if (mouseButton == mbLeft) {
329+
slotsScrollBar.mouseUp(x, y);
330+
}
331+
}
332+
327333
void MenuStateLoadGame::deleteSlot(int i){
328334
if(selectedButton==slots[i]){
329335
selectedButton=NULL;

source/glest_game/menu/menu_state_load_game.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class MenuStateLoadGame: public MenuState{
5454
~MenuStateLoadGame();
5555

5656
void mouseClick(int x, int y, MouseButton mouseButton);
57+
void mouseUp(int x, int y, const MouseButton mouseButton);
5758
void mouseMove(int x, int y, const MouseState *mouseState);
5859
void update();
5960
void render();

source/glest_game/menu/menu_state_masterserver.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,13 @@ void MenuStateMasterserver::mouseClick(int x, int y, MouseButton mouseButton){
588588
}
589589
}
590590

591+
void MenuStateMasterserver::mouseUp(int x, int y, const MouseButton mouseButton){
592+
if (mouseButton == mbLeft) {
593+
userScrollBar.mouseUp(x, y);
594+
serverScrollBar.mouseUp(x, y);
595+
}
596+
}
597+
591598
void MenuStateMasterserver::mouseMove(int x, int y, const MouseState *ms){
592599
MutexSafeWrapper safeMutex((updateFromMasterserverThread != NULL ? updateFromMasterserverThread->getMutexThreadObjectAccessor() : NULL),string(extractFileFromDirectoryPath(__FILE__).c_str()) + "_" + intToStr(__LINE__));
593600

source/glest_game/menu/menu_state_masterserver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ class MenuStateMasterserver : public MenuState, public SimpleTaskCallbackInterfa
117117
~MenuStateMasterserver();
118118

119119
void mouseClick(int x, int y, MouseButton mouseButton);
120+
void mouseUp(int x, int y, const MouseButton mouseButton);
120121
void mouseMove(int x, int y, const MouseState *mouseState);
121122
void update();
122123
void render();

0 commit comments

Comments
 (0)