///////////////////////////////////////////////////////////////////////////////
-// Name: src/univ/window.cpp
+// Name: src/univ/winuniv.cpp
// Purpose: implementation of extra wxWindow methods for wxUniv port
// Author: Vadim Zeitlin
// Modified by:
// Created: 06.08.00
-// RCS-ID: $Id$
// Copyright: (c) 2000 SciTech Software, Inc. (www.scitechsoft.com)
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#include "wx/menu.h"
#include "wx/frame.h"
#include "wx/log.h"
+ #include "wx/button.h"
#endif // WX_PRECOMP
#include "wx/univ/colschem.h"
#include "wx/univ/renderer.h"
#include "wx/univ/theme.h"
+
#if wxUSE_CARET
#include "wx/caret.h"
#endif // wxUSE_CARET
-// turn Refresh() debugging on/off
-#define WXDEBUG_REFRESH
-
-#ifndef __WXDEBUG__
- #undef WXDEBUG_REFRESH
+#if wxDEBUG_LEVEL >= 2
+ // turn Refresh() debugging on/off
+ #define WXDEBUG_REFRESH
#endif
#if defined(WXDEBUG_REFRESH) && defined(__WXMSW__) && !defined(__WXMICROWIN__)
IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowMSW)
#elif defined(__WXGTK__)
IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowGTK)
-#elif defined(__WXMGL__)
- IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowMGL)
+#elif defined(__WXOSX_OR_COCOA__)
+ IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowMac)
#elif defined(__WXDFB__)
IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowDFB)
#elif defined(__WXX11__)
{
#if wxUSE_SCROLLBAR
m_scrollbarVert =
- m_scrollbarHorz = (wxScrollBar *)NULL;
+ m_scrollbarHorz = NULL;
#endif // wxUSE_SCROLLBAR
m_isCurrent = false;
long style,
const wxString& name)
{
+ // Get default border
+ wxBorder border = GetBorder(style);
+ style &= ~wxBORDER_MASK;
+ style |= border;
+
long actualStyle = style;
// we add wxCLIP_CHILDREN to get the same ("natural") behaviour under MSW
wxWindow::~wxWindow()
{
- m_isBeingDeleted = true;
+ SendDestroyEvent();
#if wxUSE_SCROLLBAR
// clear pointers to scrollbar before deleting the children: they are
const wxBitmap& wxWindow::GetBackgroundBitmap(int *alignment,
wxStretch *stretch) const
{
- if ( m_bitmapBg.Ok() )
+ if ( m_bitmapBg.IsOk() )
{
if ( alignment )
*alignment = m_alignBgBitmap;
rect.height = size.y;
wxWindow * const parent = GetParent();
- if ( HasTransparentBackground() && parent )
+ if ( HasTransparentBackground() && !UseBgCol() && parent )
{
+ // DirectFB paints the parent first, then its child windows, so by
+ // the time this code is called, parent's background was already
+ // drawn and there's no point in (imperfectly!) duplicating the work
+ // here:
+#ifndef __WXDFB__
wxASSERT( !IsTopLevel() );
wxPoint pos = GetPosition();
// Restore DC logical origin
dc.SetLogicalOrigin( org_x, org_y );
+#endif // !__WXDFB__
}
else
{
void wxWindow::EraseBackground(wxDC& dc, const wxRect& rect)
{
- if ( GetBackgroundBitmap().Ok() )
+ if ( GetBackgroundBitmap().IsOk() )
{
// Get the bitmap and the flags
int alignment;
}
}
else
- if (HasFlag( wxSUNKEN_BORDER ) || HasFlag( wxRAISED_BORDER ))
+ if (HasFlag( wxSUNKEN_BORDER ) || HasFlag( wxRAISED_BORDER ) || HasFlag( wxBORDER_THEME ))
{
if (newSize.y > m_oldSize.y)
{
#endif
}
-wxSize wxWindow::DoGetBestSize() const
-{
- return AdjustSize(DoGetBestClientSize());
-}
-
-wxSize wxWindow::DoGetBestClientSize() const
+wxSize wxWindow::DoGetBorderSize() const
{
- return wxWindowNative::DoGetBestSize();
+ return AdjustSize(wxSize(0, 0));
}
wxSize wxWindow::AdjustSize(const wxSize& size) const
{
#if wxUSE_SCROLLBAR
wxASSERT_MSG( pageSize <= range,
- _T("page size can't be greater than range") );
+ wxT("page size can't be greater than range") );
bool hasClientSizeChanged = false;
wxScrollBar *scrollbar = GetScrollbar(orient);
wxRect wxWindow::ScrollNoRefresh(int dx, int dy, const wxRect *rectTotal)
{
- wxASSERT_MSG( !dx || !dy, _T("can't be used for diag scrolling") );
+ wxASSERT_MSG( !dx || !dy, wxT("can't be used for diag scrolling") );
// the rect to refresh (which we will calculate)
wxRect rect;
// location
wxSize sizeTotal = rectTotal ? rectTotal->GetSize() : GetClientSize();
- wxLogTrace(_T("scroll"), _T("rect is %dx%d, scroll by %d, %d"),
+ wxLogTrace(wxT("scroll"), wxT("rect is %dx%d, scroll by %d, %d"),
sizeTotal.x, sizeTotal.y, dx, dy);
// the initial and end point of the region we move in client coords
if ( size.x <= 0 || size.y <= 0 )
{
// just redraw everything as nothing of the displayed image will stay
- wxLogTrace(_T("scroll"), _T("refreshing everything"));
+ wxLogTrace(wxT("scroll"), wxT("refreshing everything"));
rect = rectTotal ? *rectTotal : wxRect(0, 0, sizeTotal.x, sizeTotal.y);
}
);
dc.Blit(ptDest, size, &dcMem, wxPoint(0,0));
- wxLogTrace(_T("scroll"),
- _T("Blit: (%d, %d) of size %dx%d -> (%d, %d)"),
+ wxLogTrace(wxT("scroll"),
+ wxT("Blit: (%d, %d) of size %dx%d -> (%d, %d)"),
ptSource.x, ptSource.y,
size.x, size.y,
ptDest.x, ptDest.y);
rect.height = sizeTotal.y;
- wxLogTrace(_T("scroll"), _T("refreshing (%d, %d)-(%d, %d)"),
+ wxLogTrace(wxT("scroll"), wxT("refreshing (%d, %d)-(%d, %d)"),
rect.x, rect.y,
rect.GetRight() + 1, rect.GetBottom() + 1);
}
rect.width = sizeTotal.x;
- wxLogTrace(_T("scroll"), _T("refreshing (%d, %d)-(%d, %d)"),
+ wxLogTrace(wxT("scroll"), wxT("refreshing (%d, %d)-(%d, %d)"),
rect.x, rect.y,
rect.GetRight() + 1, rect.GetBottom() + 1);
}
int command = win->GetAcceleratorTable()->GetCommand(event);
if ( command != -1 )
{
- wxCommandEvent eventCmd(wxEVT_COMMAND_MENU_SELECTED, command);
+ wxCommandEvent eventCmd(wxEVT_MENU, command);
if ( win->GetEventHandler()->ProcessEvent(eventCmd) )
{
// skip "event.Skip()" below
wxWindow* child = win->FindWindow(command);
if ( child && wxDynamicCast(child, wxButton) )
{
- wxCommandEvent eventCmd(wxEVT_COMMAND_BUTTON_CLICKED, command);
+ wxCommandEvent eventCmd(wxEVT_BUTTON, command);
eventCmd.SetEventObject(child);
if ( child->GetEventHandler()->ProcessEvent(eventCmd) )
{
if ( !event.HasModifiers() && event.GetKeyCode() == WXK_RETURN )
{
wxTopLevelWindow *
- tlw = wxDynamicCast(wxTopLevelWindow *, wxGetTopLevelParent());
+ tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow);
if ( tlw )
{
- wxButton *btn = wxDynamicCast(wxButton *, tlw->GetDefaultItem());
+ wxButton *btn = wxDynamicCast(tlw->GetDefaultItem(), wxButton);
if ( btn )
{
- wxCommandEvent evt(wxEVT_COMMAND_BUTTON_CLICKED, btn->GetId());
+ wxCommandEvent evt(wxEVT_BUTTON, btn->GetId());
evt.SetEventObject(btn);
btn->Command(evt);
return;