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:
|
||||
wxKeyEvent(wxEventType keyType = wxEVT_NULL);
|
||||
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;
|
||||
}
|
||||
|
||||
wxKeyEvent(const wxKeyEvent& evt);
|
||||
|
||||
// Find state of shift/control keys
|
||||
bool ControlDown() const { return m_controlDown; }
|
||||
@@ -914,8 +899,14 @@ public:
|
||||
bool m_metaDown;
|
||||
bool m_scanCode;
|
||||
|
||||
// these fields contain the platform-specific information about the pressed
|
||||
// key
|
||||
#if wxUSE_UNICODE
|
||||
// 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_rawFlags;
|
||||
|
||||
|
@@ -181,6 +181,15 @@ MyCanvas::MyCanvas( MyFrame *parent )
|
||||
|
||||
void MyCanvas::OnChar( wxKeyEvent &event )
|
||||
{
|
||||
#if wxUSE_UNICODE
|
||||
if (event.m_uniChar)
|
||||
{
|
||||
m_text += event.m_uniChar;
|
||||
Refresh();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// some test cases
|
||||
switch (event.m_keyCode)
|
||||
{
|
||||
@@ -192,7 +201,6 @@ void MyCanvas::OnChar( wxKeyEvent &event )
|
||||
default: m_text += event.m_keyCode; break;
|
||||
}
|
||||
|
||||
Refresh();
|
||||
}
|
||||
|
||||
void MyCanvas::OnPaint( wxPaintEvent &event )
|
||||
|
@@ -545,8 +545,31 @@ wxKeyEvent::wxKeyEvent(wxEventType type)
|
||||
m_altDown = FALSE;
|
||||
m_keyCode = 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)
|
||||
{
|
||||
|
@@ -1356,8 +1356,11 @@ static void gtk_wxwindow_commit_cb (GtkIMContext *context,
|
||||
wxKeyEvent event( wxEVT_KEY_DOWN );
|
||||
|
||||
// I wonder how well keyval represents a Unicode char
|
||||
gunichar ch = g_utf8_get_char( str );
|
||||
event.m_keyCode = ch;
|
||||
event.m_uniChar = g_utf8_get_char( str );
|
||||
|
||||
// Backward compatible for ISO-8859
|
||||
if (event.m_uniChar < 256)
|
||||
event.m_keyCode = event.m_uniChar;
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
|
@@ -1356,8 +1356,11 @@ static void gtk_wxwindow_commit_cb (GtkIMContext *context,
|
||||
wxKeyEvent event( wxEVT_KEY_DOWN );
|
||||
|
||||
// I wonder how well keyval represents a Unicode char
|
||||
gunichar ch = g_utf8_get_char( str );
|
||||
event.m_keyCode = ch;
|
||||
event.m_uniChar = g_utf8_get_char( str );
|
||||
|
||||
// Backward compatible for ISO-8859
|
||||
if (event.m_uniChar < 256)
|
||||
event.m_keyCode = event.m_uniChar;
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
|
Reference in New Issue
Block a user