case GDK_F11: key_code = WXK_F11; break;
case GDK_F12: key_code = WXK_F12; break;
default:
+ {
+ if (event->length == 1)
{
if (event->length == 1)
{
}
#endif // wxUSE_CARET
-
wxWindowGTK *active = wxGetTopLevelParent(win);
if ( active != g_activeFrame )
{
if ( g_activeFrame )
{
+ wxLogTrace(wxT("activate"), wxT("Deactivating frame %p (from focus_in)"), g_activeFrame);
wxActivateEvent event(wxEVT_ACTIVATE, FALSE, g_activeFrame->GetId());
event.SetEventObject(g_activeFrame);
g_activeFrame->GetEventHandler()->ProcessEvent(event);
}
+ wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), active);
g_activeFrame = active;
wxActivateEvent event(wxEVT_ACTIVATE, TRUE, g_activeFrame->GetId());
event.SetEventObject(g_activeFrame);
if (!win->m_hasVMT) return FALSE;
if (g_blockEventsOnDrag) return FALSE;
- //wxASSERT_MSG( wxGetTopLevelParent(win) == g_activeFrame, wxT("unfocusing window that haven't gained focus properly") )
- g_activeFrameLostFocus = TRUE;
-
// VZ: this is really weird but GTK+ seems to call us from inside
// gtk_widget_grab_focus(), i.e. it first sends "focus_out" signal to
// this widget and then "focus_in". This is totally unexpected and
return FALSE;
}
+ if ( !g_activeFrameLostFocus && g_activeFrame )
+ {
+ wxASSERT_MSG( wxGetTopLevelParent(win) == g_activeFrame, wxT("unfocusing window that haven't gained focus properly") )
+ g_activeFrameLostFocus = TRUE;
+ }
+
// if the focus goes out of our app alltogether, OnIdle() will send
// wxActivateEvent, otherwise gtk_window_focus_in_callback() will reset
// g_sendActivateEvent to -1
{
if ( g_activeFrame )
{
+ wxLogTrace(wxT("activate"), wxT("Deactivating frame %p (from idle)"), g_activeFrame);
wxActivateEvent event(wxEVT_ACTIVATE, FALSE, g_activeFrame->GetId());
event.SetEventObject(g_activeFrame);
g_activeFrame->GetEventHandler()->ProcessEvent(event);
case GDK_F11: key_code = WXK_F11; break;
case GDK_F12: key_code = WXK_F12; break;
default:
+ {
+ if (event->length == 1)
{
if (event->length == 1)
{
}
#endif // wxUSE_CARET
-
wxWindowGTK *active = wxGetTopLevelParent(win);
if ( active != g_activeFrame )
{
if ( g_activeFrame )
{
+ wxLogTrace(wxT("activate"), wxT("Deactivating frame %p (from focus_in)"), g_activeFrame);
wxActivateEvent event(wxEVT_ACTIVATE, FALSE, g_activeFrame->GetId());
event.SetEventObject(g_activeFrame);
g_activeFrame->GetEventHandler()->ProcessEvent(event);
}
+ wxLogTrace(wxT("activate"), wxT("Activating frame %p (from focus_in)"), active);
g_activeFrame = active;
wxActivateEvent event(wxEVT_ACTIVATE, TRUE, g_activeFrame->GetId());
event.SetEventObject(g_activeFrame);
if (!win->m_hasVMT) return FALSE;
if (g_blockEventsOnDrag) return FALSE;
- //wxASSERT_MSG( wxGetTopLevelParent(win) == g_activeFrame, wxT("unfocusing window that haven't gained focus properly") )
- g_activeFrameLostFocus = TRUE;
-
// VZ: this is really weird but GTK+ seems to call us from inside
// gtk_widget_grab_focus(), i.e. it first sends "focus_out" signal to
// this widget and then "focus_in". This is totally unexpected and
return FALSE;
}
+ if ( !g_activeFrameLostFocus && g_activeFrame )
+ {
+ wxASSERT_MSG( wxGetTopLevelParent(win) == g_activeFrame, wxT("unfocusing window that haven't gained focus properly") )
+ g_activeFrameLostFocus = TRUE;
+ }
+
// if the focus goes out of our app alltogether, OnIdle() will send
// wxActivateEvent, otherwise gtk_window_focus_in_callback() will reset
// g_sendActivateEvent to -1
{
if ( g_activeFrame )
{
+ wxLogTrace(wxT("activate"), wxT("Deactivating frame %p (from idle)"), g_activeFrame);
wxActivateEvent event(wxEVT_ACTIVATE, FALSE, g_activeFrame->GetId());
event.SetEventObject(g_activeFrame);
g_activeFrame->GetEventHandler()->ProcessEvent(event);