diff options
author | Star Rauchenberger <fefferburbia@gmail.com> | 2024-06-06 14:58:08 -0400 |
---|---|---|
committer | Star Rauchenberger <fefferburbia@gmail.com> | 2024-06-06 14:58:08 -0400 |
commit | e7b85c60546341dd842efe4dc06718854be9376c (patch) | |
tree | fdb5f6ae52dfa6db147dfeddad895ec28beefed0 /src | |
parent | 52dd0b92f4cf82dee0f638bdf4ba304090863423 (diff) | |
download | lingo-ap-tracker-e7b85c60546341dd842efe4dc06718854be9376c.tar.gz lingo-ap-tracker-e7b85c60546341dd842efe4dc06718854be9376c.tar.bz2 lingo-ap-tracker-e7b85c60546341dd842efe4dc06718854be9376c.zip |
Allow scrolling while sticky hovering
Diffstat (limited to 'src')
-rw-r--r-- | src/subway_map.cpp | 54 |
1 files changed, 33 insertions, 21 deletions
diff --git a/src/subway_map.cpp b/src/subway_map.cpp index dde817b..b32c362 100644 --- a/src/subway_map.cpp +++ b/src/subway_map.cpp | |||
@@ -405,35 +405,47 @@ void SubwayMap::OnMouseLeave(wxMouseEvent &event) { | |||
405 | } | 405 | } |
406 | 406 | ||
407 | void SubwayMap::OnMouseClick(wxMouseEvent &event) { | 407 | void SubwayMap::OnMouseClick(wxMouseEvent &event) { |
408 | if (sticky_hover_) { | 408 | bool finished = false; |
409 | sticky_hover_ = false; | ||
410 | 409 | ||
411 | if (actual_hover_ != hovered_item_) { | 410 | if (actual_hover_) { |
412 | hovered_item_ = actual_hover_; | 411 | const SubwayItem &subway_item = GD_GetSubwayItem(*actual_hover_); |
413 | |||
414 | Refresh(); | ||
415 | } | ||
416 | } else if (hovered_item_) { | ||
417 | const SubwayItem &subway_item = GD_GetSubwayItem(*hovered_item_); | ||
418 | if ((subway_item.door && !GetDoorRequirements(*subway_item.door).empty()) || | 412 | if ((subway_item.door && !GetDoorRequirements(*subway_item.door).empty()) || |
419 | networks_.IsItemInNetwork(*hovered_item_)) { | 413 | networks_.IsItemInNetwork(*hovered_item_)) { |
420 | sticky_hover_ = true; | 414 | if (actual_hover_ != hovered_item_) { |
415 | hovered_item_ = actual_hover_; | ||
416 | |||
417 | if (!hovered_item_) { | ||
418 | sticky_hover_ = false; | ||
419 | } | ||
420 | |||
421 | Refresh(); | ||
422 | } else { | ||
423 | sticky_hover_ = !sticky_hover_; | ||
424 | } | ||
425 | |||
426 | finished = true; | ||
421 | } | 427 | } |
422 | } else if (scroll_mode_) { | 428 | } |
423 | scroll_mode_ = false; | ||
424 | 429 | ||
425 | SetScrollSpeed(0, 0); | 430 | if (!finished) { |
431 | if (scroll_mode_) { | ||
432 | scroll_mode_ = false; | ||
426 | 433 | ||
427 | SetCursor(wxCURSOR_ARROW); | 434 | SetScrollSpeed(0, 0); |
428 | } else if (event.GetPosition().x < GetSize().GetWidth() / 6 || | ||
429 | event.GetPosition().x > 5 * GetSize().GetWidth() / 6 || | ||
430 | event.GetPosition().y < GetSize().GetHeight() / 6 || | ||
431 | event.GetPosition().y > 5 * GetSize().GetHeight() / 6) { | ||
432 | scroll_mode_ = true; | ||
433 | 435 | ||
434 | EvaluateScroll(event.GetPosition()); | 436 | SetCursor(wxCURSOR_ARROW); |
437 | } else if (event.GetPosition().x < GetSize().GetWidth() / 6 || | ||
438 | event.GetPosition().x > 5 * GetSize().GetWidth() / 6 || | ||
439 | event.GetPosition().y < GetSize().GetHeight() / 6 || | ||
440 | event.GetPosition().y > 5 * GetSize().GetHeight() / 6) { | ||
441 | scroll_mode_ = true; | ||
435 | 442 | ||
436 | SetCursor(wxCURSOR_CROSS); | 443 | EvaluateScroll(event.GetPosition()); |
444 | |||
445 | SetCursor(wxCURSOR_CROSS); | ||
446 | } else { | ||
447 | sticky_hover_ = false; | ||
448 | } | ||
437 | } | 449 | } |
438 | } | 450 | } |
439 | 451 | ||