The gestures frame created its own log target and deleted the previous one but did not restore it when being closed. This left the current log target invalid which led to a crash when calling any wxLog*() function after gestures frame was closed. Fix this by restoring the previous log target when gestures frame is closed. Closes #23767. See #23881.
40 lines
902 B
C++
40 lines
902 B
C++
#ifndef _WX_GESTURES_H_
|
|
#define _WX_GESTURES_H_
|
|
|
|
#include "wx/wx.h"
|
|
|
|
class MyGestureFrame : public wxFrame
|
|
{
|
|
public:
|
|
MyGestureFrame();
|
|
|
|
void OnGesture(wxGestureEvent& event);
|
|
void OnQuit(wxCloseEvent& event);
|
|
|
|
private:
|
|
wxLog *m_logOld;
|
|
wxTextCtrl *m_logText;
|
|
};
|
|
|
|
class MyGesturePanel : public wxPanel
|
|
{
|
|
public:
|
|
MyGesturePanel(MyGestureFrame* parent);
|
|
|
|
void OnPaint(wxPaintEvent& event);
|
|
void OnPan(wxPanGestureEvent& event);
|
|
void OnZoom(wxZoomGestureEvent& event);
|
|
void OnRotate(wxRotateGestureEvent& event);
|
|
void OnTwoFingerTap(wxTwoFingerTapEvent& event);
|
|
void OnLongPress(wxLongPressEvent& event);
|
|
void OnPressAndTap(wxPressAndTapEvent& event);
|
|
|
|
private:
|
|
wxBitmap m_bitmap;
|
|
wxPoint2DDouble m_translateDistance;
|
|
wxAffineMatrix2D m_affineMatrix;
|
|
double m_lastZoomFactor;
|
|
double m_lastRotationAngle;
|
|
};
|
|
|
|
#endif // _WX_GESTURES_H_
|