From d1a812231ee2b533434cbce9639f3e59413e1cd9 Mon Sep 17 00:00:00 2001 From: Glenn Rice Date: Sun, 16 Dec 2012 21:32:14 -0600 Subject: [PATCH] Rework the way that windows mouse cursor hiding is done to use the built in wxWidgets methods. --- Source/Core/DolphinWX/Dolphin.vcxproj | 3 ++ Source/Core/DolphinWX/DolphinWX.rc | 1 + Source/Core/DolphinWX/Src/Frame.cpp | 52 ++++-------------------- Source/Core/DolphinWX/Src/FrameTools.cpp | 19 ++------- 4 files changed, 14 insertions(+), 61 deletions(-) diff --git a/Source/Core/DolphinWX/Dolphin.vcxproj b/Source/Core/DolphinWX/Dolphin.vcxproj index 72c40a3db4..dc6aa2affa 100644 --- a/Source/Core/DolphinWX/Dolphin.vcxproj +++ b/Source/Core/DolphinWX/Dolphin.vcxproj @@ -201,6 +201,9 @@ xcopy "$(SolutionDir)..\Externals\SDL\$(PlatformName)\*.dll" "$(TargetDir)" /e / Copying Data\* to $(TargetDir) + + C:\Archives\Dolphin-emu\dolphin-emu-git\Externals\wxWidgets3\include;%(AdditionalIncludeDirectories) + diff --git a/Source/Core/DolphinWX/DolphinWX.rc b/Source/Core/DolphinWX/DolphinWX.rc index e9c06a8fa9..e0c095c885 100644 --- a/Source/Core/DolphinWX/DolphinWX.rc +++ b/Source/Core/DolphinWX/DolphinWX.rc @@ -1,4 +1,5 @@ // Microsoft Visual C++ generated resource script. // #include "resource.h" +#include IDI_ICON1 ICON "..\\..\\..\\Installer\\Dolphin.ico" diff --git a/Source/Core/DolphinWX/Src/Frame.cpp b/Source/Core/DolphinWX/Src/Frame.cpp index da6c565ddf..99c4f65f1f 100644 --- a/Source/Core/DolphinWX/Src/Frame.cpp +++ b/Source/Core/DolphinWX/Src/Frame.cpp @@ -71,30 +71,7 @@ extern "C" { }; -// Windows functions. Setting the cursor with wxSetCursor() did not work in -// this instance. Probably because it's somehow reset from the WndProc() in -// the child window #ifdef _WIN32 -// Declare a blank icon and one that will be the normal cursor -HCURSOR hCursor = NULL, hCursorBlank = NULL; - -// Create the default cursor -void CreateCursor() -{ - hCursor = LoadCursor( NULL, IDC_ARROW ); -} - -void MSWSetCursor(bool Show) -{ - if(Show) - SetCursor(hCursor); - else - { - SetCursor(hCursorBlank); - //wxSetCursor(wxCursor(wxNullCursor)); - } -} - // I could not use FindItemByHWND() instead of this, it crashed on that occation I used it */ HWND MSWGetParent_(HWND Parent) { @@ -133,10 +110,11 @@ CPanel::CPanel( case WM_USER_SETCURSOR: if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor && - main_frame->RendererHasFocus() && Core::GetState() == Core::CORE_RUN) - MSWSetCursor(!SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor); + main_frame->RendererHasFocus() && Core::GetState() == Core::CORE_RUN && + SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) + SetCursor(wxCURSOR_BLANK); else - MSWSetCursor(true); + SetCursor(wxCURSOR_ARROW); break; case WIIMOTE_DISCONNECT: @@ -435,9 +413,7 @@ CFrame::CFrame(wxFrame* parent, // Commit m_Mgr->Update(); - // Create cursors #ifdef _WIN32 - CreateCursor(); SetToolTip(wxT("")); GetToolTip()->SetAutoPop(25000); #endif @@ -494,20 +470,6 @@ void CFrame::OnActive(wxActivateEvent& event) { if (event.GetActive() && event.GetEventObject() == m_RenderFrame) { - // 32x32, 8bpp b/w image - // We want all transparent, so we can just use the same buffer for - // the "image" as for the transparency mask - static const char cursor_data[32 * 32] = { 0 }; - -#ifdef __WXGTK__ - wxCursor cursor_transparent = wxCursor(cursor_data, 32, 32, 6, 14, - cursor_data, wxWHITE, wxBLACK); -#else - wxBitmap cursor_bitmap(cursor_data, 32, 32); - cursor_bitmap.SetMask(new wxMask(cursor_bitmap)); - wxCursor cursor_transparent = wxCursor(cursor_bitmap.ConvertToImage()); -#endif - #ifdef __WXMSW__ ::SetFocus((HWND)m_RenderParent->GetHandle()); #else @@ -516,12 +478,12 @@ void CFrame::OnActive(wxActivateEvent& event) if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor && Core::GetState() == Core::CORE_RUN) - m_RenderParent->SetCursor(cursor_transparent); + m_RenderParent->SetCursor(wxCURSOR_BLANK); } else { if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) - m_RenderParent->SetCursor(wxNullCursor); + m_RenderParent->SetCursor(wxCURSOR_ARROW); } } event.Skip(); @@ -646,12 +608,12 @@ void CFrame::OnHostMessage(wxCommandEvent& event) } break; -#ifdef __WXGTK__ case WM_USER_CREATE: if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) m_RenderParent->SetCursor(wxCURSOR_BLANK); break; +#ifdef __WXGTK__ case IDM_PANIC: { wxString caption = event.GetString().BeforeFirst(':'); diff --git a/Source/Core/DolphinWX/Src/FrameTools.cpp b/Source/Core/DolphinWX/Src/FrameTools.cpp index 98649be181..d52427ed6e 100644 --- a/Source/Core/DolphinWX/Src/FrameTools.cpp +++ b/Source/Core/DolphinWX/Src/FrameTools.cpp @@ -139,9 +139,9 @@ void CFrame::CreateMenu() emulationMenu->Append(IDM_RECORDEXPORT, GetMenuLabel(HK_EXPORT_RECORDING)); emulationMenu->Append(IDM_RECORDREADONLY, GetMenuLabel(HK_READ_ONLY_MODE), wxEmptyString, wxITEM_CHECK); emulationMenu->Append(IDM_TASINPUT, _("TAS Input")); - emulationMenu->AppendCheckItem(IDM_TOGGLE_PAUSEMOVIE, _("Pause at end of movie")); + emulationMenu->AppendCheckItem(IDM_TOGGLE_PAUSEMOVIE, _("Pause at end of movie")); emulationMenu->Check(IDM_TOGGLE_PAUSEMOVIE, SConfig::GetInstance().m_PauseMovie); - emulationMenu->AppendCheckItem(IDM_SHOWLAG, _("Show lag counter")); + emulationMenu->AppendCheckItem(IDM_SHOWLAG, _("Show lag counter")); emulationMenu->Check(IDM_SHOWLAG, SConfig::GetInstance().m_ShowLag); emulationMenu->Check(IDM_RECORDREADONLY, true); emulationMenu->AppendSeparator(); @@ -1059,23 +1059,10 @@ void CFrame::DoPause() } else { - // 32x32, 8bpp b/w image - // We want all transparent, so we can just use the same buffer for - // the "image" as for the transparency mask - static const char cursor_data[32 * 32] = { 0 }; -#ifdef __WXGTK__ - wxCursor cursor_transparent = wxCursor(cursor_data, 32, 32, 6, 14, - cursor_data, wxWHITE, wxBLACK); -#else - wxBitmap cursor_bitmap(cursor_data, 32, 32); - cursor_bitmap.SetMask(new wxMask(cursor_bitmap)); - wxCursor cursor_transparent = wxCursor(cursor_bitmap.ConvertToImage()); -#endif - Core::SetState(Core::CORE_RUN); if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor && RendererHasFocus()) - m_RenderParent->SetCursor(cursor_transparent); + m_RenderParent->SetCursor(wxCURSOR_BLANK); } UpdateGUI(); }