summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/Src/Frame.cpp
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2012-05-16 09:27:37 +0200
committerPierre Bourdon <delroth@gmail.com>2012-05-16 09:27:37 +0200
commitfdff4cb1ffa76e894dd41ca5f97d31f122fd3f86 (patch)
tree20059e8c98923d27f235c9f12de31be97e20240f /Source/Core/DolphinWX/Src/Frame.cpp
parent2b77acc705eae11fdb4a25be6d6ea5db1fa52e21 (diff)
parent5a8ad9230271a5088b0cf582932959214c6b5527 (diff)
Merge branch 'master' into wii-network
Conflicts: Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE.cpp Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_FileIO.cpp Source/Core/Core/Src/IPC_HLE/WII_IPC_HLE_Device_es.cpp Source/VSProps/Dolphin.Win32.props Source/VSProps/Dolphin.x64.props
Diffstat (limited to 'Source/Core/DolphinWX/Src/Frame.cpp')
-rw-r--r--Source/Core/DolphinWX/Src/Frame.cpp38
1 files changed, 28 insertions, 10 deletions
diff --git a/Source/Core/DolphinWX/Src/Frame.cpp b/Source/Core/DolphinWX/Src/Frame.cpp
index e7c4fca067..93e0cf8f15 100644
--- a/Source/Core/DolphinWX/Src/Frame.cpp
+++ b/Source/Core/DolphinWX/Src/Frame.cpp
@@ -500,19 +500,34 @@ void CFrame::OnActive(wxActivateEvent& event)
{
if (event.GetActive() && event.GetEventObject() == m_RenderFrame)
{
-#ifdef _WIN32
+ // 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
m_RenderParent->SetFocus();
#endif
+
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor &&
Core::GetState() == Core::CORE_RUN)
- m_RenderParent->SetCursor(wxCURSOR_BLANK);
+ m_RenderParent->SetCursor(cursor_transparent);
}
else
{
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor)
- m_RenderParent->SetCursor(wxCURSOR_ARROW);
+ m_RenderParent->SetCursor(wxNullCursor);
}
}
event.Skip();
@@ -629,11 +644,6 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
m_RenderFrame->SetTitle(event.GetString());
break;
- case WM_USER_CREATE:
- if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor)
- m_RenderParent->SetCursor(wxCURSOR_BLANK);
- break;
-
case IDM_WINDOWSIZEREQUEST:
{
std::pair<int, int> *win_size = (std::pair<int, int> *)(event.GetClientData());
@@ -643,6 +653,11 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
break;
#ifdef __WXGTK__
+ case WM_USER_CREATE:
+ if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor)
+ m_RenderParent->SetCursor(wxCURSOR_BLANK);
+ break;
+
case IDM_PANIC:
{
wxString caption = event.GetString().BeforeFirst(':');
@@ -666,8 +681,11 @@ void CFrame::GetRenderWindowSize(int& x, int& y, int& width, int& height)
if (!wxIsMainThread())
wxMutexGuiEnter();
#endif
- m_RenderParent->GetClientSize(&width, &height);
- m_RenderParent->GetPosition(&x, &y);
+ wxRect client_rect = m_RenderParent->GetClientRect();
+ width = client_rect.width;
+ height = client_rect.height;
+ x = client_rect.x;
+ y = client_rect.y;
#ifdef __WXGTK__
if (!wxIsMainThread())
wxMutexGuiLeave();