#ifndef WX_PRECOMP
#include "wx/dcclient.h"
+ #include "wx/nonownedwnd.h"
#endif
#include "wx/caret.h"
#include "wx/dfb/private.h"
#include "wx/private/overlay.h"
-#define TRACE_EVENTS _T("events")
-#define TRACE_PAINT _T("paint")
+#define TRACE_EVENTS "events"
+#define TRACE_PAINT "paint"
// ===========================================================================
// implementation
if ( gs_mouseCapture == this )
ReleaseMouse();
-#warning "FIXME: what to do with gs_activeFrame here and elsewhere?"
-#if 0
- if (gs_activeFrame == this)
- {
- gs_activeFrame = NULL;
- // activate next frame in Z-order:
- if ( m_wnd->prev )
- {
- wxWindowDFB *win = (wxWindowDFB*)m_wnd->prev->userData;
- win->SetFocus();
- }
- else if ( m_wnd->next )
- {
- wxWindowDFB *win = (wxWindowDFB*)m_wnd->next->userData;
- win->SetFocus();
- }
- }
-#endif
-
if ( gs_focusedWindow == this )
DFBKillFocus();
wxIDirectFBSurfacePtr wxWindowDFB::ObtainDfbSurface() const
{
- wxCHECK_MSG( m_parent, NULL, _T("parentless window?") );
+ wxCHECK_MSG( m_parent, NULL, "parentless window?" );
wxIDirectFBSurfacePtr parentSurface(m_parent->GetDfbSurface());
- wxCHECK_MSG( parentSurface, NULL, _T("invalid parent surface") );
+ wxCHECK_MSG( parentSurface, NULL, "invalid parent surface" );
wxRect r(GetRect());
AdjustForParentClientOrigin(r.x, r.y, 0);
if ( !m_surface )
{
m_surface = ObtainDfbSurface();
- wxASSERT_MSG( m_surface, _T("invalid DirectFB surface") );
+ wxASSERT_MSG( m_surface, "invalid DirectFB surface" );
}
return m_surface;
gs_focusedWindow = this;
- if ( IsShownOnScreen() )
+ if ( IsShownOnScreen() &&
+ (!oldFocusedWindow || oldFocusedWindow->GetTLW() != m_tlw) )
{
m_tlw->SetDfbFocus();
}
// are hidden; when the TLW becomes visible, it will set the focus
// to use from wxTLW::Show()
- #warning "FIXME: implement in terms of DWET_{GOT,LOST}FOCUS"
- #warning "FIXME: keep this or not? not, think multiapp core"
-#if 0
- wxWindowDFB *active = wxGetTopLevelParent((wxWindow*)this);
- if ( !(m_windowStyle & wxPOPUP_WINDOW) && active != gs_activeFrame )
- {
- if ( gs_activeFrame )
- {
- wxActivateEvent event(wxEVT_ACTIVATE, false, gs_activeFrame->GetId());
- event.SetEventObject(gs_activeFrame);
- gs_activeFrame->GetEventHandler()->ProcessEvent(event);
- }
-
- gs_activeFrame = active;
- wxActivateEvent event(wxEVT_ACTIVATE, true, gs_activeFrame->GetId());
- event.SetEventObject(gs_activeFrame);
- gs_activeFrame->GetEventHandler()->ProcessEvent(event);
- }
-#endif
-
// notify the parent keeping track of focus for the kbd navigation
// purposes that we got it
wxChildFocusEvent eventFocus((wxWindow*)this);
void wxWindowDFB::DFBKillFocus()
{
wxCHECK_RET( gs_focusedWindow == this,
- _T("killing focus on window that doesn't have it") );
+ "killing focus on window that doesn't have it" );
gs_focusedWindow = NULL;
// parent area at the place of this window (if hiding):
DoRefreshWindow();
-#warning "FIXME: all of this must be implemented for DFB"
-#if 0
- DFB_wmShowWindow(m_wnd, show);
-
- if (!show && gs_activeFrame == this)
- {
- // activate next frame in Z-order:
- if ( m_wnd->prev )
- {
- wxWindowDFB *win = (wxWindowDFB*)m_wnd->prev->userData;
- win->SetFocus();
- }
- else if ( m_wnd->next )
- {
- wxWindowDFB *win = (wxWindowDFB*)m_wnd->next->userData;
- win->SetFocus();
- }
- else
- {
- gs_activeFrame = NULL;
- }
- }
-#endif
-
return true;
}
// Raise the window to the top of the Z order
void wxWindowDFB::Raise()
{
- wxFAIL_MSG( _T("Raise() not implemented") );
+ wxFAIL_MSG( "Raise() not implemented" );
}
// Lower the window to the bottom of the Z order
void wxWindowDFB::Lower()
{
- wxFAIL_MSG( _T("Lower() not implemented") );
+ wxFAIL_MSG( "Lower() not implemented" );
}
void wxWindowDFB::DoCaptureMouse()
if ( y >= h ) y = h-1;
wxIDirectFBDisplayLayerPtr layer(wxIDirectFB::Get()->GetDisplayLayer());
- wxCHECK_RET( layer, _T("no display layer") );
+ wxCHECK_RET( layer, "no display layer" );
layer->WarpCursor(x, y);
}
return false;
#warning "implement this"
- wxFAIL_MSG( _T("reparenting not yet implemented") );
+ wxFAIL_MSG( "reparenting not yet implemented" );
return true;
}
static wxPoint GetScreenPosOfClientOrigin(const wxWindowDFB *win)
{
- wxCHECK_MSG( win, wxPoint(0, 0), _T("no window provided") );
+ wxCHECK_MSG( win, wxPoint(0, 0), "no window provided" );
wxPoint pt(win->GetPosition() + win->GetClientAreaOrigin());
void wxWindowDFB::DoRefreshRect(const wxRect& rect)
{
wxWindow *parent = GetParent();
- wxCHECK_RET( parent, _T("no parent") );
+ wxCHECK_RET( parent, "no parent" );
// don't overlap outside of the window (NB: 'rect' is in window coords):
wxRect r(rect);
return;
wxLogTrace(TRACE_PAINT,
- _T("%p ('%s'): refresh rect [%i,%i,%i,%i]"),
+ "%p ('%s'): refresh rect [%i,%i,%i,%i]",
this, GetName().c_str(),
rect.x, rect.y, rect.GetRight(), rect.GetBottom());
void wxWindowDFB::Thaw()
{
- wxASSERT_MSG( IsFrozen(), _T("Thaw() without matching Freeze()") );
+ wxASSERT_MSG( IsFrozen(), "Thaw() without matching Freeze()" );
if ( --m_frozenness == 0 )
{
void wxWindowDFB::PaintWindow(const wxRect& rect)
{
- wxCHECK_RET( !IsFrozen() && IsShown(), _T("shouldn't be called") );
+ wxCHECK_RET( !IsFrozen() && IsShown(), "shouldn't be called" );
wxLogTrace(TRACE_PAINT,
- _T("%p ('%s'): painting region [%i,%i,%i,%i]"),
+ "%p ('%s'): painting region [%i,%i,%i,%i]",
this, GetName().c_str(),
rect.x, rect.y, rect.GetRight(), rect.GetBottom());
// FIXME_DFB: don't waste time rendering the area if it's fully covered
// by some children, go directly to rendering the children
+ // (unless some child has HasTransparentBackground()=true!)
// NB: unconditionally send wxEraseEvent, because our implementation of
// wxWindow::Refresh() ignores the eraseBack argument
}
else
{
- wxLogTrace(TRACE_PAINT, _T("%p ('%s'): not sending wxNcPaintEvent"),
+ wxLogTrace(TRACE_PAINT, "%p ('%s'): not sending wxNcPaintEvent",
this, GetName().c_str());
}
}
else
{
- wxLogTrace(TRACE_PAINT, _T("%p ('%s'): not sending wxPaintEvent"),
+ wxLogTrace(TRACE_PAINT, "%p ('%s'): not sending wxPaintEvent",
this, GetName().c_str());
}
for ( wxDfbOverlaysList::const_iterator i = m_overlays->begin();
i != m_overlays->end(); ++i )
{
- wxOverlayImpl *overlay = *i;
+ // FIXME: the cast is necessary for STL build where the iterator
+ // (incorrectly) returns void* and not wxOverlayImpl*
+ wxOverlayImpl *overlay = (wxOverlayImpl*) *i;
wxRect orectOrig(overlay->GetRect());
wxRect orect(orectOrig);
void wxWindowDFB::RemoveOverlay(wxOverlayImpl *overlay)
{
- wxCHECK_RET( m_overlays, _T("no overlays to remove") );
+ wxCHECK_RET( m_overlays, "no overlays to remove" );
m_overlays->Remove(overlay);
case DIKI_KEYDEF_END:
case DIKI_NUMBER_OF_KEYS:
- wxFAIL_MSG( _T("invalid key_id value") );
+ wxFAIL_MSG( "invalid key_id value" );
return 0;
}
const DFBWindowEvent& e = event_;
wxLogTrace(TRACE_EVENTS,
- _T("handling key %s event for window %p ('%s')"),
- e.type == DWET_KEYUP ? _T("up") : _T("down"),
+ "handling key %s event for window %p ('%s')",
+ e.type == DWET_KEYUP ? "up" : "down",
this, GetName().c_str());
// fill in wxKeyEvent fields:
void wxWindowDFB::OnInternalIdle()
{
- if (wxUpdateUIEvent::CanUpdate(this))
+ if (wxUpdateUIEvent::CanUpdate(this) && IsShown())
UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
}
wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
{
- wxFAIL_MSG( _T("wxFindWindowAtPoint not implemented") );
+ wxFAIL_MSG( "wxFindWindowAtPoint not implemented" );
return NULL;
}