+
+// ----------------------------------------------------------------------------
+// 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);
+ GetEventHandler()->ProcessEvent(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");
+ }
+ }
+}