Browse Source

Handle corner case: soft-cursor is invisible + OS-cursor is visible.

Yao Wei Tjong 姚伟忠 11 years ago
parent
commit
3897718a40
1 changed files with 6 additions and 2 deletions
  1. 6 2
      Source/Engine/UI/UI.cpp

+ 6 - 2
Source/Engine/UI/UI.cpp

@@ -888,16 +888,20 @@ UIElement* UI::GetFocusableElement(UIElement* element)
 
 
 void UI::GetCursorPositionAndVisible(IntVector2& pos, bool& visible)
 void UI::GetCursorPositionAndVisible(IntVector2& pos, bool& visible)
 {
 {
-    if (cursor_)
+    // Prefer software cursor then OS-specific cursor
+    if (cursor_ && cursor_->IsVisible())
     {
     {
         pos = cursor_->GetPosition();
         pos = cursor_->GetPosition();
-        visible = cursor_->IsVisible();
+        visible = true;
     }
     }
     else
     else
     {
     {
         Input* input = GetSubsystem<Input>();
         Input* input = GetSubsystem<Input>();
         pos = input->GetMousePosition();
         pos = input->GetMousePosition();
         visible = input->IsMouseVisible();
         visible = input->IsMouseVisible();
+
+        if (!visible && cursor_)
+            pos = cursor_->GetPosition();
     }
     }
 }
 }