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:
Robert Roebling
2002-10-30 19:56:03 +00:00
parent cf24909108
commit 9f98d38391
5 changed files with 51 additions and 23 deletions

View File

@@ -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;

View File

@@ -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 )

View File

@@ -545,9 +545,32 @@ 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)
{ {
SetEventType(wxEVT_CREATE); SetEventType(wxEVT_CREATE);

View File

@@ -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)
{ {

View File

@@ -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)
{ {