Fix cursors not showing up on Windows.

(At least mostly; there might still be a few glitches.)
This commit is contained in:
2015-01-04 22:03:24 -05:00
parent c3e801ad7a
commit f44f713cac
8 changed files with 58 additions and 55 deletions

View File

@@ -202,6 +202,7 @@ bool cControl::handleClick(location){
clicked = frame.contains(e.mouseButton.x, e.mouseButton.y);
depressed = false;
} else if(e.type == sf::Event::MouseMoved){
restore_cursor();
depressed = frame.contains(e.mouseMove.x, e.mouseMove.y);
}
}

View File

@@ -1158,16 +1158,18 @@ void cDialog::run(){
where = {currentEvent.mouseButton.x, currentEvent.mouseButton.y};
itemHit = process_click(where);
break;
default: // To silence warning of unhandled enum values
break;
case sf::Event::MouseMoved:
set_cursor(sword_curs);
bool inField = false;
for(auto& ctrl : controls) {
if(ctrl.second->getType() == CTRL_FIELD && ctrl.second->getBounds().contains(currentEvent.mouseMove.x, currentEvent.mouseMove.y)) {
set_cursor(text_curs);
inField = true;
break;
}
}
break;
default: // To silence warning of unhandled enum values
if(!inField) set_cursor(sword_curs);
break;
}
if(itemHit.empty()) continue;;

View File

@@ -15,6 +15,7 @@
#include "dlogutil.hpp"
#include "graphtool.h"
#include "winutil.h"
#include "cursors.h"
void cTextField::attachClickHandler(click_callback_t) throw(xHandlerNotSupported){
throw xHandlerNotSupported(false);
@@ -122,6 +123,7 @@ bool cTextField::handleClick(location clickLoc) {
if(e.type == sf::Event::MouseButtonReleased){
done = true;
} else if(e.type == sf::Event::MouseMoved){
restore_cursor();
location newLoc(e.mouseMove.x, e.mouseMove.y);
set_ip(newLoc, &cTextField::selectionPoint);
}

View File

@@ -102,6 +102,7 @@ bool cScrollbar::handleClick(location where) {
case PART_THUMB: break;
}
} else if(e.type == sf::Event::MouseMoved){
restore_cursor();
switch(pressedPart) {
case PART_UP:
depressed = e.mouseMove.y < frame.top + 16;