// Purpose: Top level window, abstraction of wxFrame and wxDialog
// Author: Vaclav Slavik
// Created: 2006-08-10
-// RCS-ID: $Id$
// Copyright: (c) 2006 REA Elektronik GmbH
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/dfb/private.h"
+#define TRACE_EVENTS "events"
+
// ============================================================================
// wxTopLevelWindowDFB
// ============================================================================
// showing and hiding
// ----------------------------------------------------------------------------
-#warning "FIXME: the rest of this file is almost same as for MGL, merge it"
bool wxTopLevelWindowDFB::ShowFullScreen(bool show, long style)
{
if ( show == m_fsIsShowing )
{
return false;
}
+
+// ----------------------------------------------------------------------------
+// focus handling
+// ----------------------------------------------------------------------------
+
+void wxTopLevelWindowDFB::HandleFocusEvent(const wxDFBWindowEvent& event_)
+{
+ const DFBWindowEvent& dfbevent = event_;
+ const bool activate = (dfbevent.type == DWET_GOTFOCUS);
+
+ wxLogTrace(TRACE_EVENTS,
+ "toplevel window %p ('%s') %s focus",
+ this, GetName(),
+ activate ? "got" : "lost");
+
+ wxActivateEvent event(wxEVT_ACTIVATE, activate, GetId());
+ event.SetEventObject(this);
+ HandleWindowEvent(event);
+
+ // if a frame that doesn't have wx focus inside it just got focus, we
+ // need to set focus to it (or its child):
+ if ( activate )
+ {
+ wxWindow *focused = wxWindow::FindFocus();
+ if ( !focused || focused->GetTLW() != this )
+ {
+ wxLogTrace(TRACE_EVENTS,
+ "setting wx focus to toplevel window %p ('%s')",
+ this, GetName());
+
+ if ( CanAcceptFocus() )
+ SetFocus();
+ else
+ wxLogTrace(TRACE_EVENTS, "...which doesn't accept it");
+ }
+ }
+}