// Name: src/dfb/window.cpp
// Purpose: wxWindow
// Author: Vaclav Slavik
-// (based on GTK, MSW, MGL implementations)
+// (based on GTK, MSW implementations)
// Created: 2006-80-10
// RCS-ID: $Id$
// Copyright: (c) 2006 REA Elektronik GmbH
BEGIN_EVENT_TABLE(wxWindowDFB, wxWindowBase)
END_EVENT_TABLE()
+//-----------------------------------------------------------------------------
+// global functions
+//-----------------------------------------------------------------------------
+
+wxWindow *wxGetActiveWindow()
+{
+ return wxWindow::FindFocus();
+}
+
// ----------------------------------------------------------------------------
// constructors and such
// ----------------------------------------------------------------------------
void wxWindowDFB::Init()
{
m_isShown = true;
- m_frozenness = 0;
m_tlw = NULL;
m_overlays = NULL;
}
{
SendDestroyEvent();
- m_isBeingDeleted = true;
-
if ( gs_mouseCapture == this )
ReleaseMouse();
// notify the parent keeping track of focus for the kbd navigation
// purposes that we got it
wxChildFocusEvent eventFocus((wxWindow*)this);
- GetEventHandler()->ProcessEvent(eventFocus);
+ HandleWindowEvent(eventFocus);
wxFocusEvent event(wxEVT_SET_FOCUS, GetId());
event.SetEventObject(this);
event.SetWindow((wxWindow*)oldFocusedWindow);
- GetEventHandler()->ProcessEvent(event);
+ HandleWindowEvent(event);
#if wxUSE_CARET
// caret needs to be informed about focus change
wxFocusEvent event(wxEVT_KILL_FOCUS, GetId());
event.SetEventObject(this);
event.SetWindow(gs_toBeFocusedWindow);
- GetEventHandler()->ProcessEvent(event);
+ HandleWindowEvent(event);
}
// ----------------------------------------------------------------------------
#warning "implement this"
#if 0
- if ( m_cursor.Ok() )
+ if ( m_cursor.IsOk() )
DFB_wmSetWindowCursor(m_wnd, *m_cursor.GetDFBCursor());
else
DFB_wmSetWindowCursor(m_wnd, *wxSTANDARD_CURSOR->GetDFBCursor());
wxSize newSize(width, height);
wxSizeEvent event(newSize, GetId());
event.SetEventObject(this);
- GetEventHandler()->ProcessEvent(event);
+ HandleWindowEvent(event);
}
}
return dc.GetCharWidth();
}
-void wxWindowDFB::GetTextExtent(const wxString& string,
- int *x, int *y,
- int *descent, int *externalLeading,
- const wxFont *theFont) const
+void wxWindowDFB::DoGetTextExtent(const wxString& string,
+ int *x, int *y,
+ int *descent,
+ int *externalLeading,
+ const wxFont *theFont) const
{
wxWindowDC dc((wxWindow*)this);
dc.GetTextExtent(string, x, y, descent, externalLeading, (wxFont*)theFont);
// painting
// ---------------------------------------------------------------------------
-void wxWindowDFB::Clear()
-{
- wxClientDC dc((wxWindow *)this);
- wxBrush brush(GetBackgroundColour(), wxSOLID);
- dc.SetBackground(brush);
- dc.Clear();
-}
-
void wxWindowDFB::Refresh(bool WXUNUSED(eraseBack), const wxRect *rect)
{
if ( !IsShown() || IsFrozen() )
GetParent()->Update();
}
-void wxWindowDFB::Freeze()
-{
- m_frozenness++;
-}
-
-void wxWindowDFB::Thaw()
+void wxWindowDFB::DoThaw()
{
- wxASSERT_MSG( IsFrozen(), "Thaw() without matching Freeze()" );
-
- if ( --m_frozenness == 0 )
- {
- if ( IsShown() )
- DoRefreshWindow();
- }
+ if ( IsShown() )
+ DoRefreshWindow();
}
void wxWindowDFB::PaintWindow(const wxRect& rect)
wxWindowDC dc((wxWindow*)this);
wxEraseEvent eventEr(m_windowId, &dc);
eventEr.SetEventObject(this);
- GetEventHandler()->ProcessEvent(eventEr);
+ HandleWindowEvent(eventEr);
wxRect clientRect(GetClientRect());
{
wxNcPaintEvent eventNc(GetId());
eventNc.SetEventObject(this);
- GetEventHandler()->ProcessEvent(eventNc);
+ HandleWindowEvent(eventNc);
}
else
{
{
wxPaintEvent eventPt(GetId());
eventPt.SetEventObject(this);
- GetEventHandler()->ProcessEvent(eventPt);
+ HandleWindowEvent(eventPt);
}
else
{
for ( wxDfbOverlaysList::const_iterator i = m_overlays->begin();
i != m_overlays->end(); ++i )
{
- // FIXME: the cast is necessary for STL build where the iterator
- // (incorrectly) returns void* and not wxOverlayImpl*
- wxOverlayImpl *overlay = (wxOverlayImpl*) *i;
+ const wxOverlayImpl * const overlay = *i;
wxRect orectOrig(overlay->GetRect());
wxRect orect(orectOrig);
#define KEY(dfb, wx) \
case dfb: \
wxLogTrace(TRACE_EVENTS, \
- _T("key " #dfb " mapped to " #wx)); \
+ wxT("key " #dfb " mapped to " #wx)); \
return wx
// returns translated keycode, i.e. the one for KEYUP/KEYDOWN where 'a'..'z' is
return key_symbol;
else
{
-#if wxUSE_WCHAR_T
wchar_t chr = key_symbol;
wxCharBuffer buf(wxConvUI->cWC2MB(&chr, 1, NULL));
if ( buf )
return *buf; // may be 0 if failed
else
-#endif // wxUSE_WCHAR_T
return 0;
}
#endif
event.SetTimestamp(wxDFB_EVENT_TIMESTAMP(e));
event.m_rawCode = e.key_code;
event.m_keyCode = GetTranslatedKeyCode(e.key_id);
- event.m_scanCode = 0; // not used by wx at all
#if wxUSE_UNICODE
event.m_uniChar = e.key_symbol;
#endif
if ( e.type == DWET_KEYUP )
{
event.SetEventType(wxEVT_KEY_UP);
- GetEventHandler()->ProcessEvent(event);
+ HandleWindowEvent(event);
}
else
{
event.SetEventType(wxEVT_KEY_DOWN);
- if ( GetEventHandler()->ProcessEvent(event) )
+ if ( HandleWindowEvent(event) )
return;
// only send wxEVT_CHAR event if not processed yet:
if ( event.m_keyCode != 0 )
{
event.SetEventType(wxEVT_CHAR);
- if ( GetEventHandler()->ProcessEvent(event) )
+ if ( HandleWindowEvent(event) )
return;
}
// Ctrl-TAB changes the (parent) window, i.e. switch notebook page:
navEvent.SetWindowChange(event.m_controlDown);
navEvent.SetCurrentFocus(wxStaticCast(this, wxWindow));
- GetParent()->GetEventHandler()->ProcessEvent(navEvent);
+ GetParent()->HandleWindowEvent(navEvent);
}
}
}
-// ---------------------------------------------------------------------------
-// idle events processing
-// ---------------------------------------------------------------------------
-
-void wxWindowDFB::OnInternalIdle()
-{
- if (wxUpdateUIEvent::CanUpdate(this) && IsShown())
- UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
-}
-
-
// Find the wxWindow at the current mouse position, returning the mouse
// position.
wxWindow* wxFindWindowAtPointer(wxPoint& pt)
return wxFindWindowAtPoint(pt = wxGetMousePosition());
}
-wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
+wxWindow* wxFindWindowAtPoint(const wxPoint& WXUNUSED(pt))
{
wxFAIL_MSG( "wxFindWindowAtPoint not implemented" );
return NULL;