diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 5ddfb2442a..0bc2e97888 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -498,20 +498,29 @@ wxAcceleratorEntry *wxGetAccelFromString(const wxString& label) keyCode = WXK_F1 + n - 1; } else { -#if 0 // this is not supported by GTK+, apparently // several special cases current.MakeUpper(); if ( current == wxT("DEL") ) { - keyCode = VK_DELETE; + keyCode = WXK_DELETE; } + else if ( current == wxT("DELETE") ) { + keyCode = WXK_DELETE; + } + else if ( current == wxT("INS") ) { + keyCode = WXK_INSERT; + } + else if ( current == wxT("INSERT") ) { + keyCode = WXK_INSERT; + } +#if 0 else if ( current == wxT("PGUP") ) { keyCode = VK_PRIOR; } else if ( current == wxT("PGDN") ) { keyCode = VK_NEXT; } +#endif else -#endif // 0 { wxLogDebug(wxT("Unrecognized accel key '%s', accel string ignored."), current.c_str()); diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index e8ab913f6f..21aee14777 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -755,10 +755,10 @@ void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wx if (m_pen.GetStyle() != wxTRANSPARENT) { - gdk_draw_line( m_window, m_penGC, xx+rr, yy, xx+ww-rr, yy ); - gdk_draw_line( m_window, m_penGC, xx+rr, yy+hh, xx+ww-rr, yy+hh ); - gdk_draw_line( m_window, m_penGC, xx, yy+rr, xx, yy+hh-rr ); - gdk_draw_line( m_window, m_penGC, xx+ww, yy+rr, xx+ww, yy+hh-rr ); + gdk_draw_line( m_window, m_penGC, xx+rr+1, yy, xx+ww-rr, yy ); + gdk_draw_line( m_window, m_penGC, xx+rr+1, yy+hh, xx+ww-rr, yy+hh ); + gdk_draw_line( m_window, m_penGC, xx, yy+rr+1, xx, yy+hh-rr ); + gdk_draw_line( m_window, m_penGC, xx+ww, yy+rr+1, xx+ww, yy+hh-rr ); gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, dd, dd, 90*64, 90*64 ); gdk_draw_arc( m_window, m_penGC, FALSE, xx+ww-dd, yy, dd, dd, 0, 90*64 ); gdk_draw_arc( m_window, m_penGC, FALSE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 ); diff --git a/src/gtk/menu.cpp b/src/gtk/menu.cpp index 1149f81f86..351ac19925 100644 --- a/src/gtk/menu.cpp +++ b/src/gtk/menu.cpp @@ -948,8 +948,9 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) // due to an apparent bug in GTK+, we have to use a static buffer here - // otherwise GTK+ 1.2.2 manages to override the memory we pass to it // somehow! (VZ) - static char s_accel[32]; // must be big enough for F12 - strncpy(s_accel, GetHotKey(*mitem).mb_str(), WXSIZEOF(s_accel)); + static char s_accel[50]; // must be big enougg + wxString tmp( GetHotKey(*mitem) ); + strncpy(s_accel, tmp.mb_str(), WXSIZEOF(s_accel)); entry.accelerator = s_accel; #else // !wxUSE_ACCEL entry.accelerator = (char*) NULL; @@ -1090,6 +1091,20 @@ static wxString GetHotKey( const wxMenuItem& item ) case WXK_F12: hotkey << wxT('F') << code - WXK_F1 + 1; break; + + // GTK seems to use XStringToKeySym here + case WXK_NUMPAD_INSERT: + hotkey << wxT("KP_Insert" ); + break; + case WXK_NUMPAD_DELETE: + hotkey << wxT("KP_Delete" ); + break; + case WXK_INSERT: + hotkey << wxT("Insert" ); + break; + case WXK_DELETE: + hotkey << wxT("Delete" ); + break; // if there are any other keys wxGetAccelFromString() may return, // we should process them here diff --git a/src/gtk/statline.cpp b/src/gtk/statline.cpp index 60970765ed..4e8f0787cb 100644 --- a/src/gtk/statline.cpp +++ b/src/gtk/statline.cpp @@ -45,28 +45,28 @@ bool wxStaticLine::Create( wxWindow *parent, wxWindowID id, !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) { wxFAIL_MSG( wxT("wxStaticLine creation failed") ); - return FALSE; + return FALSE; } if ( IsVertical() ) { m_widget = gtk_vseparator_new(); - if (size.x == -1) - { - wxSize new_size( size ); - new_size.x = 4; - SetSize( new_size ); - } + if (size.x == -1) + { + wxSize new_size( size ); + new_size.x = 4; + SetSize( new_size ); + } } else { m_widget = gtk_hseparator_new(); - if (size.y == -1) - { - wxSize new_size( size ); - new_size.y = 4; - SetSize( new_size ); - } + if (size.y == -1) + { + wxSize new_size( size ); + new_size.y = 4; + SetSize( new_size ); + } } m_parent->DoAddChild( this ); diff --git a/src/gtk1/dcclient.cpp b/src/gtk1/dcclient.cpp index e8ab913f6f..21aee14777 100644 --- a/src/gtk1/dcclient.cpp +++ b/src/gtk1/dcclient.cpp @@ -755,10 +755,10 @@ void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wx if (m_pen.GetStyle() != wxTRANSPARENT) { - gdk_draw_line( m_window, m_penGC, xx+rr, yy, xx+ww-rr, yy ); - gdk_draw_line( m_window, m_penGC, xx+rr, yy+hh, xx+ww-rr, yy+hh ); - gdk_draw_line( m_window, m_penGC, xx, yy+rr, xx, yy+hh-rr ); - gdk_draw_line( m_window, m_penGC, xx+ww, yy+rr, xx+ww, yy+hh-rr ); + gdk_draw_line( m_window, m_penGC, xx+rr+1, yy, xx+ww-rr, yy ); + gdk_draw_line( m_window, m_penGC, xx+rr+1, yy+hh, xx+ww-rr, yy+hh ); + gdk_draw_line( m_window, m_penGC, xx, yy+rr+1, xx, yy+hh-rr ); + gdk_draw_line( m_window, m_penGC, xx+ww, yy+rr+1, xx+ww, yy+hh-rr ); gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, dd, dd, 90*64, 90*64 ); gdk_draw_arc( m_window, m_penGC, FALSE, xx+ww-dd, yy, dd, dd, 0, 90*64 ); gdk_draw_arc( m_window, m_penGC, FALSE, xx+ww-dd, yy+hh-dd, dd, dd, 270*64, 90*64 ); diff --git a/src/gtk1/menu.cpp b/src/gtk1/menu.cpp index 1149f81f86..351ac19925 100644 --- a/src/gtk1/menu.cpp +++ b/src/gtk1/menu.cpp @@ -948,8 +948,9 @@ bool wxMenu::GtkAppend(wxMenuItem *mitem) // due to an apparent bug in GTK+, we have to use a static buffer here - // otherwise GTK+ 1.2.2 manages to override the memory we pass to it // somehow! (VZ) - static char s_accel[32]; // must be big enough for F12 - strncpy(s_accel, GetHotKey(*mitem).mb_str(), WXSIZEOF(s_accel)); + static char s_accel[50]; // must be big enougg + wxString tmp( GetHotKey(*mitem) ); + strncpy(s_accel, tmp.mb_str(), WXSIZEOF(s_accel)); entry.accelerator = s_accel; #else // !wxUSE_ACCEL entry.accelerator = (char*) NULL; @@ -1090,6 +1091,20 @@ static wxString GetHotKey( const wxMenuItem& item ) case WXK_F12: hotkey << wxT('F') << code - WXK_F1 + 1; break; + + // GTK seems to use XStringToKeySym here + case WXK_NUMPAD_INSERT: + hotkey << wxT("KP_Insert" ); + break; + case WXK_NUMPAD_DELETE: + hotkey << wxT("KP_Delete" ); + break; + case WXK_INSERT: + hotkey << wxT("Insert" ); + break; + case WXK_DELETE: + hotkey << wxT("Delete" ); + break; // if there are any other keys wxGetAccelFromString() may return, // we should process them here diff --git a/src/gtk1/statline.cpp b/src/gtk1/statline.cpp index 60970765ed..4e8f0787cb 100644 --- a/src/gtk1/statline.cpp +++ b/src/gtk1/statline.cpp @@ -45,28 +45,28 @@ bool wxStaticLine::Create( wxWindow *parent, wxWindowID id, !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) { wxFAIL_MSG( wxT("wxStaticLine creation failed") ); - return FALSE; + return FALSE; } if ( IsVertical() ) { m_widget = gtk_vseparator_new(); - if (size.x == -1) - { - wxSize new_size( size ); - new_size.x = 4; - SetSize( new_size ); - } + if (size.x == -1) + { + wxSize new_size( size ); + new_size.x = 4; + SetSize( new_size ); + } } else { m_widget = gtk_hseparator_new(); - if (size.y == -1) - { - wxSize new_size( size ); - new_size.y = 4; - SetSize( new_size ); - } + if (size.y == -1) + { + wxSize new_size( size ); + new_size.y = 4; + SetSize( new_size ); + } } m_parent->DoAddChild( this );