From d4106529d69071664d6532c70a21c70da134681c Mon Sep 17 00:00:00 2001
From: Andrei Karas <akaras@inbox.ru>
Date: Thu, 10 Dec 2015 02:21:51 +0300
Subject: Move cursor related code into sdlsharedhelper.

---
 src/CMakeLists.txt            |  2 ++
 src/Makefile.am               |  2 ++
 src/gui/gui.cpp               | 24 +++-----------------
 src/utils/sdlsharedhelper.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++
 src/utils/sdlsharedhelper.h   | 31 ++++++++++++++++++++++++++
 5 files changed, 89 insertions(+), 21 deletions(-)
 create mode 100644 src/utils/sdlsharedhelper.cpp
 create mode 100644 src/utils/sdlsharedhelper.h

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index a6d39bb7c..a03428cac 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1242,6 +1242,8 @@ SET(SRCS
     listeners/uploadlistener.cpp
     listeners/uploadlistener.h
     utils/sdlpixel.h
+    utils/sdlsharedhelper.cpp
+    utils/sdlsharedhelper.h
     gui/widgets/widget.h
     listeners/weightlistener.h
     listeners/widgetlistener.h
diff --git a/src/Makefile.am b/src/Makefile.am
index aa6a254c1..ba54d8d25 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -131,6 +131,8 @@ SRC += events/actionevent.h \
 	      listeners/statlistener.h \
 	      listeners/tablemodellistener.h \
 	      utils/sdlpixel.h \
+	      utils/sdlsharedhelper.cpp \
+	      utils/sdlsharedhelper.h \
 	      gui/widgets/widget.h \
 	      listeners/weightlistener.h \
 	      listeners/widgetlistener.h \
diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp
index f7878a55f..146558032 100644
--- a/src/gui/gui.cpp
+++ b/src/gui/gui.cpp
@@ -94,17 +94,11 @@
 
 #include "utils/delete2.h"
 #include "utils/langs.h"
+#include "utils/sdlsharedhelper.h"
 #include "utils/timer.h"
 
 #include "net/ipc.h"
 
-#ifdef __native_client__
-#include <ppapi/c/ppb_mouse_cursor.h>
-#include <ppapi/cpp/instance.h>
-#include <ppapi/cpp/mouse_cursor.h>
-#include <ppapi_simple/ps.h>
-#endif
-
 #include "debug.h"
 
 Gui *gui = nullptr;
@@ -540,22 +534,10 @@ void Gui::setUseCustomCursor(const bool customCursor)
     {
         mCustomCursor = customCursor;
 
-#ifdef __native_client__
-        PP_MouseCursor_Type cursor;
-        if (mCustomCursor)
-            cursor = PP_MOUSECURSOR_TYPE_NONE; // hide cursor
-        else
-            cursor = PP_MOUSECURSOR_TYPE_POINTER; // show default cursor
-
-        pp::MouseCursor::SetCursor(
-            pp::InstanceHandle(PSGetInstanceId()),
-            cursor);
-#endif
-
         if (mCustomCursor)
         {
             // Hide the SDL mouse cursor
-            SDL_ShowCursor(SDL_DISABLE);
+            SDL::showCursor(false);
 
             // Load the mouse cursor
             if (mMouseCursors)
@@ -568,7 +550,7 @@ void Gui::setUseCustomCursor(const bool customCursor)
         else
         {
             // Show the SDL mouse cursor
-            SDL_ShowCursor(SDL_ENABLE);
+            SDL::showCursor(true);
 
             // Unload the mouse cursor
             if (mMouseCursors)
diff --git a/src/utils/sdlsharedhelper.cpp b/src/utils/sdlsharedhelper.cpp
new file mode 100644
index 000000000..4b69c8d24
--- /dev/null
+++ b/src/utils/sdlsharedhelper.cpp
@@ -0,0 +1,51 @@
+/*
+ *  The ManaPlus Client
+ *  Copyright (C) 2013-2015  The ManaPlus Developers
+ *
+ *  This file is part of The ManaPlus Client.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "utils/sdlsharedhelper.h"
+
+#ifdef __native_client__
+#include <ppapi/c/ppb_mouse_cursor.h>
+#include <ppapi/cpp/instance.h>
+#include <ppapi/cpp/mouse_cursor.h>
+#include <ppapi_simple/ps.h>
+#endif
+
+#include <SDL_events.h>
+
+#include "debug.h"
+
+void SDL::showCursor(const bool show)
+{
+#ifdef __native_client__
+    PP_MouseCursor_Type cursor;
+    if (show)
+        cursor = PP_MOUSECURSOR_TYPE_POINTER; // show default cursor
+    else
+        cursor = PP_MOUSECURSOR_TYPE_NONE; // hide cursor
+
+    pp::MouseCursor::SetCursor(
+        pp::InstanceHandle(PSGetInstanceId()),
+        cursor);
+#endif
+    if (show)
+        SDL_ShowCursor(SDL_ENABLE);
+    else
+        SDL_ShowCursor(SDL_DISABLE);
+}
diff --git a/src/utils/sdlsharedhelper.h b/src/utils/sdlsharedhelper.h
new file mode 100644
index 000000000..3963969ea
--- /dev/null
+++ b/src/utils/sdlsharedhelper.h
@@ -0,0 +1,31 @@
+/*
+ *  The ManaPlus Client
+ *  Copyright (C) 2013-2015  The ManaPlus Developers
+ *
+ *  This file is part of The ManaPlus Client.
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef UTILS_SDLSHAREDHELPER_H
+#define UTILS_SDLSHAREDHELPER_H
+
+#include "localconsts.h"
+
+namespace SDL
+{
+    void showCursor(const bool show);
+}  // namespace SDL
+
+#endif  // UTILS_SDLSHAREDHELPER_H
-- 
cgit v1.2.3-70-g09d2