diff --git a/xvaga/xvaga.cpp b/xvaga/xvaga.cpp index 1512683c8..b5fd034e1 100755 --- a/xvaga/xvaga.cpp +++ b/xvaga/xvaga.cpp @@ -173,11 +173,14 @@ const wxCursor* GetCursorResource(int rid) case CURSOR_IBEAM: cursor = new wxCursor(wxCURSOR_IBEAM); break; default: { - wxString strName = ::GetResourceName("Cursor", rid); + const wxString strName = ::GetResourceName("Cursor", rid); if (::wxFileExists(strName)) { -#ifdef WIN32 - cursor = new wxCursor(strName, wxBITMAP_TYPE_CUR); +#ifdef WIN32 + if (strName.EndsWith(".ico")) + cursor = new wxCursor(strName, wxBITMAP_TYPE_ICO); + else + cursor = new wxCursor(strName, wxBITMAP_TYPE_CUR); #else cursor = wxSTANDARD_CURSOR; #endif @@ -670,7 +673,6 @@ wxFont& TFontCache::FindOrCreate(int pointSize, int family, int style, int weigh } /////////////////////////////////////////////////////////// - // Generic window class /////////////////////////////////////////////////////////// @@ -717,7 +719,8 @@ protected: virtual void OnClose(wxCloseEvent& e); virtual void OnKeyDown(wxKeyEvent& e); virtual void OnKillFocus(wxFocusEvent& e); - virtual void OnMenu(wxCommandEvent& event); + virtual void OnMenu(wxCommandEvent& e); + virtual void OnMouseCaptureLost(wxMouseCaptureLostEvent& e); virtual void OnMouseDouble(wxMouseEvent& e); virtual void OnMouseDown(wxMouseEvent& e); virtual void OnMouseMove(wxMouseEvent& e); @@ -731,7 +734,7 @@ protected: public: void DoXvtEvent(EVENT& e); - virtual void OnPaint(wxPaintEvent& event); + virtual void OnPaint(wxPaintEvent& e); public: WIN_TYPE _type; @@ -760,12 +763,12 @@ class TTaskWin : public wxFrame wxWindow* m_MenuOwner; protected: - virtual void OnClose(wxCloseEvent& event); - virtual void OnMenu(wxCommandEvent& event); - virtual void OnSize(wxSizeEvent& event); + virtual void OnClose(wxCloseEvent& e); + virtual void OnMenu(wxCommandEvent& e); + virtual void OnSize(wxSizeEvent& e); public: - virtual void OnPaint(wxPaintEvent& event); + virtual void OnPaint(wxPaintEvent& e); public: void SetMenuTree(const MENU_ITEM* tree); @@ -797,6 +800,7 @@ BEGIN_EVENT_TABLE(TwxWindow, TwxWindowBase) EVT_MIDDLE_DOWN(TwxWindow::OnMouseDown) EVT_MIDDLE_UP(TwxWindow::OnMouseUp) EVT_MOTION(TwxWindow::OnMouseMove) + EVT_MOUSE_CAPTURE_LOST(TwxWindow::OnMouseCaptureLost) EVT_MOUSEWHEEL(TwxWindow::OnMouseWheel) EVT_PAINT(TwxWindow::OnPaint) EVT_RIGHT_DOWN(TwxWindow::OnMouseDown) @@ -814,7 +818,7 @@ void TwxWindow::DoXvtEvent(EVENT& e) _eh((WINDOW)this, &e); } -void TwxWindow::OnChar(wxKeyEvent& event) +void TwxWindow::OnChar(wxKeyEvent& evt) { static int nSkipNextDotKey = -883; // Valore indefinito if (nSkipNextDotKey == -883) // Devo stabilire se attivare la gestione o no @@ -823,19 +827,18 @@ void TwxWindow::OnChar(wxKeyEvent& event) char str[2]; xvt_sys_get_profile_string(campoini, "Main", "Point2Comma", "1", str, sizeof(str)); nSkipNextDotKey = strchr("1XY", *str) != NULL ? 0 : -1; // Dis/Abilita conversione punto in virgola - } EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_CHAR; - int k = event.GetKeyCode(); + int k = evt.GetKeyCode(); if (nSkipNextDotKey == 1) { nSkipNextDotKey = 0; if (k == '.') { - event.Skip(); + evt.Skip(); return; } } @@ -854,7 +857,7 @@ void TwxWindow::OnChar(wxKeyEvent& event) case WXK_NUMPAD7: case WXK_NUMPAD8: case WXK_NUMPAD9: - event.Skip(); + evt.Skip(); return; case WXK_NUMPAD_DECIMAL: // Arriva solo dalla 3.6.3 in poi case WXK_DECIMAL: // ??? Arriva sia '.' sia WXK_DECIMAL=340 @@ -874,7 +877,7 @@ void TwxWindow::OnChar(wxKeyEvent& event) case WXK_RIGHT: k = K_RIGHT; break; case WXK_UP : k = K_UP; break; case WXK_TAB: - if (event.ShiftDown()) + if (evt.ShiftDown()) k = K_BTAB; break; default: @@ -883,9 +886,9 @@ void TwxWindow::OnChar(wxKeyEvent& event) break; } - e.v.chr.shift = event.ShiftDown(); - e.v.chr.control = event.ControlDown(); - if (event.AltDown()) + e.v.chr.shift = evt.ShiftDown(); + e.v.chr.control = evt.ControlDown(); + if (evt.AltDown()) { e.v.chr.control = TRUE; if (xvt_chr_is_alnum(k)) @@ -894,7 +897,7 @@ void TwxWindow::OnChar(wxKeyEvent& event) { if (strchr("+-", k) == NULL) // Aggiungere qui vari testi eventuali { - event.Skip(); + evt.Skip(); return; } } @@ -904,30 +907,30 @@ void TwxWindow::OnChar(wxKeyEvent& event) DoXvtEvent(e); } -void TwxWindow::OnKeyDown(wxKeyEvent& event) +void TwxWindow::OnKeyDown(wxKeyEvent& e) { #ifdef WIN32 // Triste necessita' per gestire corretamente Alt+'+' del tasterino - const int k = event.GetKeyCode(); + const int k = e.GetKeyCode(); if (k == WXK_NUMPAD_ADD) { - if (event.AltDown()) + if (e.AltDown()) { - OnChar(event); + OnChar(e); return; } } #else - if (event.AltDown() || event.ControlDown()) + if (e.AltDown() || e.ControlDown()) { OnChar(event); return; } #endif - event.Skip(); + e.Skip(); } -void TwxWindow::OnClose(wxCloseEvent& event) +void TwxWindow::OnClose(wxCloseEvent& WXUNUSED(e)) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_DESTROY; @@ -935,7 +938,7 @@ void TwxWindow::OnClose(wxCloseEvent& event) Destroy(); } -void TwxWindow::OnKillFocus(wxFocusEvent& event) +void TwxWindow::OnKillFocus(wxFocusEvent& WXUNUSED(e)) { if (_TheCaret.Owner() == (WINDOW)this) _TheCaret.Hide(); @@ -946,78 +949,83 @@ void TwxWindow::OnKillFocus(wxFocusEvent& event) DoXvtEvent(e); } -void TwxWindow::OnMenu(wxCommandEvent& event) +void TwxWindow::OnMenu(wxCommandEvent& evt) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_COMMAND; e.v.cmd.control = 0; e.v.cmd.shift = 0; - e.v.cmd.tag = event.GetId(); + e.v.cmd.tag = evt.GetId(); DoXvtEvent(e); } -void TwxWindow::OnMouseDouble(wxMouseEvent& event) +void TwxWindow::OnMouseCaptureLost(wxMouseCaptureLostEvent& WXUNUSED(e)) +{ + xvt_win_release_pointer(); +} + +void TwxWindow::OnMouseDouble(wxMouseEvent& evt) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_MOUSE_DBL; - e.v.mouse.button = (event.RightDown() ? 1 : 0) + (event.MiddleDown() ? 2 : 0); - e.v.mouse.control = event.ControlDown(); - e.v.mouse.shift = event.ShiftDown(); - e.v.mouse.where.h = event.GetX(); - e.v.mouse.where.v = event.GetY(); + e.v.mouse.button = (evt.RightDown() ? 1 : 0) + (evt.MiddleDown() ? 2 : 0); + e.v.mouse.control = evt.ControlDown(); + e.v.mouse.shift = evt.ShiftDown(); + e.v.mouse.where.h = evt.GetX(); + e.v.mouse.where.v = evt.GetY(); DoXvtEvent(e); } -void TwxWindow::OnMouseDown(wxMouseEvent& event) +void TwxWindow::OnMouseDown(wxMouseEvent& evt) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_MOUSE_DOWN; - e.v.mouse.button = (event.RightDown() ? 1 : 0) + (event.MiddleDown() ? 2 : 0); - e.v.mouse.control = event.ControlDown(); - e.v.mouse.shift = event.ShiftDown(); - e.v.mouse.where.h = event.GetX(); - e.v.mouse.where.v = event.GetY(); + e.v.mouse.button = (evt.RightDown() ? 1 : 0) + (evt.MiddleDown() ? 2 : 0); + e.v.mouse.control = evt.ControlDown(); + e.v.mouse.shift = evt.ShiftDown(); + e.v.mouse.where.h = evt.GetX(); + e.v.mouse.where.v = evt.GetY(); DoXvtEvent(e); SetFocus(); // Triste necessita' } -void TwxWindow::OnMouseMove(wxMouseEvent& event) +void TwxWindow::OnMouseMove(wxMouseEvent& evt) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_MOUSE_MOVE; - e.v.mouse.button = (event.RightIsDown() ? 1 : 0) + (event.MiddleIsDown() ? 2 : 0); - e.v.mouse.control = event.ControlDown(); - e.v.mouse.shift = event.m_shiftDown; - e.v.mouse.where.h = event.GetX(); - e.v.mouse.where.v = event.GetY(); + e.v.mouse.button = (evt.RightIsDown() ? 1 : 0) + (evt.MiddleIsDown() ? 2 : 0); + e.v.mouse.control = evt.ControlDown(); + e.v.mouse.shift = evt.m_shiftDown; + e.v.mouse.where.h = evt.GetX(); + e.v.mouse.where.v = evt.GetY(); DoXvtEvent(e); } -void TwxWindow::OnMouseUp(wxMouseEvent& event) +void TwxWindow::OnMouseUp(wxMouseEvent& evt) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_MOUSE_UP; - e.v.mouse.button = (event.RightUp() ? 1 : 0) + (event.MiddleUp() ? 2 : 0); - e.v.mouse.control = event.ControlDown(); - e.v.mouse.shift = event.ShiftDown(); - e.v.mouse.where.h = event.GetX(); - e.v.mouse.where.v = event.GetY(); + e.v.mouse.button = (evt.RightUp() ? 1 : 0) + (evt.MiddleUp() ? 2 : 0); + e.v.mouse.control = evt.ControlDown(); + e.v.mouse.shift = evt.ShiftDown(); + e.v.mouse.where.h = evt.GetX(); + e.v.mouse.where.v = evt.GetY(); DoXvtEvent(e); } -void TwxWindow::OnMouseWheel(wxMouseEvent& event) +void TwxWindow::OnMouseWheel(wxMouseEvent& evt) { - const int nRot = event.GetWheelRotation(); + const int nRot = evt.GetWheelRotation(); if (nRot != 0) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_VSCROLL; - e.v.scroll.pos = event.GetY(); + e.v.scroll.pos = evt.GetY(); e.v.scroll.what = nRot > 0 ? SC_LINE_UP : SC_LINE_DOWN; DoXvtEvent(e); } } -void TwxWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) +void TwxWindow::OnPaint(wxPaintEvent& WXUNUSED(evt)) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_UPDATE; @@ -1058,42 +1066,42 @@ static SCROLL_CONTROL ConvertScrollToXVT(wxEventType et) return SC_NONE; } -void TwxWindow::OnScroll(wxScrollEvent& event) +void TwxWindow::OnScroll(wxScrollEvent& evt) { - SCROLL_CONTROL sc = ConvertScrollToXVT(event.GetEventType()); + SCROLL_CONTROL sc = ConvertScrollToXVT(evt.GetEventType()); if (sc != SC_NONE) { EVENT e; memset(&e, 0, sizeof(EVENT)); - const wxScrollBar* sb = (wxScrollBar*)event.GetEventObject(); + const wxScrollBar* sb = (wxScrollBar*)evt.GetEventObject(); const wxSize sz = sb->GetSize(); e.type = E_CONTROL; - e.v.ctl.id = event.GetId(); + e.v.ctl.id = evt.GetId(); e.v.ctl.ci.type = sz.x > sz.y ? WC_HSCROLL : WC_VSCROLL; e.v.ctl.ci.win = (WINDOW)sb; - e.v.ctl.ci.v.scroll.pos = event.GetPosition(); + e.v.ctl.ci.v.scroll.pos = evt.GetPosition(); e.v.ctl.ci.v.scroll.what = sc; DoXvtEvent(e); } } -void TwxWindow::OnScrollWin(wxScrollWinEvent& event) +void TwxWindow::OnScrollWin(wxScrollWinEvent& evt) { - wxEventType et = event.GetEventType(); + wxEventType et = evt.GetEventType(); et -= (wxEVT_SCROLLWIN_TOP - wxEVT_SCROLL_TOP); const SCROLL_CONTROL sc = ConvertScrollToXVT(et); if (sc != SC_NONE) { EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = event.GetOrientation() == wxHORIZONTAL ? E_HSCROLL : E_VSCROLL; - e.v.scroll.pos = event.GetPosition(); + e.type = evt.GetOrientation() == wxHORIZONTAL ? E_HSCROLL : E_VSCROLL; + e.v.scroll.pos = evt.GetPosition(); e.v.scroll.what = sc; DoXvtEvent(e); } } -void TwxWindow::OnSetFocus(wxFocusEvent& event) +void TwxWindow::OnSetFocus(wxFocusEvent& WXUNUSED(e)) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_FOCUS; @@ -1101,16 +1109,16 @@ void TwxWindow::OnSetFocus(wxFocusEvent& event) DoXvtEvent(e); } -void TwxWindow::OnSize(wxSizeEvent& event) +void TwxWindow::OnSize(wxSizeEvent& evt) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_SIZE; - e.v.size.height = event.GetSize().x; - e.v.size.width = event.GetSize().y; + e.v.size.height = evt.GetSize().x; + e.v.size.width = evt.GetSize().y; DoXvtEvent(e); } -void TwxWindow::OnTimer(wxTimerEvent& event) +void TwxWindow::OnTimer(wxTimerEvent& WXUNUSED(evt)) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_TIMER; @@ -1165,25 +1173,25 @@ BEGIN_EVENT_TABLE(TTaskWin, wxFrame) EVT_SIZE(TTaskWin::OnSize) END_EVENT_TABLE() -void TTaskWin::OnClose(wxCloseEvent& event) +void TTaskWin::OnClose(wxCloseEvent& evt) { - if (event.CanVeto()) + if (evt.CanVeto()) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_CLOSE; int veto = _task_win_handler((WINDOW)this, &e); - event.Veto(veto != 0); + evt.Veto(veto != 0); } else - event.Skip(); + evt.Skip(); } -void TTaskWin::OnMenu(wxCommandEvent& event) +void TTaskWin::OnMenu(wxCommandEvent& evt) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_COMMAND; e.v.cmd.control = 0; e.v.cmd.shift = 0; - e.v.cmd.tag = event.GetId(); + e.v.cmd.tag = evt.GetId(); if (m_MenuOwner == NULL || m_MenuOwner == this) _task_win_handler((WINDOW)this, &e); @@ -1191,7 +1199,7 @@ void TTaskWin::OnMenu(wxCommandEvent& event) ((TwxWindow*)m_MenuOwner)->_eh((WINDOW)m_MenuOwner, &e); } -void TTaskWin::OnPaint(wxPaintEvent& WXUNUSED(event)) +void TTaskWin::OnPaint(wxPaintEvent& WXUNUSED(evt)) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_UPDATE; @@ -1209,12 +1217,12 @@ void TTaskWin::OnPaint(wxPaintEvent& WXUNUSED(event)) dc.KillDC(); } -void TTaskWin::OnSize(wxSizeEvent& event) +void TTaskWin::OnSize(wxSizeEvent& evt) { EVENT e; memset(&e, 0, sizeof(EVENT)); e.type = E_SIZE; - e.v.size.height = event.GetSize().x; - e.v.size.width = event.GetSize().y; + e.v.size.height = evt.GetSize().x; + e.v.size.width = evt.GetSize().y; _task_win_handler((WINDOW)this, &e); } @@ -1763,7 +1771,7 @@ class TwxCalendarDlg : public wxDialog protected: virtual bool TransferDataFromWindow(); - void OnCalendar(wxCalendarEvent& event); + void OnCalendar(wxCalendarEvent& e); public: TwxCalendarDlg(wxWindow* parent, const wxPoint& pnt, wxDateTime& date); @@ -1775,7 +1783,7 @@ BEGIN_EVENT_TABLE(TwxCalendarDlg, wxDialog) EVT_CALENDAR(wxID_ANY, TwxCalendarDlg::OnCalendar) END_EVENT_TABLE() -void TwxCalendarDlg::OnCalendar(wxCalendarEvent& event) +void TwxCalendarDlg::OnCalendar(wxCalendarEvent& e) { wxCommandEvent evt(wxEVT_COMMAND_BUTTON_CLICKED, wxID_OK); AddPendingEvent(evt);