Enable Unicode input methods via GTK's and XIM
under GTK 2.0. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -817,22 +817,7 @@ class WXDLLEXPORT wxKeyEvent : public wxEvent
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxKeyEvent(wxEventType keyType = wxEVT_NULL);
|
wxKeyEvent(wxEventType keyType = wxEVT_NULL);
|
||||||
wxKeyEvent(const wxKeyEvent& evt) : wxEvent(evt)
|
wxKeyEvent(const wxKeyEvent& evt);
|
||||||
{
|
|
||||||
m_x = evt.m_x;
|
|
||||||
m_y = evt.m_y;
|
|
||||||
|
|
||||||
m_keyCode = evt.m_keyCode;
|
|
||||||
|
|
||||||
m_controlDown = evt.m_controlDown;
|
|
||||||
m_shiftDown = evt.m_shiftDown;
|
|
||||||
m_altDown = evt.m_altDown;
|
|
||||||
m_metaDown = evt.m_metaDown;
|
|
||||||
m_scanCode = evt.m_scanCode;
|
|
||||||
m_rawCode = evt.m_rawCode;
|
|
||||||
m_rawFlags = evt.m_rawFlags;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Find state of shift/control keys
|
// Find state of shift/control keys
|
||||||
bool ControlDown() const { return m_controlDown; }
|
bool ControlDown() const { return m_controlDown; }
|
||||||
@@ -914,8 +899,14 @@ public:
|
|||||||
bool m_metaDown;
|
bool m_metaDown;
|
||||||
bool m_scanCode;
|
bool m_scanCode;
|
||||||
|
|
||||||
// these fields contain the platform-specific information about the pressed
|
#if wxUSE_UNICODE
|
||||||
// key
|
// This contains the full Unicode character
|
||||||
|
// in a character events in Unicode mode
|
||||||
|
wxChar m_uniChar;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// these fields contain the platform-specific information about
|
||||||
|
// key that was pressed
|
||||||
wxUint32 m_rawCode;
|
wxUint32 m_rawCode;
|
||||||
wxUint32 m_rawFlags;
|
wxUint32 m_rawFlags;
|
||||||
|
|
||||||
|
@@ -181,6 +181,15 @@ MyCanvas::MyCanvas( MyFrame *parent )
|
|||||||
|
|
||||||
void MyCanvas::OnChar( wxKeyEvent &event )
|
void MyCanvas::OnChar( wxKeyEvent &event )
|
||||||
{
|
{
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
if (event.m_uniChar)
|
||||||
|
{
|
||||||
|
m_text += event.m_uniChar;
|
||||||
|
Refresh();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// some test cases
|
// some test cases
|
||||||
switch (event.m_keyCode)
|
switch (event.m_keyCode)
|
||||||
{
|
{
|
||||||
@@ -192,7 +201,6 @@ void MyCanvas::OnChar( wxKeyEvent &event )
|
|||||||
default: m_text += event.m_keyCode; break;
|
default: m_text += event.m_keyCode; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyCanvas::OnPaint( wxPaintEvent &event )
|
void MyCanvas::OnPaint( wxPaintEvent &event )
|
||||||
|
@@ -545,8 +545,31 @@ wxKeyEvent::wxKeyEvent(wxEventType type)
|
|||||||
m_altDown = FALSE;
|
m_altDown = FALSE;
|
||||||
m_keyCode = 0;
|
m_keyCode = 0;
|
||||||
m_scanCode = 0;
|
m_scanCode = 0;
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
m_uniChar = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxKeyEvent::wxKeyEvent(const wxKeyEvent& evt)
|
||||||
|
: wxEvent(evt)
|
||||||
|
{
|
||||||
|
m_x = evt.m_x;
|
||||||
|
m_y = evt.m_y;
|
||||||
|
|
||||||
|
m_keyCode = evt.m_keyCode;
|
||||||
|
|
||||||
|
m_controlDown = evt.m_controlDown;
|
||||||
|
m_shiftDown = evt.m_shiftDown;
|
||||||
|
m_altDown = evt.m_altDown;
|
||||||
|
m_metaDown = evt.m_metaDown;
|
||||||
|
m_scanCode = evt.m_scanCode;
|
||||||
|
m_rawCode = evt.m_rawCode;
|
||||||
|
m_rawFlags = evt.m_rawFlags;
|
||||||
|
|
||||||
|
#if wxUSE_UNICODE
|
||||||
|
m_uniChar = evt.m_uniChar;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win)
|
wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win)
|
||||||
{
|
{
|
||||||
|
@@ -1356,8 +1356,11 @@ static void gtk_wxwindow_commit_cb (GtkIMContext *context,
|
|||||||
wxKeyEvent event( wxEVT_KEY_DOWN );
|
wxKeyEvent event( wxEVT_KEY_DOWN );
|
||||||
|
|
||||||
// I wonder how well keyval represents a Unicode char
|
// I wonder how well keyval represents a Unicode char
|
||||||
gunichar ch = g_utf8_get_char( str );
|
event.m_uniChar = g_utf8_get_char( str );
|
||||||
event.m_keyCode = ch;
|
|
||||||
|
// Backward compatible for ISO-8859
|
||||||
|
if (event.m_uniChar < 256)
|
||||||
|
event.m_keyCode = event.m_uniChar;
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
{
|
{
|
||||||
|
@@ -1356,8 +1356,11 @@ static void gtk_wxwindow_commit_cb (GtkIMContext *context,
|
|||||||
wxKeyEvent event( wxEVT_KEY_DOWN );
|
wxKeyEvent event( wxEVT_KEY_DOWN );
|
||||||
|
|
||||||
// I wonder how well keyval represents a Unicode char
|
// I wonder how well keyval represents a Unicode char
|
||||||
gunichar ch = g_utf8_get_char( str );
|
event.m_uniChar = g_utf8_get_char( str );
|
||||||
event.m_keyCode = ch;
|
|
||||||
|
// Backward compatible for ISO-8859
|
||||||
|
if (event.m_uniChar < 256)
|
||||||
|
event.m_keyCode = event.m_uniChar;
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user