Merge pull request #522 from lioncash/fix-dragdrop-crash
Fix crashes when dragging and dropping files outside of the gamelist
This commit is contained in:
commit
91da031220
|
@ -21,6 +21,7 @@
|
||||||
#include <wx/chartype.h>
|
#include <wx/chartype.h>
|
||||||
#include <wx/defs.h>
|
#include <wx/defs.h>
|
||||||
#include <wx/event.h>
|
#include <wx/event.h>
|
||||||
|
#include <wx/filename.h>
|
||||||
#include <wx/frame.h>
|
#include <wx/frame.h>
|
||||||
#include <wx/gdicmn.h>
|
#include <wx/gdicmn.h>
|
||||||
#include <wx/icon.h>
|
#include <wx/icon.h>
|
||||||
|
@ -53,6 +54,7 @@
|
||||||
#include "Core/CoreParameter.h"
|
#include "Core/CoreParameter.h"
|
||||||
#include "Core/Movie.h"
|
#include "Core/Movie.h"
|
||||||
#include "Core/State.h"
|
#include "Core/State.h"
|
||||||
|
#include "Core/HW/DVDInterface.h"
|
||||||
|
|
||||||
#include "DolphinWX/Frame.h"
|
#include "DolphinWX/Frame.h"
|
||||||
#include "DolphinWX/GameListCtrl.h"
|
#include "DolphinWX/GameListCtrl.h"
|
||||||
|
@ -146,10 +148,34 @@ void CRenderFrame::OnDropFiles(wxDropFilesEvent& event)
|
||||||
{
|
{
|
||||||
if (event.GetNumberOfFiles() != 1)
|
if (event.GetNumberOfFiles() != 1)
|
||||||
return;
|
return;
|
||||||
if (File::IsDirectory(event.GetFiles()[0].ToStdString()))
|
if (File::IsDirectory(WxStrToStr(event.GetFiles()[0])))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
State::LoadAs(event.GetFiles()[0].ToStdString());
|
wxFileName file = event.GetFiles()[0];
|
||||||
|
|
||||||
|
if (file.GetExt() == "dtm")
|
||||||
|
{
|
||||||
|
if (Core::IsRunning())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!Movie::IsReadOnly())
|
||||||
|
{
|
||||||
|
// let's make the read-only flag consistent at the start of a movie.
|
||||||
|
Movie::SetReadOnly(true);
|
||||||
|
main_frame->GetMenuBar()->FindItem(IDM_RECORDREADONLY)->Check(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Movie::PlayInput(WxStrToStr(file.GetFullPath())))
|
||||||
|
main_frame->BootGame("");
|
||||||
|
}
|
||||||
|
else if (!Core::IsRunning())
|
||||||
|
{
|
||||||
|
main_frame->BootGame(WxStrToStr(file.GetFullPath()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DVDInterface::ChangeDisc(WxStrToStr(file.GetFullPath()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
|
@ -52,7 +52,6 @@
|
||||||
#include "Core/CoreParameter.h"
|
#include "Core/CoreParameter.h"
|
||||||
#include "Core/Movie.h"
|
#include "Core/Movie.h"
|
||||||
#include "Core/Boot/Boot.h"
|
#include "Core/Boot/Boot.h"
|
||||||
#include "Core/HW/DVDInterface.h"
|
|
||||||
#include "DiscIO/Blob.h"
|
#include "DiscIO/Blob.h"
|
||||||
#include "DiscIO/Volume.h"
|
#include "DiscIO/Volume.h"
|
||||||
#include "DiscIO/VolumeCreator.h"
|
#include "DiscIO/VolumeCreator.h"
|
||||||
|
@ -216,8 +215,6 @@ CGameListCtrl::CGameListCtrl(wxWindow* parent, const wxWindowID id, const
|
||||||
wxPoint& pos, const wxSize& size, long style)
|
wxPoint& pos, const wxSize& size, long style)
|
||||||
: wxListCtrl(parent, id, pos, size, style), toolTip(nullptr)
|
: wxListCtrl(parent, id, pos, size, style), toolTip(nullptr)
|
||||||
{
|
{
|
||||||
DragAcceptFiles(true);
|
|
||||||
Connect(wxEVT_DROP_FILES, wxDropFilesEventHandler(CGameListCtrl::OnDropFiles), nullptr, this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CGameListCtrl::~CGameListCtrl()
|
CGameListCtrl::~CGameListCtrl()
|
||||||
|
@ -1324,37 +1321,3 @@ void CGameListCtrl::UnselectAll()
|
||||||
SetItemState(i, 0, wxLIST_STATE_SELECTED);
|
SetItemState(i, 0, wxLIST_STATE_SELECTED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CGameListCtrl::OnDropFiles(wxDropFilesEvent& event)
|
|
||||||
{
|
|
||||||
if (event.GetNumberOfFiles() != 1)
|
|
||||||
return;
|
|
||||||
if (File::IsDirectory(WxStrToStr(event.GetFiles()[0])))
|
|
||||||
return;
|
|
||||||
|
|
||||||
wxFileName file = event.GetFiles()[0];
|
|
||||||
|
|
||||||
if (file.GetExt() == "dtm")
|
|
||||||
{
|
|
||||||
if (Core::IsRunning())
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!Movie::IsReadOnly())
|
|
||||||
{
|
|
||||||
// let's make the read-only flag consistent at the start of a movie.
|
|
||||||
Movie::SetReadOnly(true);
|
|
||||||
main_frame->GetMenuBar()->FindItem(IDM_RECORDREADONLY)->Check(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Movie::PlayInput(WxStrToStr(file.GetFullPath())))
|
|
||||||
main_frame->BootGame("");
|
|
||||||
}
|
|
||||||
else if (!Core::IsRunning())
|
|
||||||
{
|
|
||||||
main_frame->BootGame(WxStrToStr(file.GetFullPath()));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DVDInterface::ChangeDisc(WxStrToStr(file.GetFullPath()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -104,7 +104,6 @@ private:
|
||||||
void OnMultiCompressGCM(wxCommandEvent& event);
|
void OnMultiCompressGCM(wxCommandEvent& event);
|
||||||
void OnMultiDecompressGCM(wxCommandEvent& event);
|
void OnMultiDecompressGCM(wxCommandEvent& event);
|
||||||
void OnInstallWAD(wxCommandEvent& event);
|
void OnInstallWAD(wxCommandEvent& event);
|
||||||
void OnDropFiles(wxDropFilesEvent& event);
|
|
||||||
|
|
||||||
void CompressSelection(bool _compress);
|
void CompressSelection(bool _compress);
|
||||||
void AutomaticColumnWidth();
|
void AutomaticColumnWidth();
|
||||||
|
|
Loading…
Reference in New Issue