merged 2.2 branch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
#include <stdio.h>
|
||||
#include "wx/setup.h"
|
||||
#include "wx/window.h"
|
||||
#include "wx/app.h"
|
||||
#include "wx/frame.h"
|
||||
#endif
|
||||
|
||||
#include "wx/os2/accel.h"
|
||||
@@ -42,59 +44,127 @@ protected:
|
||||
|
||||
wxAcceleratorRefData::wxAcceleratorRefData()
|
||||
{
|
||||
// TODO
|
||||
/*
|
||||
HACCEL m_hAccel;
|
||||
*/
|
||||
}
|
||||
m_ok = FALSE;
|
||||
m_hAccel = 0;
|
||||
} // end of wxAcceleratorRefData::wxAcceleratorRefData
|
||||
|
||||
wxAcceleratorRefData::~wxAcceleratorRefData()
|
||||
{
|
||||
/*
|
||||
if (m_hAccel)
|
||||
{
|
||||
DestroyAcceleratorTable((HACCEL) m_hAccel);
|
||||
}
|
||||
m_hAccel = 0 ;
|
||||
*/
|
||||
}
|
||||
if (m_hAccel)
|
||||
{
|
||||
WinDestroyAccelTable((HACCEL) m_hAccel);
|
||||
}
|
||||
m_hAccel = 0 ;
|
||||
} // end of wxAcceleratorRefData::~wxAcceleratorRefData
|
||||
|
||||
wxAcceleratorTable::wxAcceleratorTable()
|
||||
{
|
||||
m_refData = NULL;
|
||||
}
|
||||
m_refData = NULL;
|
||||
} // end of wxAcceleratorTable::wxAcceleratorTable
|
||||
|
||||
wxAcceleratorTable::~wxAcceleratorTable()
|
||||
{
|
||||
}
|
||||
} // end of wxAcceleratorTable::~wxAcceleratorTable
|
||||
|
||||
// Load from .rc resource
|
||||
wxAcceleratorTable::wxAcceleratorTable(const wxString& resource)
|
||||
wxAcceleratorTable::wxAcceleratorTable(
|
||||
const wxString& rResource
|
||||
)
|
||||
{
|
||||
HACCEL hAccel;
|
||||
ULONG ulId;
|
||||
|
||||
m_refData = new wxAcceleratorRefData;
|
||||
|
||||
/* TODO: load acelerator from resource, if appropriate for your platform
|
||||
ulId = atol((char*)rResource.c_str());
|
||||
hAccel = ::WinLoadAccelTable( vHabmain
|
||||
,NULL // resources always in .exe
|
||||
,(ULONG)ulId
|
||||
);
|
||||
if (wxTheApp->GetTopWindow() != NULL)
|
||||
{
|
||||
//
|
||||
// If we have accelerators the top window is the frame
|
||||
//
|
||||
wxFrame* pFrame = (wxFrame*)wxTheApp->GetTopWindow();
|
||||
|
||||
::WinSetAccelTable( vHabmain
|
||||
,(HWND)pFrame->GetFrame()
|
||||
,hAccel
|
||||
);
|
||||
}
|
||||
M_ACCELDATA->m_hAccel = hAccel;
|
||||
M_ACCELDATA->m_ok = (hAccel != 0);
|
||||
*/
|
||||
}
|
||||
|
||||
extern int wxCharCodeWXToOS2(int id, bool *isVirtual);
|
||||
extern int wxCharCodeWXToOS2(
|
||||
int nId
|
||||
, bool* pbIsVirtual
|
||||
);
|
||||
|
||||
// Create from an array
|
||||
wxAcceleratorTable::wxAcceleratorTable(int n, wxAcceleratorEntry entries[])
|
||||
wxAcceleratorTable::wxAcceleratorTable(
|
||||
int n
|
||||
, wxAcceleratorEntry vaEntries[]
|
||||
)
|
||||
{
|
||||
m_refData = new wxAcceleratorRefData;
|
||||
int nAccelLength = ((sizeof(ACCEL) * n) + sizeof(ACCELTABLE));
|
||||
PACCELTABLE pArr;
|
||||
int i;
|
||||
|
||||
/* TODO: create table from entries
|
||||
*/
|
||||
}
|
||||
m_refData = new wxAcceleratorRefData;
|
||||
pArr = (PACCELTABLE) new BYTE[nAccelLength];
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
{
|
||||
USHORT uVirt = AF_CHAR;
|
||||
|
||||
if (vaEntries[i].GetFlags() & wxACCEL_ALT)
|
||||
uVirt |= AF_ALT;
|
||||
if (vaEntries[i].GetFlags() & wxACCEL_SHIFT)
|
||||
uVirt |= AF_SHIFT;
|
||||
if (vaEntries[i].GetFlags() & wxACCEL_CTRL)
|
||||
uVirt |= AF_CONTROL;
|
||||
|
||||
bool bIsVirtual;
|
||||
USHORT uKey = wxCharCodeWXToOS2( vaEntries[i].GetKeyCode()
|
||||
,&bIsVirtual
|
||||
);
|
||||
if (bIsVirtual)
|
||||
uVirt = AF_CHAR | AF_VIRTUALKEY;
|
||||
|
||||
USHORT uCmd = vaEntries[i].GetCommand();
|
||||
|
||||
pArr->aaccel[i].fs = uVirt;
|
||||
pArr->aaccel[i].key = uKey;
|
||||
pArr->aaccel[i].cmd = uCmd;
|
||||
}
|
||||
pArr->codepage = 437; // default to english Fix???
|
||||
pArr->cAccel = (USHORT)n;
|
||||
M_ACCELDATA->m_hAccel = ::WinCreateAccelTable( vHabmain
|
||||
,pArr
|
||||
);
|
||||
if (wxTheApp->GetTopWindow() != NULL)
|
||||
{
|
||||
//
|
||||
// If we have accelerators the top window is the frame
|
||||
//
|
||||
wxFrame* pFrame = (wxFrame*)wxTheApp->GetTopWindow();
|
||||
|
||||
::WinSetAccelTable( vHabmain
|
||||
,(HWND)pFrame->GetFrame()
|
||||
,M_ACCELDATA->m_hAccel
|
||||
);
|
||||
}
|
||||
|
||||
delete[] pArr;
|
||||
M_ACCELDATA->m_ok = (M_ACCELDATA->m_hAccel != 0);
|
||||
} // end of wxAcceleratorTable::wxAcceleratorTable
|
||||
|
||||
bool wxAcceleratorTable::Ok() const
|
||||
{
|
||||
// TODO
|
||||
return FALSE;
|
||||
}
|
||||
return(M_ACCELDATA && (M_ACCELDATA->m_ok));
|
||||
} // end of wxAcceleratorTable::Ok
|
||||
|
||||
void wxAcceleratorTable::SetHACCEL(WXHACCEL hAccel)
|
||||
{
|
||||
@@ -111,14 +181,17 @@ WXHACCEL wxAcceleratorTable::GetHACCEL() const
|
||||
return (WXHACCEL) M_ACCELDATA->m_hAccel;
|
||||
}
|
||||
|
||||
bool wxAcceleratorTable::Translate(wxWindow *window, WXMSG *wxmsg) const
|
||||
bool wxAcceleratorTable::Translate(
|
||||
WXHWND hWnd
|
||||
, WXMSG* pWxmsg
|
||||
) const
|
||||
{
|
||||
// TODO:
|
||||
/*
|
||||
MSG *msg = (MSG *)wxmsg;
|
||||
PQMSG pMsg = (PQMSG)pWxmsg;
|
||||
|
||||
return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg);
|
||||
*/
|
||||
return FALSE;
|
||||
}
|
||||
return Ok() && ::WinTranslateAccel( vHabmain
|
||||
,(HWND)hWnd
|
||||
,GetHaccel()
|
||||
,pMsg
|
||||
);
|
||||
} // end of wxAcceleratorTable::Translate
|
||||
|
||||
|
||||
Reference in New Issue
Block a user