Update wx to r75363 to address a wx bug that was breaking netplay on OS X.

This commit is contained in:
comex 2013-12-08 15:37:10 -05:00
parent 9722be069b
commit 1334d7fc41
185 changed files with 2040 additions and 5175 deletions

View File

@ -1,4 +1,4 @@
# gtk, msw, osx and shared files as of r74856
# gtk, msw, osx and shared files as of r75363
set(SRCS_AUI
"src/aui/auibar.cpp"
@ -906,6 +906,7 @@ add_definitions(-Wno-shadow)
add_definitions(-Wno-parentheses-equality)
add_definitions(-Wno-self-assign)
add_definitions(-Wno-null-conversion)
add_definitions(-Wno-sign-compare)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++98")
enable_precompiled_headers(include/wx/wxprec.h src/common/dummy.cpp SRCS)

View File

@ -1,6 +1,6 @@
#!/bin/bash
svn co -r 74856 http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets
svn co -r 75363 http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk wxWidgets
cd wxWidgets
case $OSTYPE in

View File

@ -148,6 +148,9 @@
#pragma comment(lib, wxWX_LIB_NAME("base", ""))
#ifndef wxNO_NET_LIB
#ifndef WXUSINGDLL
#pragma comment(lib, "wsock32")
#endif
#pragma comment(lib, wxBASE_LIB_NAME("net"))
#endif
#ifndef wxNO_XML_LIB
@ -235,7 +238,6 @@
#pragma comment(lib, "uuid")
#pragma comment(lib, "rpcrt4")
#pragma comment(lib, "advapi32")
#pragma comment(lib, "wsock32")
#if wxUSE_URL_NATIVE
#pragma comment(lib, "wininet")
#endif

View File

@ -175,7 +175,7 @@ public:
virtual bool Create(int width, int height, int depth = wxBITMAP_SCREEN_DEPTH) = 0;
virtual bool Create(const wxSize& sz, int depth = wxBITMAP_SCREEN_DEPTH) = 0;
virtual bool CreateScaled(int w, int h, int d, double logicalScale)
{ return Create(w*logicalScale,h*logicalScale,d); }
{ return Create(wxRound(w*logicalScale), wxRound(h*logicalScale), d); }
virtual int GetHeight() const = 0;
virtual int GetWidth() const = 0;
@ -189,7 +189,7 @@ public:
virtual double GetScaledWidth() const { return GetWidth() / GetScaleFactor(); }
virtual double GetScaledHeight() const { return GetHeight() / GetScaleFactor(); }
virtual wxSize GetScaledSize() const
{ return wxSize(GetScaledWidth(), GetScaledHeight()); }
{ return wxSize(wxRound(GetScaledWidth()), wxRound(GetScaledHeight())); }
#if wxUSE_IMAGE
virtual wxImage ConvertToImage() const = 0;

View File

@ -268,9 +268,22 @@ public:
wxCharTypeBuffer(size_t len)
{
this->m_data =
new Data((CharType *)malloc((len + 1)*sizeof(CharType)), len);
this->m_data->Get()[len] = (CharType)0;
CharType* const str = (CharType *)malloc((len + 1)*sizeof(CharType));
if ( str )
{
str[len] = (CharType)0;
// There is a potential memory leak here if new throws because it
// fails to allocate Data, we ought to use new(nothrow) here, but
// this might fail to compile under some platforms so until this
// can be fully tested, just live with this (rather unlikely, as
// Data is a small object) potential leak.
this->m_data = new Data(str, len);
}
else
{
this->m_data = this->GetNullData();
}
}
wxCharTypeBuffer(const wxCharTypeBuffer& src)

View File

@ -11,11 +11,12 @@
#ifndef _WX_CHOICDLG_H_BASE_
#define _WX_CHOICDLG_H_BASE_
#include "wx/defs.h"
#if wxUSE_CHOICEDLG
#include "wx/generic/choicdgg.h"
#endif
#endif
// _WX_CHOICDLG_H_BASE_
#endif // _WX_CHOICDLG_H_BASE_

View File

@ -560,7 +560,7 @@ protected:
// just recalculate.
void CalculateAreas( int btnWidth = 0 );
// Standard textctrl positioning routine. Just give it platform-dependant
// Standard textctrl positioning routine. Just give it platform-dependent
// textctrl coordinate adjustment.
virtual void PositionTextCtrl( int textCtrlXAdjust = 0,
int textCtrlYAdjust = 0);
@ -701,7 +701,7 @@ protected:
// area used by the button
wxSize m_btnSize;
// platform-dependant customization and other flags
// platform-dependent customization and other flags
wxUint32 m_iFlags;
// custom style for m_text

View File

@ -19,7 +19,7 @@
/*
Notice that Intel compiler can be used as Microsoft Visual C++ add-on and
so we should define both __INTELC__ and __VISUALC__ for it.
*/
*/
#ifdef __INTEL_COMPILER
# define __INTELC__
#endif
@ -135,15 +135,40 @@
#endif
/*
This macro can be used to check that the version of mingw32 compiler is
at least maj.min
This macro can be used to check that the version of mingw32 CRT is at least
maj.min
*/
/* Check for Mingw runtime version: */
#if defined(__MINGW32_MAJOR_VERSION) && defined(__MINGW32_MINOR_VERSION)
#ifdef __MINGW32__
/* Include the header defining __MINGW32_{MAJ,MIN}OR_VERSION */
#include <_mingw.h>
#define wxCHECK_MINGW32_VERSION( major, minor ) \
( ( ( __MINGW32_MAJOR_VERSION > (major) ) \
|| ( __MINGW32_MAJOR_VERSION == (major) && __MINGW32_MINOR_VERSION >= (minor) ) ) )
/*
MinGW-w64 project provides compilers for both Win32 and Win64 but only
defines the same __MINGW32__ symbol for the former as MinGW32 toolchain
which is quite different (notably doesn't provide many SDK headers that
MinGW-w64 does include). So we define a separate symbol which, unlike the
predefined __MINGW64__, can be used to detect this toolchain in both 32 and
64 bit builds.
And define __MINGW32_TOOLCHAIN__ for consistency and also because it's
convenient as we often want to have some workarounds only for the (old)
MinGW32 but not (newer) MinGW-w64, which still predefines __MINGW32__.
*/
# ifdef __MINGW64_VERSION_MAJOR
# ifndef __MINGW64_TOOLCHAIN__
# define __MINGW64_TOOLCHAIN__
# endif
# else
# ifndef __MINGW32_TOOLCHAIN__
# define __MINGW32_TOOLCHAIN__
# endif
# endif
#else
#define wxCHECK_MINGW32_VERSION( major, minor ) (0)
#endif

View File

@ -972,6 +972,7 @@ public:
void InsertItem( unsigned int row, const wxVector<wxVariant> &values, wxUIntPtr data = 0 );
void DeleteItem( unsigned int pos );
void DeleteAllItems();
void ClearColumns();
unsigned int GetItemCount() const;
@ -1040,6 +1041,7 @@ public:
virtual bool PrependColumn( wxDataViewColumn *col );
virtual bool InsertColumn( unsigned int pos, wxDataViewColumn *col );
virtual bool AppendColumn( wxDataViewColumn *col );
virtual bool ClearColumns();
wxDataViewColumn *AppendTextColumn( const wxString &label,
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,

View File

@ -310,8 +310,10 @@ typedef short int WXTYPE;
inline T wx_truncate_cast_impl(X x)
{
#pragma warning(push)
/* conversion from 'X' to 'T', possible loss of data */
/* conversion from 'size_t' to 'type', possible loss of data */
#pragma warning(disable: 4267)
/* conversion from 'type1' to 'type2', possible loss of data */
#pragma warning(disable: 4242)
return x;
@ -951,6 +953,10 @@ typedef wxUint16 wxWord;
#define SIZEOF_LONG 4
#endif
#ifndef SIZEOF_LONG_LONG
#define SIZEOF_LONG_LONG 8
#endif
#ifndef SIZEOF_WCHAR_T
/* Windows uses UTF-16 */
#define SIZEOF_WCHAR_T 2
@ -2287,8 +2293,13 @@ enum wxStandardID
wxID_OSX_HIDE = wxID_OSX_MENU_FIRST,
wxID_OSX_HIDEOTHERS,
wxID_OSX_SHOWALL,
#if wxABI_VERSION >= 30001
wxID_OSX_SERVICES,
wxID_OSX_MENU_LAST = wxID_OSX_SERVICES,
#else
wxID_OSX_MENU_LAST = wxID_OSX_SHOWALL,
#endif
/* IDs used by generic file dialog (13 consecutive starting from this value) */
wxID_FILEDLGG = 5900,

View File

@ -13,6 +13,7 @@
#include "wx/toplevel.h"
#include "wx/containr.h"
#include "wx/sharedptr.h"
class WXDLLIMPEXP_FWD_CORE wxSizer;
class WXDLLIMPEXP_FWD_CORE wxStdDialogButtonSizer;
@ -402,24 +403,29 @@ class wxWindowModalDialogEventFunctor
{
public:
wxWindowModalDialogEventFunctor(const Functor& f)
: m_f(f), m_wasCalled(false)
: m_f(new Functor(f))
{}
void operator()(wxWindowModalDialogEvent& event)
{
if ( m_wasCalled )
if ( m_f )
{
// We only want to call this handler once. Also, by deleting
// the functor here, its data (such as wxWindowPtr pointing to
// the dialog) are freed immediately after exiting this operator().
wxSharedPtr<Functor> functor(m_f);
m_f.reset();
(*functor)(event.GetReturnCode());
}
else // was already called once
{
event.Skip();
return;
}
m_wasCalled = true;
m_f(event.GetReturnCode());
}
private:
Functor m_f;
bool m_wasCalled;
wxSharedPtr<Functor> m_f;
};
template<typename Functor>
@ -428,7 +434,7 @@ void wxDialogBase::ShowWindowModalThenDo(const Functor& onEndModal)
Bind(wxEVT_WINDOW_MODAL_DIALOG_CLOSED,
wxWindowModalDialogEventFunctor<Functor>(onEndModal));
ShowWindowModal();
};
}
#endif // wxHAS_EVENT_BIND
#endif

View File

@ -279,6 +279,9 @@ public:
// destroyed
void SetDocChildFrame(wxDocChildFrameAnyBase *docChildFrame);
// get the associated frame, may be NULL during destruction
wxDocChildFrameAnyBase* GetDocChildFrame() const { return m_docChildFrame; }
protected:
// hook the document into event handlers chain here
virtual bool TryBefore(wxEvent& event);
@ -597,9 +600,10 @@ public:
m_childDocument = NULL;
m_childView = NULL;
m_win = NULL;
m_lastEvent = NULL;
}
// full ctor equivalent to using the default one and Create(0
// full ctor equivalent to using the default one and Create()
wxDocChildFrameAnyBase(wxDocument *doc, wxView *view, wxWindow *win)
{
Create(doc, view, win);
@ -638,6 +642,14 @@ public:
wxWindow *GetWindow() const { return m_win; }
// implementation only
// Check if this event had been just processed in this frame.
bool HasAlreadyProcessed(wxEvent& event) const
{
return m_lastEvent == &event;
}
protected:
// we're not a wxEvtHandler but we provide this wxEvtHandler-like function
// which is called from TryBefore() of the derived classes to give our view
@ -656,6 +668,10 @@ protected:
// allows us to avoid having any virtual functions in this class
wxWindow* m_win;
private:
// Pointer to the last processed event used to avoid sending the same event
// twice to wxDocManager, from here and from wxDocParentFrameAnyBase.
wxEvent* m_lastEvent;
wxDECLARE_NO_COPY_CLASS(wxDocChildFrameAnyBase);
};
@ -894,7 +910,11 @@ protected:
// hook the document manager into event handling chain here
virtual bool TryBefore(wxEvent& event)
{
return TryProcessEvent(event) || BaseFrame::TryBefore(event);
// It is important to send the event to the base class first as
// wxMDIParentFrame overrides its TryBefore() to send the menu events
// to the currently active child frame and the child must get them
// before our own TryProcessEvent() is executed, not afterwards.
return BaseFrame::TryBefore(event) || TryProcessEvent(event);
}
private:

View File

@ -163,9 +163,7 @@ public:
virtual bool IsCustomRenderer() const { return false; }
protected:
// Called from {Cancel,Finish}Editing() to cleanup m_editorCtrl
void DestroyEditControl();
// Implementation only from now on.
// Return the alignment of this renderer if it's specified (i.e. has value
// different from the default wxDVR_DEFAULT_ALIGNMENT) or the alignment of
@ -176,6 +174,10 @@ protected:
// wxDVR_DEFAULT_ALIGNMENT.
int GetEffectiveAlignment() const;
protected:
// Called from {Cancel,Finish}Editing() to cleanup m_editorCtrl
void DestroyEditControl();
wxString m_variantType;
wxDataViewColumn *m_owner;
wxWeakRef<wxWindow> m_editorCtrl;

View File

@ -2275,19 +2275,36 @@ private:
class WXDLLIMPEXP_CORE wxActivateEvent : public wxEvent
{
public:
wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = true, int Id = 0)
: wxEvent(Id, type)
{ m_active = active; }
// Type of activation. For now we can only detect if it was by mouse or by
// some other method and even this is only available under wxMSW.
enum Reason
{
Reason_Mouse,
Reason_Unknown
};
wxActivateEvent(wxEventType type = wxEVT_NULL, bool active = true,
int Id = 0, Reason activationReason = Reason_Unknown)
: wxEvent(Id, type),
m_activationReason(activationReason)
{
m_active = active;
}
wxActivateEvent(const wxActivateEvent& event)
: wxEvent(event)
{ m_active = event.m_active; }
{
m_active = event.m_active;
m_activationReason = event.m_activationReason;
}
bool GetActive() const { return m_active; }
Reason GetActivationReason() const { return m_activationReason;}
virtual wxEvent *Clone() const { return new wxActivateEvent(*this); }
private:
bool m_active;
Reason m_activationReason;
private:
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxActivateEvent)

View File

@ -116,7 +116,8 @@
*/
#if wxCHECK_GCC_VERSION(3, 2) || wxCHECK_VISUALC_VERSION(7) \
|| (defined(__SUNCC__) && __SUNCC__ >= 0x5100) \
|| (defined(__xlC__) && __xlC__ >= 0x700)
|| (defined(__xlC__) && __xlC__ >= 0x700) \
|| defined(__INTELC__)
#define wxHAS_EVENT_BIND
#endif

View File

@ -77,7 +77,7 @@
// constants
// ----------------------------------------------------------------------------
#if defined(__VISUALC__) || defined(__INTELC__) || defined(__DIGITALMARS__)
#if defined(__VISUALC__) || defined(__DIGITALMARS__)
typedef int mode_t;
#endif
@ -204,7 +204,7 @@ enum wxPosixPermissions
#if defined(__VISUALC__)
#define wxHAS_HUGE_FILES 1
#elif defined(__MINGW32__) || defined(__MINGW64__)
#define wxHAS_HUGE_FILES 1
#define wxHAS_HUGE_FILES 1f
#elif defined(_LARGE_FILES)
#define wxHAS_HUGE_FILES 1
#endif
@ -476,7 +476,6 @@ enum wxPosixPermissions
#define wxSeek lseek
#define wxFsync fsync
#define wxEof eof
#define wxCRT_MkDir mkdir
#define wxCRT_RmDir rmdir

View File

@ -142,9 +142,7 @@ public:
return *this;
}
#if wxOSX_USE_CORE_TEXT
void Init(CTFontDescriptorRef descr);
#endif
void Init(const wxNativeFontInfo& info);
void Init(int size,
wxFontFamily family,

View File

@ -66,6 +66,13 @@ enum wxFSWPathType
wxFSWPath_Tree // Watch a directory and all its children recursively.
};
// Type of the warning for the events notifying about them.
enum wxFSWWarningType
{
wxFSW_WARNING_NONE,
wxFSW_WARNING_GENERAL,
wxFSW_WARNING_OVERFLOW
};
/**
* Event containing information about file system change.
@ -77,24 +84,36 @@ wxDECLARE_EXPORTED_EVENT(WXDLLIMPEXP_BASE, wxEVT_FSWATCHER,
class WXDLLIMPEXP_BASE wxFileSystemWatcherEvent: public wxEvent
{
public:
// Constructor for any kind of events, also used as default ctor.
wxFileSystemWatcherEvent(int changeType = 0, int watchid = wxID_ANY) :
wxEvent(watchid, wxEVT_FSWATCHER),
m_changeType(changeType)
m_changeType(changeType),
m_warningType(wxFSW_WARNING_NONE)
{
}
wxFileSystemWatcherEvent(int changeType, const wxString& errorMsg,
// Constructor for the error or warning events.
wxFileSystemWatcherEvent(int changeType,
wxFSWWarningType warningType,
const wxString& errorMsg = wxString(),
int watchid = wxID_ANY) :
wxEvent(watchid, wxEVT_FSWATCHER),
m_changeType(changeType), m_errorMsg(errorMsg)
m_changeType(changeType),
m_warningType(warningType),
m_errorMsg(errorMsg)
{
}
// Constructor for the normal events carrying information about the changes.
wxFileSystemWatcherEvent(int changeType,
const wxFileName& path, const wxFileName& newPath,
int watchid = wxID_ANY) :
wxEvent(watchid, wxEVT_FSWATCHER),
m_changeType(changeType), m_path(path), m_newPath(newPath)
m_changeType(changeType),
m_warningType(wxFSW_WARNING_NONE),
m_path(path),
m_newPath(newPath)
{
}
@ -146,6 +165,7 @@ public:
evt->m_errorMsg = m_errorMsg.Clone();
evt->m_path = wxFileName(m_path.GetFullPath().Clone());
evt->m_newPath = wxFileName(m_newPath.GetFullPath().Clone());
evt->m_warningType = m_warningType;
return evt;
}
@ -168,6 +188,11 @@ public:
return m_errorMsg;
}
wxFSWWarningType GetWarningType() const
{
return m_warningType;
}
/**
* Returns a wxString describing an event useful for debugging or testing
*/
@ -175,6 +200,7 @@ public:
protected:
int m_changeType;
wxFSWWarningType m_warningType;
wxFileName m_path;
wxFileName m_newPath;
wxString m_errorMsg;

View File

@ -227,6 +227,9 @@ public: // utility functions not part of the API
// return the index of the given column in m_cols
int GetColumnIndex(const wxDataViewColumn *column) const;
// Return the index of the column having the given model index.
int GetModelColumnIndex(unsigned int model_column) const;
// return the column displayed at the given position in the control
wxDataViewColumn *GetColumnAt(unsigned int pos) const;

View File

@ -15,6 +15,8 @@
#if wxUSE_GRID
#include "wx/scopedptr.h"
class wxGridCellEditorEvtHandler : public wxEvtHandler
{
public:

View File

@ -79,6 +79,9 @@ public:
// (default font is a larger and bold version of the normal one)
virtual bool SetFont(const wxFont& font);
// same thing with the colour: this affects the text colour
virtual bool SetForegroundColour(const wxColor& colour);
protected:
// info bar shouldn't have any border by default, the colour difference
// between it and the main window separates it well enough

View File

@ -60,8 +60,8 @@ public:
private:
wxSize GetBitmapSize()
{
return m_bitmap.IsOk() ? wxSize(m_bitmap.GetWidth(), m_bitmap.GetHeight())
: wxSize(16, 16); // this is completely arbitrary
return m_bitmap.IsOk() ? m_bitmap.GetScaledSize()
: wxSize(16, 16); // this is completely arbitrary
}
void OnPaint(wxPaintEvent& event);

View File

@ -103,7 +103,6 @@ public:
wxMask *GetMask() const;
void SetMask( wxMask *mask );
wxBitmap GetMaskBitmap() const;
wxBitmap GetSubBitmap( const wxRect& rect ) const;

View File

@ -39,15 +39,13 @@ public:
virtual void EndModal( int retCode );
virtual bool IsModal() const;
// implementation
// --------------
bool m_modalShowing;
private:
// common part of all ctors
void Init();
bool m_modalShowing;
wxGUIEventLoop *m_modalLoop;
DECLARE_DYNAMIC_CLASS(wxDialog)
};

View File

@ -1,351 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: wx/gtk/gnome/gprint.h
// Author: Robert Roebling
// Purpose: GNOME printing support
// Created: 09/20/04
// Copyright: Robert Roebling
// Licence: wxWindows Licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_GTK_GPRINT_H_
#define _WX_GTK_GPRINT_H_
#include "wx/defs.h"
#if wxUSE_LIBGNOMEPRINT
#include "wx/print.h"
#include "wx/printdlg.h"
#include "wx/dc.h"
#include "wx/module.h"
typedef struct _GnomePrintJob GnomePrintJob;
typedef struct _GnomePrintContext GnomePrintContext;
typedef struct _GnomePrintConfig GnomePrintConfig;
// ----------------------------------------------------------------------------
// wxGnomePrintModule
// ----------------------------------------------------------------------------
class wxGnomePrintModule: public wxModule
{
public:
wxGnomePrintModule() {}
bool OnInit();
void OnExit();
private:
DECLARE_DYNAMIC_CLASS(wxGnomePrintModule)
};
//----------------------------------------------------------------------------
// wxGnomePrintNativeData
//----------------------------------------------------------------------------
class wxGnomePrintNativeData: public wxPrintNativeDataBase
{
public:
wxGnomePrintNativeData();
virtual ~wxGnomePrintNativeData();
virtual bool TransferTo( wxPrintData &data );
virtual bool TransferFrom( const wxPrintData &data );
virtual bool Ok() const { return IsOk(); }
virtual bool IsOk() const { return true; }
GnomePrintConfig* GetPrintConfig() { return m_config; }
void SetPrintJob( GnomePrintJob *job ) { m_job = job; }
GnomePrintJob* GetPrintJob() { return m_job; }
private:
GnomePrintConfig *m_config;
GnomePrintJob *m_job;
DECLARE_DYNAMIC_CLASS(wxGnomePrintNativeData)
};
//----------------------------------------------------------------------------
// wxGnomePrintFactory
//----------------------------------------------------------------------------
class wxGnomePrintFactory: public wxPrintFactory
{
public:
virtual wxPrinterBase *CreatePrinter( wxPrintDialogData *data );
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
wxPrintout *printout = NULL,
wxPrintDialogData *data = NULL );
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
wxPrintout *printout,
wxPrintData *data );
virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
wxPrintDialogData *data = NULL );
virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
wxPrintData *data );
virtual wxPageSetupDialogBase *CreatePageSetupDialog( wxWindow *parent,
wxPageSetupDialogData * data = NULL );
#if wxUSE_NEW_DC
virtual wxDCImpl* CreatePrinterDCImpl( wxPrinterDC *owner, const wxPrintData& data );
#else
virtual wxDC* CreatePrinterDC( const wxPrintData& data );
#endif
virtual bool HasPrintSetupDialog();
virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data );
virtual bool HasOwnPrintToFile();
virtual bool HasPrinterLine();
virtual wxString CreatePrinterLine();
virtual bool HasStatusLine();
virtual wxString CreateStatusLine();
virtual wxPrintNativeDataBase *CreatePrintNativeData();
};
//----------------------------------------------------------------------------
// wxGnomePrintDialog
//----------------------------------------------------------------------------
class wxGnomePrintDialog: public wxPrintDialogBase
{
public:
wxGnomePrintDialog( wxWindow *parent,
wxPrintDialogData* data = NULL );
wxGnomePrintDialog( wxWindow *parent, wxPrintData* data);
virtual ~wxGnomePrintDialog();
wxPrintData& GetPrintData()
{ return m_printDialogData.GetPrintData(); }
wxPrintDialogData& GetPrintDialogData()
{ return m_printDialogData; }
wxDC *GetPrintDC();
virtual int ShowModal();
virtual bool Validate();
virtual bool TransferDataToWindow();
virtual bool TransferDataFromWindow();
protected:
// Implement some base class methods to do nothing to avoid asserts and
// GTK warnings, since this is not a real wxDialog.
virtual void DoSetSize(int WXUNUSED(x), int WXUNUSED(y),
int WXUNUSED(width), int WXUNUSED(height),
int WXUNUSED(sizeFlags) = wxSIZE_AUTO) {}
virtual void DoMoveWindow(int WXUNUSED(x), int WXUNUSED(y),
int WXUNUSED(width), int WXUNUSED(height)) {}
private:
void Init();
wxPrintDialogData m_printDialogData;
DECLARE_DYNAMIC_CLASS(wxGnomePrintDialog)
};
//----------------------------------------------------------------------------
// wxGnomePageSetupDialog
//----------------------------------------------------------------------------
class wxGnomePageSetupDialog: public wxPageSetupDialogBase
{
public:
wxGnomePageSetupDialog( wxWindow *parent,
wxPageSetupDialogData* data = NULL );
virtual ~wxGnomePageSetupDialog();
virtual wxPageSetupDialogData& GetPageSetupDialogData();
virtual int ShowModal();
virtual bool Validate();
virtual bool TransferDataToWindow();
virtual bool TransferDataFromWindow();
protected:
// Implement some base class methods to do nothing to avoid asserts and
// GTK warnings, since this is not a real wxDialog.
virtual void DoSetSize(int WXUNUSED(x), int WXUNUSED(y),
int WXUNUSED(width), int WXUNUSED(height),
int WXUNUSED(sizeFlags) = wxSIZE_AUTO) {}
virtual void DoMoveWindow(int WXUNUSED(x), int WXUNUSED(y),
int WXUNUSED(width), int WXUNUSED(height)) {}
private:
wxPageSetupDialogData m_pageDialogData;
DECLARE_DYNAMIC_CLASS(wxGnomePageSetupDialog)
};
//----------------------------------------------------------------------------
// wxGnomePrinter
//----------------------------------------------------------------------------
class wxGnomePrinter: public wxPrinterBase
{
public:
wxGnomePrinter(wxPrintDialogData *data = NULL);
virtual ~wxGnomePrinter();
virtual bool Print(wxWindow *parent,
wxPrintout *printout,
bool prompt = true);
virtual wxDC* PrintDialog(wxWindow *parent);
virtual bool Setup(wxWindow *parent);
private:
bool m_native_preview;
private:
DECLARE_DYNAMIC_CLASS(wxGnomePrinter)
wxDECLARE_NO_COPY_CLASS(wxGnomePrinter);
};
//-----------------------------------------------------------------------------
// wxGnomePrinterDC
//-----------------------------------------------------------------------------
#if wxUSE_NEW_DC
class wxGnomePrinterDCImpl : public wxDCImpl
#else
#define wxGnomePrinterDCImpl wxGnomePrinterDC
class wxGnomePrinterDC : public wxDC
#endif
{
public:
#if wxUSE_NEW_DC
wxGnomePrinterDCImpl( wxPrinterDC *owner, const wxPrintData& data );
#else
wxGnomePrinterDC( const wxPrintData& data );
#endif
virtual ~wxGnomePrinterDCImpl();
bool Ok() const { return IsOk(); }
bool IsOk() const;
bool CanDrawBitmap() const { return true; }
void Clear();
void SetFont( const wxFont& font );
void SetPen( const wxPen& pen );
void SetBrush( const wxBrush& brush );
void SetLogicalFunction( wxRasterOperationMode function );
void SetBackground( const wxBrush& brush );
void DestroyClippingRegion();
bool StartDoc(const wxString& message);
void EndDoc();
void StartPage();
void EndPage();
wxCoord GetCharHeight() const;
wxCoord GetCharWidth() const;
bool CanGetTextExtent() const { return true; }
wxSize GetPPI() const;
virtual int GetDepth() const { return 24; }
void SetBackgroundMode(int WXUNUSED(mode)) { }
void SetPalette(const wxPalette& WXUNUSED(palette)) { }
protected:
bool DoFloodFill(wxCoord x1, wxCoord y1, const wxColour &col,
wxFloodFillStyle style=wxFLOOD_SURFACE );
bool DoGetPixel(wxCoord x1, wxCoord y1, wxColour *col) const;
void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2);
void DoCrossHair(wxCoord x, wxCoord y);
void DoDrawArc(wxCoord x1,wxCoord y1,wxCoord x2,wxCoord y2,wxCoord xc,wxCoord yc);
void DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,double sa,double ea);
void DoDrawPoint(wxCoord x, wxCoord y);
void DoDrawLines(int n, const wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0);
void DoDrawPolygon(int n, const wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, wxPolygonFillMode fillStyle=wxODDEVEN_RULE);
void DoDrawPolyPolygon(int n, const int count[], const wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, wxPolygonFillMode fillStyle=wxODDEVEN_RULE);
void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
void DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius = 20.0);
void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
#if wxUSE_SPLINES
void DoDrawSpline(const wxPointList *points);
#endif
bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
wxDC *source, wxCoord xsrc, wxCoord ysrc,
wxRasterOperationMode = wxCOPY, bool useMask = false,
wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord);
void DoDrawIcon( const wxIcon& icon, wxCoord x, wxCoord y );
void DoDrawBitmap( const wxBitmap& bitmap, wxCoord x, wxCoord y, bool useMask = false );
void DoDrawText(const wxString& text, wxCoord x, wxCoord y );
void DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle);
void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
void DoSetDeviceClippingRegion( const wxRegion &WXUNUSED(clip) )
{
wxFAIL_MSG( "not implemented" );
}
void DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y,
wxCoord *descent = NULL,
wxCoord *externalLeading = NULL,
const wxFont *theFont = NULL ) const;
void DoGetSize(int* width, int* height) const;
void DoGetSizeMM(int *width, int *height) const;
void SetPrintData(const wxPrintData& data);
wxPrintData& GetPrintData() { return m_printData; }
// overridden for wxPrinterDC Impl
virtual wxRect GetPaperRect() const;
virtual int GetResolution() const;
virtual void* GetHandle() const { return (void*)m_gpc; }
private:
wxPrintData m_printData;
PangoContext *m_context;
PangoLayout *m_layout;
PangoFontDescription *m_fontdesc;
unsigned char m_currentRed;
unsigned char m_currentGreen;
unsigned char m_currentBlue;
double m_pageHeight;
GnomePrintContext *m_gpc;
GnomePrintJob* m_job;
void makeEllipticalPath(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
private:
DECLARE_DYNAMIC_CLASS(wxGnomePrinterDCImpl)
wxDECLARE_NO_COPY_CLASS(wxGnomePrinterDCImpl);
};
// ----------------------------------------------------------------------------
// wxGnomePrintPreview: programmer creates an object of this class to preview a
// wxPrintout.
// ----------------------------------------------------------------------------
class wxGnomePrintPreview : public wxPrintPreviewBase
{
public:
wxGnomePrintPreview(wxPrintout *printout,
wxPrintout *printoutForPrinting = NULL,
wxPrintDialogData *data = NULL);
wxGnomePrintPreview(wxPrintout *printout,
wxPrintout *printoutForPrinting,
wxPrintData *data);
virtual ~wxGnomePrintPreview();
virtual bool Print(bool interactive);
virtual void DetermineScaling();
private:
void Init(wxPrintout *printout, wxPrintout *printoutForPrinting);
private:
DECLARE_CLASS(wxGnomePrintPreview)
};
#endif
// wxUSE_LIBGNOMEPRINT
#endif

View File

@ -16,6 +16,11 @@
#include "wx/gtk/private/string.h"
#include "wx/gtk/private/gtk2-compat.h"
#ifndef G_VALUE_INIT
// introduced in GLib 2.30
#define G_VALUE_INIT { 0, { { 0 } } }
#endif
// pango_version_check symbol is quite recent ATM (4/2007)... so we
// use our own wrapper which implements a smart trick.
// Use this function as you'd use pango_version_check:

View File

@ -47,8 +47,6 @@ public:
virtual bool Enable( bool enable = true );
// implementation
void OnSize( wxSizeEvent &event );
int m_pos;
protected:
@ -61,9 +59,7 @@ protected:
private:
typedef wxSpinButtonBase base_type;
DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(wxSpinButton)
};
#endif
// _WX_GTK_SPINBUTT_H_
#endif // _WX_GTK_SPINBUTT_H_

View File

@ -48,6 +48,11 @@ public:
virtual void SetMaxLength(unsigned long len);
#ifdef __WXGTK3__
virtual bool SetHint(const wxString& hint);
virtual wxString GetHint() const;
#endif
// implementation only from now on
void SendMaxLenEvent();
bool GTKEntryOnInsertText(const char* text);

View File

@ -510,7 +510,7 @@ public:
const wxString& GetLabel() const { return m_item.m_text; }
const wxString& GetText() const { return m_item.m_text; }
int GetImage() const { return m_item.m_image; }
long GetData() const { return static_cast<long>(m_item.m_data); }
wxUIntPtr GetData() const { return m_item.m_data; }
long GetMask() const { return m_item.m_mask; }
const wxListItem& GetItem() const { return m_item; }

View File

@ -60,7 +60,7 @@
#elif defined(__VISUALC__) || defined(__BORLANDC__) || defined(__WATCOMC__)
#include <float.h>
#define wxFinite(x) _finite(x)
#elif defined(__MINGW64__) || defined(__clang__)
#elif defined(__MINGW64_TOOLCHAIN__) || defined(__clang__)
/*
add more compilers with C99 support here: using C99 isfinite() is
preferable to using BSD-ish finite()

View File

@ -133,6 +133,9 @@ protected:
virtual wxSize DoGetSizeFromTextSize(int xlen, int ylen = -1) const;
// Override this one to avoid eating events from our popup listbox.
virtual wxWindow *MSWFindItem(long id, WXHWND hWnd) const;
// this is the implementation of GetEditHWND() which can also be used when
// we don't have the edit control, it simply returns NULL then
//

View File

@ -121,6 +121,9 @@ protected:
// one
virtual WXHBRUSH DoMSWControlColor(WXHDC pDC, wxColour colBg, WXHWND hWnd);
// Look in our GetSubcontrols() for the windows with the given ID.
virtual wxWindow *MSWFindItem(long id, WXHWND hWnd) const;
// for controls like radiobuttons which are really composite this array
// holds the ids (not HWNDs!) of the sub controls
wxArrayLong m_subControls;

View File

@ -54,7 +54,9 @@ public:
virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
protected:
#if wxUSE_INTL
virtual wxLocaleInfo MSWGetFormat() const;
#endif // wxUSE_INTL
virtual bool MSWAllowsNone() const { return HasFlag(wxDP_ALLOWNONE); }
virtual bool MSWOnDateTimeChange(const tagNMDATETIMECHANGE& dtch);

View File

@ -55,12 +55,14 @@ protected:
// override these methods anyhow, it does work -- but is definitely ugly
// and need to be changed (but how?) in the future.
#if wxUSE_INTL
// Override to return the date/time format used by this control.
virtual wxLocaleInfo MSWGetFormat() const /* = 0 */
{
wxFAIL_MSG( "Unreachable" );
return wxLOCALE_TIME_FMT;
}
#endif // wxUSE_INTL
// Override to indicate whether we can have no date at all.
virtual bool MSWAllowsNone() const /* = 0 */

View File

@ -19,7 +19,7 @@ EMIT(#define wxUSE_RC_MANIFEST 1)
EMIT(#define wxUSE_RC_MANIFEST 1)
#endif
#ifdef _M_AMD64
#if defined _M_AMD64 || defined __x86_64__
EMIT(#define WX_CPU_AMD64)
#endif
@ -27,7 +27,7 @@ EMIT(#define WX_CPU_AMD64)
EMIT(#define WX_CPU_ARM)
#endif
#ifdef _M_IA64
#if defined _M_IA64 || defined __ia64__
EMIT(#define WX_CPU_IA64)
#endif

View File

@ -664,7 +664,7 @@ typedef struct
#include <_mingw.h>
#endif
#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
#ifdef __MINGW32_TOOLCHAIN__
typedef enum CommandStateChangeConstants {
CSC_UPDATECOMMANDS = (int) 0xFFFFFFFF,
CSC_NAVIGATEFORWARD = 0x1,

View File

@ -37,7 +37,12 @@
#endif
#include <stdlib.h>
#ifndef _CRTBLD
// Defining _CRTBLD should never be necessary at all, but keep it for now
// as there is no time to retest all the compilers before 3.0 release.
// Definitely do not use it with MSVS 2013 as defining it results in errors
// if the standard <assert.h> is included afterwards.
#if !defined(_CRTBLD) && !wxCHECK_VISUALC_VERSION(12)
// Needed when building with pure MS SDK
#define _CRTBLD
#endif

View File

@ -115,11 +115,22 @@ public:
// this object. The default is LOCALE_SYSTEM_DEFAULT.
void SetLCID(WXLCID lcid);
// Returns the flags used for conversions between wxVariant and OLE
// VARIANT, see wxOleConvertVariantFlags. The default value is
// wxOleConvertVariant_Default but all the objects obtained by GetObject()
// inherit the flags from the one that created them.
long GetConvertVariantFlags() const;
// Sets the flags used for conversions between wxVariant and OLE VARIANT,
// see wxOleConvertVariantFlags (default is wxOleConvertVariant_Default.
void SetConvertVariantFlags(long flags);
public: // public for compatibility only, don't use m_dispatchPtr directly.
WXIDISPATCH* m_dispatchPtr;
private:
WXLCID m_lcid;
long m_convertVariantFlags;
wxDECLARE_NO_COPY_CLASS(wxAutomationObject);
};

View File

@ -39,14 +39,10 @@ public:
// default copy ctor/assignment operators ok
// comparison (must have both versions)
bool operator==(wxDataFormatId format) const
{ return m_format == (NativeFormat)format; }
bool operator!=(wxDataFormatId format) const
{ return m_format != (NativeFormat)format; }
bool operator==(const wxDataFormat& format) const
{ return m_format == format.m_format; }
bool operator!=(const wxDataFormat& format) const
{ return m_format != format.m_format; }
bool operator==(wxDataFormatId format) const;
bool operator!=(wxDataFormatId format) const;
bool operator==(const wxDataFormat& format) const;
bool operator!=(const wxDataFormat& format) const;
// explicit and implicit conversions to NativeFormat which is one of
// standard data types (implicit conversion is useful for preserving the

View File

@ -316,9 +316,25 @@ private:
SAFEARRAY* m_value;
};
// Used by wxAutomationObject for its wxConvertOleToVariant() calls.
enum wxOleConvertVariantFlags
{
wxOleConvertVariant_Default = 0,
// If wxOleConvertVariant_ReturnSafeArrays flag is set, SAFEARRAYs
// contained in OLE VARIANTs will be returned as wxVariants
// with wxVariantDataSafeArray type instead of wxVariants
// with the list type containing the (flattened) SAFEARRAY's elements.
wxOleConvertVariant_ReturnSafeArrays = 1
};
WXDLLIMPEXP_CORE
bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant);
WXDLLIMPEXP_CORE
bool wxConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant,
long flags = wxOleConvertVariant_Default);
WXDLLIMPEXP_CORE bool wxConvertVariantToOle(const wxVariant& variant, VARIANTARG& oleVariant);
WXDLLIMPEXP_CORE bool wxConvertOleToVariant(const VARIANTARG& oleVariant, wxVariant& variant);
#endif // wxUSE_VARIANT
// Convert string to Unicode

View File

@ -50,7 +50,9 @@ public:
virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
protected:
#if wxUSE_INTL
virtual wxLocaleInfo MSWGetFormat() const;
#endif // wxUSE_INTL
virtual bool MSWAllowsNone() const { return false; }
virtual bool MSWOnDateTimeChange(const tagNMDATETIMECHANGE& dtch);

View File

@ -304,6 +304,9 @@ private:
// item visually spans the entire breadth of the window then
bool MSWIsOnItem(unsigned flags) const;
// Delete the given item from the native control.
bool MSWDeleteItem(const wxTreeItemId& item);
// the hash storing the items attributes (indexed by item ids)
wxMapTreeAttr m_attrs;

View File

@ -206,7 +206,7 @@ public:
// to understand why does it work, look at SubclassWin() code and comments
bool IsOfStandardClass() const { return m_oldWndProc != NULL; }
wxWindow *FindItem(long id) const;
wxWindow *FindItem(long id, WXHWND hWnd = NULL) const;
wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = false) const;
// MSW only: true if this control is part of the main control
@ -663,6 +663,15 @@ protected:
bool MSWEnableHWND(WXHWND hWnd, bool enable);
// Return the pointer to this window or one of its sub-controls if this ID
// and HWND combination belongs to one of them.
//
// This is used by FindItem() and is overridden in wxControl, see there.
virtual wxWindow* MSWFindItem(long WXUNUSED(id), WXHWND WXUNUSED(hWnd)) const
{
return NULL;
}
private:
// common part of all ctors
void Init();

View File

@ -129,18 +129,24 @@ public:
virtual short MacHandleAERApp(const WXAPPLEEVENTREF event , WXAPPLEEVENTREF reply) ;
#endif
// in response of an openFiles message with Cocoa and an
// open-document apple event with Carbon
// open-document apple event
virtual void MacOpenFiles(const wxArrayString &fileNames) ;
// called by MacOpenFiles for each file.
virtual void MacOpenFile(const wxString &fileName) ;
// in response of a get-url apple event
virtual void MacOpenURL(const wxString &url) ;
// in response of a print-document apple event
virtual void MacPrintFiles(const wxArrayString &fileNames) ;
// called by MacPrintFiles for each file
virtual void MacPrintFile(const wxString &fileName) ;
// in response of a open-application apple event
virtual void MacNewFile() ;
// in response of a reopen-application apple event
virtual void MacReopenApp() ;
// override this to return false from a non-bundled console app in order to stay in background ...
virtual bool OSXIsGUIApplication() { return true; }
#if wxOSX_USE_COCOA_OR_IPHONE
// immediately before the native event loop launches
virtual void OSXOnWillFinishLaunching();
@ -153,9 +159,16 @@ public:
private:
bool m_onInitResult;
bool m_inited;
wxArrayString m_openFiles;
wxArrayString m_printFiles;
wxString m_getURL;
public:
bool OSXInitWasCalled() { return m_inited; }
void OSXStoreOpenFiles(const wxArrayString &files ) { m_openFiles = files ; }
void OSXStorePrintFiles(const wxArrayString &files ) { m_printFiles = files ; }
void OSXStoreOpenURL(const wxString &url ) { m_getURL = url ; }
#endif
// Hide the application windows the same as the system hide command would do it.

View File

@ -30,22 +30,7 @@
* text rendering system
*/
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
#define wxOSX_USE_CORE_TEXT 1
// MLTE-TextControl uses ATSU
#define wxOSX_USE_ATSU_TEXT 1
#else // platform < 10.5
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
#define wxOSX_USE_CORE_TEXT 1
#else
#define wxOSX_USE_CORE_TEXT 0
#endif
#define wxOSX_USE_ATSU_TEXT 1
#endif
#define wxOSX_USE_ATSU_TEXT 1
/*
* Audio System

View File

@ -155,9 +155,7 @@ public:
OSStatus EnableCellSizeModification(bool enableHeight=true, bool enableWidth=true); // enables or disables the column width and row height modification (default: false)
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
OSStatus GetAttributes (OptionBits* attributes);
#endif
OSStatus GetColumnWidth (DataBrowserPropertyID column, UInt16 *width ) const; // returns the column width in pixels
OSStatus GetDefaultColumnWidth(UInt16 *width ) const; // returns the default column width in pixels
OSStatus GetDefaultRowHeight (UInt16 * height ) const;
@ -166,9 +164,7 @@ public:
OSStatus GetRowHeight (DataBrowserItemID item , UInt16 *height) const;
OSStatus GetScrollPosition (UInt32* top, UInt32 *left) const;
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
OSStatus SetAttributes (OptionBits attributes);
#endif
OSStatus SetColumnWidth(DataBrowserPropertyID column, UInt16 width); // sets the column width in pixels
OSStatus SetDefaultColumnWidth( UInt16 width );
OSStatus SetDefaultRowHeight( UInt16 height );

View File

@ -22,8 +22,6 @@
// near future
//
#if ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
class WXDLLIMPEXP_ADV wxDrawerWindow : public wxTopLevelWindow
{
DECLARE_DYNAMIC_CLASS(wxDrawerWindow)
@ -64,7 +62,4 @@ public:
wxDirection GetCurrentEdge() const; // not necessarily the preferred, due to screen constraints
};
#endif // defined( __WXMAC__ ) && TARGET_API_MAC_OSX && ( MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2 )
#endif
// _WX_DRAWERWINDOW_H_
#endif // _WX_DRAWERWINDOW_H_

View File

@ -13,11 +13,6 @@
#ifndef _WX_PRIVATE_H_
#define _WX_PRIVATE_H_
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
typedef UInt32 URefCon;
typedef SInt32 SRefCon;
#endif
#if wxUSE_GUI
#include "wx/osx/uma.h"
@ -29,10 +24,6 @@ typedef SInt32 SRefCon;
// app.h
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
bool wxMacConvertEventToRecord( EventRef event , EventRecord *rec);
#endif
#endif // wxUSE_GUI
// filefn.h
@ -269,12 +260,6 @@ ControlActionUPP GetwxMacLiveScrollbarActionProc();
// additional optional event defines
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
enum {
kEventControlFocusPartChanged = 164
};
#endif
class WXDLLIMPEXP_CORE wxMacControl : public wxWidgetImpl
{
public :

View File

@ -41,33 +41,14 @@
* text rendering system
*/
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
#define wxOSX_USE_CORE_TEXT 1
#define wxOSX_USE_ATSU_TEXT 0
#else // platform < 10.5
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
#define wxOSX_USE_CORE_TEXT 1
#else
#define wxOSX_USE_CORE_TEXT 0
#endif
#define wxOSX_USE_ATSU_TEXT 1
#endif
#define wxOSX_USE_ATSU_TEXT 0
/*
* Audio System
*/
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
#define wxOSX_USE_QUICKTIME 0
#define wxOSX_USE_AUDIOTOOLBOX 1
#else // platform < 10.5
#define wxOSX_USE_QUICKTIME 1
#define wxOSX_USE_AUDIOTOOLBOX 0
#endif
#define wxOSX_USE_QUICKTIME 0
#define wxOSX_USE_AUDIOTOOLBOX 1
/*
* turning off capabilities that don't work under cocoa yet

View File

@ -19,12 +19,6 @@
#import <Cocoa/Cocoa.h>
#endif
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
// available in 10.4 but not in the headers
enum {
kEventMouseScroll = 11
};
#endif
//
// shared between Cocoa and Carbon
//
@ -160,6 +154,7 @@ public :
virtual void cursorUpdate(WX_NSEvent event, WXWidget slf, void* _cmd);
virtual void keyEvent(WX_NSEvent event, WXWidget slf, void* _cmd);
virtual void insertText(NSString* text, WXWidget slf, void* _cmd);
virtual void doCommandBySelector(void* sel, WXWidget slf, void* _cmd);
virtual bool performKeyEquivalent(WX_NSEvent event, WXWidget slf, void* _cmd);
virtual bool acceptsFirstResponder(WXWidget slf, void* _cmd);
virtual bool becomeFirstResponder(WXWidget slf, void* _cmd);

View File

@ -45,11 +45,7 @@
#define WX_GMTOFF_IN_TM 1
#define HAVE_PW_GECOS 1
#define HAVE_DLOPEN 1
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
/* #undef HAVE_CXA_DEMANGLE */
#else
#define HAVE_CXA_DEMANGLE 1
#endif
#define HAVE_GETTIMEOFDAY 1
#define HAVE_FSYNC 1
#define HAVE_ROUND 1
@ -108,11 +104,7 @@
#define HAVE_WCHAR_H 1
/* better to use the built-in CF conversions, also avoid iconv versioning problems */
/* #undef HAVE_ICONV */
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5
#define ICONV_CONST const
#else
#define ICONV_CONST
#endif
#define HAVE_LANGINFO_H 1
#define HAVE_WCSRTOMBS 1
#define HAVE_FPUTWS 1
@ -131,9 +123,9 @@
#define WXWIN_OS_DESCRIPTION "Darwin 7.9.0 Power Macintosh"
#define PACKAGE_BUGREPORT "wx-dev@lists.wxwidgets.org"
#define PACKAGE_NAME "wxWidgets"
#define PACKAGE_STRING "wxWidgets 3.0.0"
#define PACKAGE_STRING "wxWidgets 3.1.0"
#define PACKAGE_TARNAME "wxwidgets"
#define PACKAGE_VERSION "3.0.0"
#define PACKAGE_VERSION "3.1.0"
// for regex
#define WX_NO_REGEX_ADVANCED 1

View File

@ -30,7 +30,9 @@ public:
#ifdef __WXOSX_COCOA__
// skip wxGUIEventLoop to avoid missing Enter/Exit notifications
int Run() { return wxCFEventLoop::Run(); }
virtual int Run() { return wxCFEventLoop::Run(); }
virtual bool ProcessIdle();
#endif
protected:
virtual void OSXDoRun();

View File

@ -152,9 +152,7 @@ public:
CGFontRef OSXGetCGFont() const;
#endif
#if wxOSX_USE_CORE_TEXT
CTFontRef OSXGetCTFont() const;
#endif
#if wxOSX_USE_ATSU_TEXT
// Returns an ATSUStyle not ATSUStyle*

View File

@ -19,7 +19,6 @@
* under a certain platform
*/
#define wxOSX_USE_CORE_TEXT 1
#define wxOSX_USE_ATSU_TEXT 0
#define wxHAS_OPENGL_ES
@ -362,6 +361,11 @@
#define wxUSE_RICHTOOLTIP 0
#endif
#if wxUSE_WEBVIEW
#undef wxUSE_WEBVIEW
#define wxUSE_WEBVIEW 0
#endif
#endif
/* _WX_OSX_IPHONE_CHKCONF_H_ */

View File

@ -146,6 +146,10 @@ public:
// call this function to update it (m_menuBarFrame should be !NULL)
void Refresh(bool eraseBackground = true, const wxRect *rect = NULL);
#if wxABI_VERSION >= 30001
wxMenu *OSXGetAppleMenu() const { return m_appleMenu; }
#endif
static void SetAutoWindowMenu( bool enable ) { s_macAutoWindowMenu = enable ; }
static bool GetAutoWindowMenu() { return s_macAutoWindowMenu ; }

View File

@ -74,10 +74,6 @@ public:
virtual void MarkDirty();
virtual void DiscardEdits();
// set the grayed out hint text
virtual bool SetHint(const wxString& hint);
virtual wxString GetHint() const;
// text control under some platforms supports the text styles: these
// methods apply the given text style to the given selection or to
// set/get the style which will be used for all appended text
@ -151,7 +147,6 @@ protected:
private :
wxMenu *m_privateContextMenu;
wxString m_hintString;
DECLARE_EVENT_TABLE()
};

View File

@ -81,6 +81,10 @@ public:
virtual bool SendMaxLenEvent();
// set the grayed out hint text
virtual bool SetHint(const wxString& hint);
virtual wxString GetHint() const;
// Implementation
// --------------
@ -102,6 +106,8 @@ protected:
// need to make this public because of the current implementation via callbacks
unsigned long m_maxLength;
private:
wxString m_hintString;
};
#endif // _WX_OSX_TEXTENTRY_H_

View File

@ -95,8 +95,13 @@
# endif
#endif /* __WINDOWS__ */
/* Don't use widget toolkit specific code in non-GUI code */
#if defined(wxUSE_GUI) && !wxUSE_GUI
/*
Don't use widget toolkit specific code in non-GUI code in the library
itself to ensure that the same base library is used for both MSW and GTK
ports. But keep __WXMSW__ defined for (console) applications using
wxWidgets for compatibility.
*/
#if defined(WXBUILDING) && defined(wxUSE_GUI) && !wxUSE_GUI
# ifdef __WXMSW__
# undef __WXMSW__
# endif

View File

@ -156,7 +156,7 @@ protected:
wxDECLARE_NO_COPY_CLASS(wxTextMeasureBase);
};
// Include the platform dependant class declaration, if any.
// Include the platform dependent class declaration, if any.
#if defined(__WXGTK20__)
#include "wx/gtk/private/textmeasure.h"
#elif defined(__WXMSW__)

View File

@ -80,7 +80,7 @@ public:
private:
// (re)init
void Init() { m_defaultState = false; }
void Init() { m_count = 0; m_defaultState = false; }
// the total number of items we handle
unsigned m_count;

View File

@ -79,8 +79,6 @@ struct WXDLLIMPEXP_BASE wxStringOperationsUtf8
template<typename Iterator>
static void DecIter(Iterator& i)
{
wxASSERT( IsValidUtf8LeadByte(*i) );
// Non-lead bytes are all in the 0x80..0xBF range (i.e. 10xxxxxx in
// binary), so we just have to go back until we hit a byte that is
// either < 0x80 (i.e. 0xxxxxxx in binary) or 0xC0..0xFF (11xxxxxx in

View File

@ -748,7 +748,7 @@ struct wxArgNormalizer<const wxUniChar&> : public wxArgNormalizer<wchar_t>
{
wxArgNormalizer(const wxUniChar& s,
const wxFormatString *fmt, unsigned index)
: wxArgNormalizer<wchar_t>(s.GetValue(), fmt, index) {}
: wxArgNormalizer<wchar_t>(wx_truncate_cast(wchar_t, s.GetValue()), fmt, index) {}
};
// for wchar_t, default handler does the right thing

View File

@ -205,6 +205,9 @@ enum wxTextAttrFlags
wxTEXT_ATTR_EFFECTS = 0x00800000,
wxTEXT_ATTR_OUTLINE_LEVEL = 0x01000000,
wxTEXT_ATTR_AVOID_PAGE_BREAK_BEFORE = 0x20000000,
wxTEXT_ATTR_AVOID_PAGE_BREAK_AFTER = 0x40000000,
/*!
* Character and paragraph combined styles
*/
@ -216,7 +219,8 @@ enum wxTextAttrFlags
wxTEXT_ATTR_PARAGRAPH = \
(wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_TABS|\
wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|wxTEXT_ATTR_LINE_SPACING|\
wxTEXT_ATTR_BULLET|wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL|wxTEXT_ATTR_PAGE_BREAK),
wxTEXT_ATTR_BULLET|wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL|\
wxTEXT_ATTR_PAGE_BREAK|wxTEXT_ATTR_AVOID_PAGE_BREAK_BEFORE|wxTEXT_ATTR_AVOID_PAGE_BREAK_AFTER),
wxTEXT_ATTR_ALL = (wxTEXT_ATTR_CHARACTER|wxTEXT_ATTR_PARAGRAPH)
};
@ -262,7 +266,9 @@ enum wxTextAttrEffects
wxTEXT_ATTR_EFFECT_OUTLINE = 0x00000040,
wxTEXT_ATTR_EFFECT_ENGRAVE = 0x00000080,
wxTEXT_ATTR_EFFECT_SUPERSCRIPT = 0x00000100,
wxTEXT_ATTR_EFFECT_SUBSCRIPT = 0x00000200
wxTEXT_ATTR_EFFECT_SUBSCRIPT = 0x00000200,
wxTEXT_ATTR_EFFECT_RTL = 0x00000400,
wxTEXT_ATTR_EFFECT_SUPPRESS_HYPHENATION = 0x00001000
};
/*!

View File

@ -161,7 +161,7 @@ private:
return ToHi8bit(c);
#else
return c;
return wx_truncate_cast(char, c);
#endif
}

View File

@ -327,7 +327,7 @@ public:
if ( m_capacity + increment > n )
n = m_capacity + increment;
m_values = Ops::Realloc(m_values, n * sizeof(value_type), m_size);
m_values = Ops::Realloc(m_values, n, m_size);
m_capacity = n;
}

View File

@ -26,10 +26,10 @@
/* NB: this file is parsed by automatic tools so don't change its format! */
#define wxMAJOR_VERSION 3
#define wxMINOR_VERSION 0
#define wxMINOR_VERSION 1
#define wxRELEASE_NUMBER 0
#define wxSUBRELEASE_NUMBER 0
#define wxVERSION_STRING wxT("wxWidgets 3.0.0 RC1")
#define wxVERSION_STRING wxT("wxWidgets 3.1.0")
/* nothing to update below this line when updating the version */
/* ---------------------------------------------------------------------------- */

View File

@ -565,24 +565,6 @@ WXDLLIMPEXP_BASE wchar_t * wxCRT_GetenvW(const wchar_t *name);
/* wcstoi doesn't exist */
#endif
#ifdef __DARWIN__
#if !defined(__WXOSX_IPHONE__) && MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_2
#define wxNEED_WX_MBSTOWCS
#endif
#endif
#ifdef wxNEED_WX_MBSTOWCS
/* even though they are defined and "implemented", they are bad and just
stubs so we need our own - we need these even in ANSI builds!! */
WXDLLIMPEXP_BASE size_t wxMbstowcs(wchar_t *, const char *, size_t);
WXDLLIMPEXP_BASE size_t wxWcstombs(char *, const wchar_t *, size_t);
#else
#define wxMbstowcs mbstowcs
#define wxWcstombs wcstombs
#endif
/* -------------------------------------------------------------------------
time.h
------------------------------------------------------------------------- */

View File

@ -238,7 +238,17 @@
#define wxCRT_ScanfA scanf
#define wxCRT_SscanfA sscanf
#define wxCRT_FscanfA fscanf
#define wxCRT_VsscanfA vsscanf
/* vsscanf() may have a wrong declaration with non-const first parameter, fix
* this by wrapping it if necessary. */
#if defined __cplusplus && defined HAVE_BROKEN_VSSCANF_DECL
inline int wxCRT_VsscanfA(const char *str, const char *format, va_list ap)
{
return vsscanf(const_cast<char *>(str), format, ap);
}
#else
#define wxCRT_VsscanfA vsscanf
#endif
#if defined(wxNEED_WPRINTF)
int wxCRT_ScanfW(const wchar_t *format, ...);

View File

@ -173,6 +173,10 @@ wxAppConsoleBase::~wxAppConsoleBase()
bool wxAppConsoleBase::Initialize(int& WXUNUSED(argc), wxChar **WXUNUSED(argv))
{
#if defined(__WINDOWS__) && !defined(__WXWINCE__)
SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOOPENFILEERRORBOX);
#endif
return true;
}

View File

@ -329,16 +329,11 @@ void wxCommandProcessor::ClearCommands()
bool wxCommandProcessor::IsDirty() const
{
if ( m_commands.empty() )
{
// If we have never been modified, we can't be dirty.
return false;
}
if ( !m_lastSavedCommand )
{
// If we have been modified but have never been saved, we're dirty.
return true;
// We have never been saved, so we are dirty if and only if we have any
// commands at all.
return m_currentCommand;
}
if ( !m_currentCommand )

View File

@ -584,7 +584,7 @@ wxSize wxStaticBitmapBase::DoGetBestSize() const
wxSize best;
wxBitmap bmp = GetBitmap();
if ( bmp.IsOk() )
best = wxSize(bmp.GetWidth(), bmp.GetHeight());
best = bmp.GetScaledSize();
else
// this is completely arbitrary
best = wxSize(16, 16);

View File

@ -330,28 +330,49 @@ int wxDataViewModel::Compare( const wxDataViewItem &item1, const wxDataViewItem
{
long l1 = value1.GetLong();
long l2 = value2.GetLong();
long res = l1-l2;
if (res)
return res;
if (l1 < l2)
return -1;
else if (l1 > l2)
return 1;
}
else if (value1.GetType() == wxT("double"))
{
double d1 = value1.GetDouble();
double d2 = value2.GetDouble();
if (d1 < d2)
return 1;
if (d1 > d2)
return -1;
else if (d1 > d2)
return 1;
}
else if (value1.GetType() == wxT("datetime"))
{
wxDateTime dt1 = value1.GetDateTime();
wxDateTime dt2 = value2.GetDateTime();
if (dt1.IsEarlierThan(dt2))
return 1;
if (dt2.IsEarlierThan(dt1))
return -1;
if (dt2.IsEarlierThan(dt1))
return 1;
}
else if (value1.GetType() == wxT("bool"))
{
bool b1 = value1.GetBool();
bool b2 = value2.GetBool();
if (b1 != b2)
return b1 ? 1 : -1;
}
else if (value1.GetType() == wxT("wxDataViewIconText"))
{
wxDataViewIconText iconText1, iconText2;
iconText1 << value1;
iconText2 << value2;
int res = iconText1.GetText().Cmp(iconText2.GetText());
if (res != 0)
return res;
}
// items must be different
wxUIntPtr id1 = wxPtrToUInt(item1.GetID()),
@ -1769,6 +1790,11 @@ void wxDataViewListStore::DeleteAllItems()
Reset( 0 );
}
void wxDataViewListStore::ClearColumns()
{
m_cols.clear();
}
void wxDataViewListStore::SetItemData( const wxDataViewItem& item, wxUIntPtr data )
{
wxDataViewListStoreLine* line = m_data[GetRow(item)];
@ -1780,7 +1806,7 @@ void wxDataViewListStore::SetItemData( const wxDataViewItem& item, wxUIntPtr dat
wxUIntPtr wxDataViewListStore::GetItemData( const wxDataViewItem& item ) const
{
wxDataViewListStoreLine* line = m_data[GetRow(item)];
if (!line) return static_cast<wxUIntPtr>(NULL);
if (!line) return 0;
return line->GetData();
}
@ -1872,6 +1898,12 @@ bool wxDataViewListCtrl::AppendColumn( wxDataViewColumn *col )
return AppendColumn( col, "string" );
}
bool wxDataViewListCtrl::ClearColumns()
{
GetStore()->ClearColumns();
return wxDataViewCtrl::ClearColumns();
}
wxDataViewColumn *wxDataViewListCtrl::AppendTextColumn( const wxString &label,
wxDataViewCellMode mode, int width, wxAlignment align, int flags )
{

View File

@ -148,7 +148,7 @@ void wxBufferedDC::UnMask()
int width = m_area.GetWidth(),
height = m_area.GetHeight();
if (! m_style & wxBUFFER_VIRTUAL_AREA)
if (!(m_style & wxBUFFER_VIRTUAL_AREA))
{
int widthDC,
heightDC;
@ -157,7 +157,8 @@ void wxBufferedDC::UnMask()
height = wxMin(height, heightDC);
}
m_dc->Blit(0, 0, width, height, this, -x, -y);
const wxPoint origin = GetLogicalOrigin();
m_dc->Blit(-origin.x, -origin.y, width, height, this, -x, -y);
m_dc = NULL;
if ( m_style & wxBUFFER_USES_SHARED_BUFFER )

View File

@ -27,6 +27,8 @@
#include "wx/wfstream.h"
#include "wx/filename.h"
#include "wx/private/markupparser.h"
// ----------------------------------------------------------
// Global utilities
// ----------------------------------------------------------
@ -293,7 +295,7 @@ void wxSVGFileDCImpl::DoDrawRotatedText(const wxString& sText, wxCoord x, wxCoor
//text will be solid, unless alpha value isn't opaque in the foreground colour
s += wxBrushString(m_textForegroundColour) + wxPenString(m_textForegroundColour);
sTmp.Printf ( wxT("stroke-width:0;\" transform=\"rotate( %s %d %d ) \" >"), NumStr(-angle), x,y );
s += sTmp + sText + wxT("</text> ") + wxT("\n");
s += sTmp + wxMarkupParser::Quote(sText) + wxT("</text> ") + wxT("\n");
if (m_OK)
{
write(s);

View File

@ -517,7 +517,13 @@ IMPLEMENT_DYNAMIC_CLASS(wxWindowModalDialogEvent, wxCommandEvent)
void wxDialogBase::ShowWindowModal ()
{
ShowModal();
int retval = ShowModal();
// wxWindowModalDialogEvent relies on GetReturnCode() returning correct
// code. Rather than doing it manually in all ShowModal() overrides for
// native dialogs (and getting accidentally broken again), set it here.
// The worst that can happen is that it will be set twice to the same
// value.
SetReturnCode(retval);
SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED );
}

View File

@ -2027,11 +2027,16 @@ bool wxDocChildFrameAnyBase::TryProcessEvent(wxEvent& event)
return false;
}
// Store a (non-owning) pointer to the last processed event here to be able
// to recognize this event again if it bubbles up to the parent frame, see
// the code in wxDocParentFrameAnyBase::TryProcessEvent().
m_lastEvent = &event;
// Forward the event to the document manager which will, in turn, forward
// it to its active view which must be our m_childView.
//
// Notice that we do things in this roundabout way to guarantee the correct
// event handlers call order: first the document, then the new and then the
// event handlers call order: first the document, then the view and then the
// document manager itself. And if we forwarded the event directly to the
// view, then the document manager would do it once again when we forwarded
// it to it.
@ -2079,28 +2084,13 @@ bool wxDocParentFrameAnyBase::TryProcessEvent(wxEvent& event)
// already forwarded the event to wxDocManager, check for this:
if ( wxView* const view = m_docManager->GetAnyUsableView() )
{
wxWindow* win = view->GetFrame();
if ( win && win != m_frame )
{
// Notice that we intentionally don't use wxGetTopLevelParent()
// here because we want to check both for the case of a child
// "frame" (e.g. MDI child frame or notebook page) inside this TLW
// and a separate child TLW frame (as used in the SDI mode) here.
for ( win = win->GetParent(); win; win = win->GetParent() )
{
if ( win == m_frame )
return false;
}
}
//else: This view is directly associated with the parent frame (which
// can happen in the so called "single" mode in which only one
// document can be opened and so is managed by the parent frame
// itself), there can be no child frame in play so we must forward
// the event to wxDocManager ourselves.
wxDocChildFrameAnyBase* const childFrame = view->GetDocChildFrame();
if ( childFrame && childFrame->HasAlreadyProcessed(event) )
return false;
}
// But forward the event to wxDocManager ourselves if there are no views at
// all or if we are the frame's view ourselves.
// all or if this event hadn't been sent to the child frame previously.
return m_docManager->ProcessEventLocally(event);
}

View File

@ -315,14 +315,20 @@ static bool IsUNCPath(const wxString& path, wxPathFormat format)
!IsDOSPathSep(path[2u]);
}
#ifndef __WIN32__
// Under Unix-ish systems (basically everything except Windows but we can't
// just test for non-__WIN32__ because Cygwin defines it, yet we want to use
// lstat() under it, so test for all the rest explicitly) we may work either
// with the file itself or its target if it's a symbolic link and we should
// dereference it, as determined by wxFileName::ShouldFollowLink() and the
// absence of the wxFILE_EXISTS_NO_FOLLOW flag. StatAny() can be used to stat
// the appropriate file with an extra twist that it also works when there is no
// wxFileName object at all, as is the case in static methods.
// Under Unix-ish systems (basically everything except Windows) we may work
// either with the file itself or its target if it's a symbolic link and we
// should dereference it, as determined by wxFileName::ShouldFollowLink() and
// the absence of the wxFILE_EXISTS_NO_FOLLOW flag. StatAny() can be used to
// stat the appropriate file with an extra twist that it also works when there
// is no wxFileName object at all, as is the case in static methods.
#if defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__OS2__) || (defined(__DOS__) && defined(__WATCOMC__))
#define wxHAVE_LSTAT
#endif
#ifdef wxHAVE_LSTAT
// Private implementation, don't call directly, use one of the overloads below.
bool DoStatAny(wxStructStat& st, wxString path, bool dereference)
@ -363,7 +369,7 @@ bool StatAny(wxStructStat& st, const wxFileName& fn)
return DoStatAny(st, fn.GetFullPath(), fn.ShouldFollowLink());
}
#endif // !__WIN32__
#endif // wxHAVE_LSTAT
// ----------------------------------------------------------------------------
// private constants
@ -1851,7 +1857,7 @@ bool wxFileName::SameAs(const wxFileName& filepath, wxPathFormat format) const
if ( fn1.GetFullPath() == fn2.GetFullPath() )
return true;
#if defined(__UNIX__)
#ifdef wxHAVE_LSTAT
wxStructStat st1, st2;
if ( StatAny(st1, fn1) && StatAny(st2, fn2) )
{
@ -1859,7 +1865,7 @@ bool wxFileName::SameAs(const wxFileName& filepath, wxPathFormat format) const
return true;
}
//else: It's not an error if one or both files don't exist.
#endif // defined __UNIX__
#endif // wxHAVE_LSTAT
return false;
}
@ -2752,7 +2758,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
return true;
}
#elif defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__OS2__) || (defined(__DOS__) && defined(__WATCOMC__))
#elif defined(wxHAVE_LSTAT)
// no need to test for IsDir() here
wxStructStat stBuf;
if ( StatAny(stBuf, *this) )

View File

@ -67,6 +67,24 @@ bool wxFileDialogBase::Create(wxWindow *parent,
m_wildCard = wildCard;
m_parent = parent;
#ifdef __WXOSX__
/*
[DS]
Remove the (for OS X unnecessary) wxFD_FILE_MUST_EXIST flag. Using it
causes problems when having an extra panel (either a custom one or
by showing the filetype filters through calling
wxSystemOptions::SetOption(wxOSX_FILEDIALOG_ALWAYS_SHOW_TYPES, 1) ).
Presumably the style flag conflicts with other style flags and an
assert in wxRegion::DoOffset is triggered later on.
Another solution was to override GetWindowStyleFlag() to not include
wxFD_FILE_MUST_EXIST in its return value, but as other wxFileDialog
style flags (that are actually used) dont't seem to cause problems
this seemed an easier solution.
*/
style &= ~wxFD_FILE_MUST_EXIST;
#endif
m_windowStyle = style;
m_filterIndex = 0;

View File

@ -65,6 +65,11 @@ IMPLEMENT_DYNAMIC_CLASS(wxFileSystemWatcherEvent, wxEvent);
wxString wxFileSystemWatcherEvent::ToString() const
{
if (IsError())
{
return wxString::Format("FSW_EVT type=%d (%s) message='%s'", m_changeType,
GetFSWEventChangeTypeName(m_changeType), GetErrorDescription());
}
return wxString::Format("FSW_EVT type=%d (%s) path='%s'", m_changeType,
GetFSWEventChangeTypeName(m_changeType), GetPath().GetFullPath());
}

View File

@ -333,7 +333,7 @@ void wxColourDatabase::Initialize()
{wxT("LIGHT GREY"), 192, 192, 192},
{wxT("LIGHT STEEL BLUE"), 143, 143, 188},
{wxT("LIME GREEN"), 50, 204, 50},
{wxT("LIGHT MAGENTA"), 255, 0, 255},
{wxT("LIGHT MAGENTA"), 255, 119, 255},
{wxT("MAGENTA"), 255, 0, 255},
{wxT("MAROON"), 142, 35, 107},
{wxT("MEDIUM AQUAMARINE"), 50, 204, 153},

View File

@ -423,21 +423,25 @@ wxMenuItem *wxMenuBase::Remove(wxMenuItem *item)
{
wxCHECK_MSG( item, NULL, wxT("invalid item in wxMenu::Remove") );
return DoRemove(item);
}
wxMenuItem *wxMenuBase::DoRemove(wxMenuItem *item)
{
wxMenuItemList::compatibility_iterator node = m_items.Find(item);
// if we get here, the item is valid or one of Remove() functions is broken
wxCHECK_MSG( node, NULL, wxT("bug in wxMenu::Remove logic") );
wxCHECK_MSG( node, NULL, wxT("removing item not in the menu?") );
// call DoRemove() before removing the item from the list of items as the
// existing code in port-specific implementation may rely on the item still
// being there (this is the case for at least wxMSW)
wxMenuItem* const item2 = DoRemove(item);
// we detach the item, but we do delete the list node (i.e. don't call
// DetachNode() here!)
m_items.Erase(node);
// item isn't attached to anything any more
return item2;
}
wxMenuItem *wxMenuBase::DoRemove(wxMenuItem *item)
{
item->SetMenu(NULL);
wxMenu *submenu = item->GetSubMenu();
if ( submenu )
@ -459,7 +463,7 @@ bool wxMenuBase::Delete(wxMenuItem *item)
bool wxMenuBase::DoDelete(wxMenuItem *item)
{
wxMenuItem *item2 = DoRemove(item);
wxMenuItem *item2 = Remove(item);
wxCHECK_MSG( item2, false, wxT("failed to delete menu item") );
// don't delete the submenu
@ -479,7 +483,7 @@ bool wxMenuBase::Destroy(wxMenuItem *item)
bool wxMenuBase::DoDestroy(wxMenuItem *item)
{
wxMenuItem *item2 = DoRemove(item);
wxMenuItem *item2 = Remove(item);
wxCHECK_MSG( item2, false, wxT("failed to delete menu item") );
delete item2;

View File

@ -1357,7 +1357,25 @@ wxSocketEventFlags wxSocketImpl::Select(wxSocketEventFlags flags,
wxSocketEventFlags detected = 0;
if ( preadfds && wxFD_ISSET(m_fd, preadfds) )
detected |= wxSOCKET_INPUT_FLAG;
{
// check for the case of a server socket waiting for connection
if ( m_server && (flags & wxSOCKET_CONNECTION_FLAG) )
{
int error;
SOCKOPTLEN_T len = sizeof(error);
m_establishing = false;
getsockopt(m_fd, SOL_SOCKET, SO_ERROR, (char*)&error, &len);
if ( error )
detected = wxSOCKET_LOST_FLAG;
else
detected |= wxSOCKET_CONNECTION_FLAG;
}
else // not called to get non-blocking accept() status
{
detected |= wxSOCKET_INPUT_FLAG;
}
}
if ( pwritefds && wxFD_ISSET(m_fd, pwritefds) )
{

View File

@ -227,42 +227,43 @@ bool wxTextAttr::operator== (const wxTextAttr& attr) const
{
return GetFlags() == attr.GetFlags() &&
GetTextColour() == attr.GetTextColour() &&
GetBackgroundColour() == attr.GetBackgroundColour() &&
(!HasTextColour() || (GetTextColour() == attr.GetTextColour())) &&
(!HasBackgroundColour() || (GetBackgroundColour() == attr.GetBackgroundColour())) &&
GetAlignment() == attr.GetAlignment() &&
GetLeftIndent() == attr.GetLeftIndent() &&
GetLeftSubIndent() == attr.GetLeftSubIndent() &&
GetRightIndent() == attr.GetRightIndent() &&
TabsEq(GetTabs(), attr.GetTabs()) &&
(!HasAlignment() || (GetAlignment() == attr.GetAlignment())) &&
(!HasLeftIndent() || (GetLeftIndent() == attr.GetLeftIndent() &&
GetLeftSubIndent() == attr.GetLeftSubIndent())) &&
(!HasRightIndent() || (GetRightIndent() == attr.GetRightIndent())) &&
(!HasTabs() || (TabsEq(GetTabs(), attr.GetTabs()))) &&
GetParagraphSpacingAfter() == attr.GetParagraphSpacingAfter() &&
GetParagraphSpacingBefore() == attr.GetParagraphSpacingBefore() &&
GetLineSpacing() == attr.GetLineSpacing() &&
GetCharacterStyleName() == attr.GetCharacterStyleName() &&
GetParagraphStyleName() == attr.GetParagraphStyleName() &&
GetListStyleName() == attr.GetListStyleName() &&
(!HasParagraphSpacingAfter() || (GetParagraphSpacingAfter() == attr.GetParagraphSpacingAfter())) &&
(!HasParagraphSpacingBefore() || (GetParagraphSpacingBefore() == attr.GetParagraphSpacingBefore())) &&
(!HasLineSpacing() || (GetLineSpacing() == attr.GetLineSpacing())) &&
(!HasCharacterStyleName() || (GetCharacterStyleName() == attr.GetCharacterStyleName())) &&
(!HasParagraphStyleName() || (GetParagraphStyleName() == attr.GetParagraphStyleName())) &&
(!HasListStyleName() || (GetListStyleName() == attr.GetListStyleName())) &&
GetBulletStyle() == attr.GetBulletStyle() &&
GetBulletText() == attr.GetBulletText() &&
GetBulletNumber() == attr.GetBulletNumber() &&
GetBulletFont() == attr.GetBulletFont() &&
GetBulletName() == attr.GetBulletName() &&
(!HasBulletStyle() || (GetBulletStyle() == attr.GetBulletStyle())) &&
(!HasBulletText() || (GetBulletText() == attr.GetBulletText())) &&
(!HasBulletNumber() || (GetBulletNumber() == attr.GetBulletNumber())) &&
(GetBulletFont() == attr.GetBulletFont()) &&
(!HasBulletName() || (GetBulletName() == attr.GetBulletName())) &&
GetTextEffects() == attr.GetTextEffects() &&
GetTextEffectFlags() == attr.GetTextEffectFlags() &&
(!HasTextEffects() || (GetTextEffects() == attr.GetTextEffects() &&
GetTextEffectFlags() == attr.GetTextEffectFlags())) &&
GetOutlineLevel() == attr.GetOutlineLevel() &&
(!HasOutlineLevel() || (GetOutlineLevel() == attr.GetOutlineLevel())) &&
GetFontSize() == attr.GetFontSize() &&
GetFontStyle() == attr.GetFontStyle() &&
GetFontWeight() == attr.GetFontWeight() &&
GetFontUnderlined() == attr.GetFontUnderlined() &&
GetFontFaceName() == attr.GetFontFaceName() &&
GetFontEncoding() == attr.GetFontEncoding() &&
GetFontFamily() == attr.GetFontFamily() &&
(!HasFontSize() || (GetFontSize() == attr.GetFontSize())) &&
(!HasFontItalic() || (GetFontStyle() == attr.GetFontStyle())) &&
(!HasFontWeight() || (GetFontWeight() == attr.GetFontWeight())) &&
(!HasFontUnderlined() || (GetFontUnderlined() == attr.GetFontUnderlined())) &&
(!HasFontStrikethrough() || (GetFontStrikethrough() == attr.GetFontStrikethrough())) &&
(!HasFontFaceName() || (GetFontFaceName() == attr.GetFontFaceName())) &&
(!HasFontEncoding() || (GetFontEncoding() == attr.GetFontEncoding())) &&
(!HasFontFamily() || (GetFontFamily() == attr.GetFontFamily())) &&
GetURL() == attr.GetURL();
(!HasURL() || (GetURL() == attr.GetURL()));
}
// Partial equality test. Only returns false if an attribute doesn't match.
@ -393,7 +394,7 @@ bool wxTextAttr::EqPartial(const wxTextAttr& attr, bool weakTest) const
if (HasTextEffects() && attr.HasTextEffects())
{
if (!BitlistsEqPartial(GetTextEffects(), attr.GetTextEffects(), attr.GetTextEffectFlags()))
if (!BitlistsEqPartial(GetTextEffects(), attr.GetTextEffects(), GetTextEffectFlags()))
return false;
}
@ -817,6 +818,19 @@ bool wxTextAttr::RemoveStyle(wxTextAttr& destStyle, const wxTextAttr& style)
int flags = style.GetFlags();
int destFlags = destStyle.GetFlags();
// We must treat text effects specially, since we must remove only some.
if (style.HasTextEffects() && (style.GetTextEffectFlags() != 0))
{
int newTextEffectFlags = destStyle.GetTextEffectFlags() & ~style.GetTextEffectFlags();
int newTextEffects = destStyle.GetTextEffects() & ~style.GetTextEffectFlags();
destStyle.SetTextEffects(newTextEffects);
destStyle.SetTextEffectFlags(newTextEffectFlags);
// Don't remove wxTEXT_ATTR_EFFECTS unless the resulting flags are zero
if (newTextEffectFlags != 0)
flags &= ~wxTEXT_ATTR_EFFECTS;
}
destStyle.SetFlags(destFlags & ~flags);
return true;
@ -927,7 +941,7 @@ bool wxTextAreaBase::DoSaveFile(const wxString& filename, int WXUNUSED(fileType)
{
#if wxUSE_FFILE
wxFFile file(filename, wxT("w"));
if ( file.IsOpened() && file.Write(GetValue(), *wxConvCurrent) )
if ( file.IsOpened() && file.Write(GetValue()) )
{
// if it worked, save for future calls
m_filename = filename;

View File

@ -208,8 +208,8 @@ bool wxTextFile::OnRead(const wxMBConv& conv)
// now break the buffer in lines
// last processed character, we need to know if it was a CR or not
wxChar chLast = '\0';
// was the last processed character a CR?
bool lastWasCR = false;
// the beginning of the current line, changes inside the loop
wxString::const_iterator lineStart = str.begin();
@ -221,7 +221,7 @@ bool wxTextFile::OnRead(const wxMBConv& conv)
{
case '\n':
// could be a DOS or Unix EOL
if ( chLast == '\r' )
if ( lastWasCR )
{
if ( p - 1 >= lineStart )
{
@ -239,10 +239,11 @@ bool wxTextFile::OnRead(const wxMBConv& conv)
}
lineStart = p + 1;
lastWasCR = false;
break;
case '\r':
if ( chLast == '\r' )
if ( lastWasCR )
{
// Mac empty line
AddLine(wxEmptyString, wxTextFileType_Mac);
@ -250,10 +251,12 @@ bool wxTextFile::OnRead(const wxMBConv& conv)
}
//else: we don't know what this is yet -- could be a Mac EOL or
// start of DOS EOL so wait for next char
lastWasCR = true;
break;
default:
if ( chLast == '\r' )
if ( lastWasCR )
{
// Mac line termination
if ( p - 1 >= lineStart )
@ -267,16 +270,31 @@ bool wxTextFile::OnRead(const wxMBConv& conv)
}
lineStart = p;
}
lastWasCR = false;
}
chLast = ch;
}
// anything in the last line?
if ( lineStart != end )
{
// add unterminated last line
AddLine(wxString(lineStart, end), wxTextFileType_None);
// add the last line, notice that it may have been terminated with CR
// as we don't end the line immediately when we see a CR, as it could
// be followed by a LF.
wxString lastLine(lineStart, end);
wxTextFileType lastType;
if ( lastWasCR )
{
// last line had Mac EOL, exclude it from the string
lastLine.RemoveLast();
lastType = wxTextFileType_Mac;
}
else
{
// last line wasn't terminated at all
lastType = wxTextFileType_None;
}
AddLine(lastLine, lastType);
}
return true;

View File

@ -28,11 +28,26 @@ namespace
// All thread info objects are stored in a global list so that they are
// freed when global objects are destroyed and no memory leaks are reported.
wxCriticalSection g_csAllThreadInfos;
typedef wxVector< wxSharedPtr<wxThreadSpecificInfo> > wxAllThreadInfos;
wxAllThreadInfos g_allThreadInfos;
// Pointer to currenct thread's instance
// Notice that we must be using accessor functions instead of simple global
// variables here as this code could be executed during global initialization
// time, i.e. before any globals in this module were initialzied.
inline wxCriticalSection& GetAllThreadInfosCS()
{
static wxCriticalSection s_csAllThreadInfos;
return s_csAllThreadInfos;
}
typedef wxVector< wxSharedPtr<wxThreadSpecificInfo> > wxAllThreadInfos;
inline wxAllThreadInfos& GetAllThreadInfos()
{
static wxAllThreadInfos s_allThreadInfos;
return s_allThreadInfos;
}
// Pointer to the current thread's instance
wxTLS_TYPE(wxThreadSpecificInfo*) g_thisThreadInfo;
} // anonymous namespace
@ -43,8 +58,8 @@ wxThreadSpecificInfo& wxThreadSpecificInfo::Get()
if ( !wxTLS_VALUE(g_thisThreadInfo) )
{
wxTLS_VALUE(g_thisThreadInfo) = new wxThreadSpecificInfo;
wxCriticalSectionLocker lock(g_csAllThreadInfos);
g_allThreadInfos.push_back(
wxCriticalSectionLocker lock(GetAllThreadInfosCS());
GetAllThreadInfos().push_back(
wxSharedPtr<wxThreadSpecificInfo>(wxTLS_VALUE(g_thisThreadInfo)));
}
return *wxTLS_VALUE(g_thisThreadInfo);
@ -55,15 +70,15 @@ void wxThreadSpecificInfo::ThreadCleanUp()
if ( !wxTLS_VALUE(g_thisThreadInfo) )
return; // nothing to do, not used by this thread at all
// find this thread's instance in g_allThreadInfos and destroy it
wxCriticalSectionLocker lock(g_csAllThreadInfos);
for ( wxAllThreadInfos::iterator i = g_allThreadInfos.begin();
i != g_allThreadInfos.end();
// find this thread's instance in GetAllThreadInfos() and destroy it
wxCriticalSectionLocker lock(GetAllThreadInfosCS());
for ( wxAllThreadInfos::iterator i = GetAllThreadInfos().begin();
i != GetAllThreadInfos().end();
++i )
{
if ( i->get() == wxTLS_VALUE(g_thisThreadInfo) )
{
g_allThreadInfos.erase(i);
GetAllThreadInfos().erase(i);
wxTLS_VALUE(g_thisThreadInfo) = NULL;
break;
}

View File

@ -76,7 +76,7 @@ wxTopLevelWindowBase::~wxTopLevelWindowBase()
)
{
wxWindow * const win = wxDynamicCast(*i, wxWindow);
if ( win && win->GetParent() == this )
if ( win && wxGetTopLevelParent(win->GetParent()) == this )
{
wxPendingDelete.erase(i);

View File

@ -630,7 +630,14 @@ static bool ReadAll(wxInputStream *is, wxArrayString& output)
// the stream could be already at EOF or in wxSTREAM_BROKEN_PIPE state
is->Reset();
wxTextInputStream tis(*is);
// Notice that wxTextInputStream doesn't work correctly with wxConvAuto
// currently, see #14720, so use the current locale conversion explicitly
// under assumption that any external program should be using it too.
wxTextInputStream tis(*is, " \t"
#if wxUSE_UNICODE
, wxConvLibc
#endif
);
for ( ;; )
{
@ -1198,6 +1205,7 @@ wxString wxStripMenuCodes(const wxString& in, int flags)
if ( ++it == in.end() )
{
wxLogDebug(wxT("Invalid menu string '%s'"), in.c_str());
break;
}
else
{
@ -1414,7 +1422,7 @@ wxVersionInfo wxGetLibraryVersionInfo()
wxMINOR_VERSION,
wxRELEASE_NUMBER,
msg,
wxS("Copyright (c) 1995-2011 wxWidgets team"));
wxS("Copyright (c) 1995-2013 wxWidgets team"));
}
void wxInfoMessageBox(wxWindow* parent)

View File

@ -89,7 +89,7 @@ WXDLLIMPEXP_BASE size_t wxMB2WC(wchar_t *buf, const char *psz, size_t n)
#ifdef HAVE_WCSRTOMBS
return mbsrtowcs(buf, &psz, n, &mbstate);
#else
return wxMbstowcs(buf, psz, n);
return mbstowcs(buf, psz, n);
#endif
}
@ -102,7 +102,7 @@ WXDLLIMPEXP_BASE size_t wxMB2WC(wchar_t *buf, const char *psz, size_t n)
#ifdef HAVE_WCSRTOMBS
return mbsrtowcs(NULL, &psz, 0, &mbstate);
#else
return wxMbstowcs(NULL, psz, 0);
return mbstowcs(NULL, psz, 0);
#endif
}
@ -122,14 +122,14 @@ WXDLLIMPEXP_BASE size_t wxWC2MB(char *buf, const wchar_t *pwz, size_t n)
#ifdef HAVE_WCSRTOMBS
return wcsrtombs(buf, &pwz, n, &mbstate);
#else
return wxWcstombs(buf, pwz, n);
return wcstombs(buf, pwz, n);
#endif
}
#ifdef HAVE_WCSRTOMBS
return wcsrtombs(NULL, &pwz, 0, &mbstate);
#else
return wxWcstombs(NULL, pwz, 0);
return wcstombs(NULL, pwz, 0);
#endif
}
@ -737,54 +737,6 @@ int wxVsnprintf(wchar_t *str, size_t size, const wxString& format, va_list argpt
// ctype.h stuff (currently unused)
// ----------------------------------------------------------------------------
#ifdef wxNEED_WX_MBSTOWCS
WXDLLIMPEXP_BASE size_t wxMbstowcs (wchar_t * out, const char * in, size_t outlen)
{
if (!out)
{
size_t outsize = 0;
while(*in++)
outsize++;
return outsize;
}
const char* origin = in;
while (outlen-- && *in)
{
*out++ = (wchar_t) *in++;
}
*out = '\0';
return in - origin;
}
WXDLLIMPEXP_BASE size_t wxWcstombs (char * out, const wchar_t * in, size_t outlen)
{
if (!out)
{
size_t outsize = 0;
while(*in++)
outsize++;
return outsize;
}
const wchar_t* origin = in;
while (outlen-- && *in)
{
*out++ = (char) *in++;
}
*out = '\0';
return in - origin;
}
#endif // wxNEED_WX_MBSTOWCS
#ifndef wxCRT_StrdupA
WXDLLIMPEXP_BASE char *wxCRT_StrdupA(const char *s)
{

View File

@ -76,9 +76,10 @@ wxXLocale& wxXLocale::GetCLocale()
{
if ( !gs_cLocale )
{
// NOTE: bcc551 has trouble doing static_cast with incomplete
// type definition. reinterpret_cast used as workaround
gs_cLocale = new wxXLocale( reinterpret_cast<wxXLocaleCTag *>(NULL) );
// Notice that we need a separate variable because clang 3.1 refuses to
// cast nullptr (which is how NULL is defined in it) to anything.
static wxXLocaleCTag* const tag = NULL;
gs_cLocale = new wxXLocale(tag);
}
return *gs_cLocale;

View File

@ -1,32 +0,0 @@
if exist ..\include\wx\msw\setup.h (
echo include\wx\msw\setup.h already exists
) else (
copy /y ..\include\wx\msw\setup0.h ..\include\wx\msw\setup.h
)
if exist ..\lib\cw7msw (
echo lib\cw7msw already exists
) else (
mkdir ..\lib\cw7msw
)
if exist ..\lib\cw7msw\include (
echo lib\cw7msw\include already exists
) else (
mkdir ..\lib\cw7msw\include
)
if exist ..\lib\cw7msw\include\wx (
echo lib\cw7msw\include\wx already exists
) else (
mkdir ..\lib\cw7msw\include\wx
)
if exist ..\lib\cw7msw\include\wx\setup.h (
echo lib\cw7msw\include\wx\setup.h already exists
) else (
copy /y ..\include\wx\msw\setup.h ..\lib\cw7msw\include\wx\setup.h
)
rem pause

View File

@ -1,32 +0,0 @@
if exist ..\include\wx\msw\setup.h (
echo include\wx\msw\setup.h already exists
) else (
copy /y ..\include\wx\msw\setup0.h ..\include\wx\msw\setup.h
)
if exist ..\lib\cw7mswd (
echo lib\cw7mswd already exists
) else (
mkdir ..\lib\cw7mswd
)
if exist ..\lib\cw7mswd\include (
echo lib\cw7mswd\include already exists
) else (
mkdir ..\lib\cw7mswd\include
)
if exist ..\lib\cw7mswd\include\wx (
echo lib\cw7mswd\include\wx already exists
) else (
mkdir ..\lib\cw7mswd\include\wx
)
if exist ..\lib\cw7mswd\include\wx\setup.h (
echo lib\cw7mswd\include\wx\setup.h already exists
) else (
copy /y ..\include\wx\msw\setup.h ..\lib\cw7mswd\include\wx\setup.h
)
rem pause

View File

@ -277,16 +277,24 @@ void wxGenericAboutDialog::AddCollapsiblePane(const wxString& title,
void wxGenericAboutDialog::OnCloseWindow(wxCloseEvent& event)
{
Destroy();
// safeguards in case the window is still shown using ShowModal
if ( !IsModal() )
Destroy();
event.Skip();
}
void wxGenericAboutDialog::OnOK(wxCommandEvent& WXUNUSED(event))
void wxGenericAboutDialog::OnOK(wxCommandEvent& event)
{
// By default a modeless dialog would be just hidden, destroy this one
// instead.
Destroy();
// safeguards in case the window is still shown using ShowModal
if ( !IsModal() )
{
// By default a modeless dialog would be just hidden, destroy this one
// instead.
Destroy();
}
else
event.Skip();
}
#endif // !wxUSE_MODAL_ABOUT_DIALOG

View File

@ -119,6 +119,34 @@ wxDataViewColumn* GetExpanderColumnOrFirstOne(wxDataViewCtrl* dataview)
return expander;
}
wxTextCtrl *CreateEditorTextCtrl(wxWindow *parent, const wxRect& labelRect, const wxString& value)
{
wxTextCtrl* ctrl = new wxTextCtrl(parent, wxID_ANY, value,
wxPoint(labelRect.x,labelRect.y),
wxSize(labelRect.width,labelRect.height),
wxTE_PROCESS_ENTER);
// Adjust size of wxTextCtrl editor to fit text, even if it means being
// wider than the corresponding column (this is how Explorer behaves).
const int fitting = ctrl->GetSizeFromTextSize(ctrl->GetTextExtent(ctrl->GetValue())).x;
const int current = ctrl->GetSize().x;
const int maxwidth = ctrl->GetParent()->GetSize().x - ctrl->GetPosition().x;
// Adjust size so that it fits all content. Don't change anything if the
// allocated space is already larger than needed and don't extend wxDVC's
// boundaries.
int width = wxMin(wxMax(current, fitting), maxwidth);
if ( width != current )
ctrl->SetSize(wxSize(width, -1));
// select the text in the control an place the cursor at the end
ctrl->SetInsertionPointEnd();
ctrl->SelectAll();
return ctrl;
}
} // anonymous namespace
//-----------------------------------------------------------------------------
@ -229,6 +257,8 @@ protected:
}
private:
void FinishEditing();
bool SendEvent(wxEventType type, unsigned int n)
{
wxDataViewCtrl * const owner = GetOwner();
@ -246,6 +276,8 @@ private:
void OnClick(wxHeaderCtrlEvent& event)
{
FinishEditing();
const unsigned idx = event.GetColumn();
if ( SendEvent(wxEVT_DATAVIEW_COLUMN_HEADER_CLICK, idx) )
@ -290,6 +322,8 @@ private:
void OnResize(wxHeaderCtrlEvent& event)
{
FinishEditing();
wxDataViewCtrl * const owner = GetOwner();
const unsigned col = event.GetColumn();
@ -299,6 +333,8 @@ private:
void OnEndReorder(wxHeaderCtrlEvent& event)
{
FinishEditing();
wxDataViewCtrl * const owner = GetOwner();
owner->ColumnMoved(owner->GetColumn(event.GetColumn()),
event.GetNewOrder());
@ -766,9 +802,13 @@ public:
void OnColumnsCountChanged();
// Adjust last column to window size
void UpdateColumnSizes();
// Called by wxDataViewCtrl and our own OnRenameTimer() to start edit the
// specified item in the given column.
void StartEditing(const wxDataViewItem& item, const wxDataViewColumn* col);
void FinishEditing();
private:
int RecalculateCount() const;
@ -958,16 +998,7 @@ bool wxDataViewTextRenderer::HasEditorCtrl() const
wxWindow* wxDataViewTextRenderer::CreateEditorCtrl( wxWindow *parent,
wxRect labelRect, const wxVariant &value )
{
wxTextCtrl* ctrl = new wxTextCtrl( parent, wxID_ANY, value,
wxPoint(labelRect.x,labelRect.y),
wxSize(labelRect.width,labelRect.height),
wxTE_PROCESS_ENTER );
// select the text in the control an place the cursor at the end
ctrl->SetInsertionPointEnd();
ctrl->SelectAll();
return ctrl;
return CreateEditorTextCtrl(parent, labelRect, value);
}
bool wxDataViewTextRenderer::GetValueFromEditorCtrl( wxWindow *editor, wxVariant &value )
@ -1167,7 +1198,11 @@ wxDataViewProgressRenderer::Render(wxRect rect, wxDC *dc, int WXUNUSED(state))
wxSize wxDataViewProgressRenderer::GetSize() const
{
return wxSize(40,12);
// Return -1 width because a progress bar fits any width; unlike most
// renderers, it doesn't have a "good" width for the content. This makes it
// grow to the whole column, which is pretty much always the desired
// behaviour. Keep the height fixed so that the progress bar isn't too fat.
return wxSize(-1, 12);
}
// ---------------------------------------------------------
@ -1239,16 +1274,7 @@ wxWindow* wxDataViewIconTextRenderer::CreateEditorCtrl(wxWindow *parent, wxRect
labelRect.width -= w;
}
wxTextCtrl* ctrl = new wxTextCtrl( parent, wxID_ANY, text,
wxPoint(labelRect.x,labelRect.y),
wxSize(labelRect.width,labelRect.height),
wxTE_PROCESS_ENTER );
// select the text in the control an place the cursor at the end
ctrl->SetInsertionPointEnd();
ctrl->SelectAll();
return ctrl;
return CreateEditorTextCtrl(parent, labelRect, text);
}
bool wxDataViewIconTextRenderer::GetValueFromEditorCtrl( wxWindow *editor, wxVariant& value )
@ -2194,6 +2220,20 @@ wxDataViewMainWindow::StartEditing(const wxDataViewItem& item,
}
}
void wxDataViewMainWindow::FinishEditing()
{
if ( m_editorCtrl )
{
m_editorRenderer->FinishEditing();
}
}
void wxDataViewHeaderWindow::FinishEditing()
{
wxDataViewMainWindow *win = static_cast<wxDataViewMainWindow*>(GetOwner()->GetMainWindow());
win->FinishEditing();
}
//-----------------------------------------------------------------------------
// Helper class for do operation on the tree node
//-----------------------------------------------------------------------------
@ -2489,18 +2529,8 @@ bool wxDataViewMainWindow::ItemChanged(const wxDataViewItem & item)
bool wxDataViewMainWindow::ValueChanged( const wxDataViewItem & item, unsigned int model_column )
{
int view_column = -1;
unsigned int n_col = m_owner->GetColumnCount();
for (unsigned i = 0; i < n_col; i++)
{
wxDataViewColumn *column = m_owner->GetColumn( i );
if (column->GetModelColumn() == model_column)
{
view_column = (int) i;
break;
}
}
if (view_column == -1)
int view_column = m_owner->GetModelColumnIndex(model_column);
if ( view_column == wxNOT_FOUND )
return false;
// NOTE: to be valid, we cannot use e.g. INT_MAX - 1
@ -2564,6 +2594,7 @@ void wxDataViewMainWindow::OnInternalIdle()
if (m_dirty)
{
UpdateColumnSizes();
RecalculateDisplay();
m_dirty = false;
}
@ -4389,9 +4420,7 @@ void wxDataViewMainWindow::OnMouse( wxMouseEvent &event )
// see #12270.
// adjust the rectangle ourselves to account for the alignment
int align = cell->GetAlignment();
if ( align == wxDVR_DEFAULT_ALIGNMENT )
align = wxALIGN_CENTRE;
const int align = cell->GetEffectiveAlignment();
wxRect rectItem = cell_rect;
const wxSize size = cell->GetSize();
@ -4464,11 +4493,44 @@ void wxDataViewMainWindow::OnColumnsCountChanged()
editableCount++;
}
m_useCellFocus = (editableCount > 1);
m_useCellFocus = (editableCount > 0);
UpdateDisplay();
}
void wxDataViewMainWindow::UpdateColumnSizes()
{
int colsCount = GetOwner()->GetColumnCount();
if ( !colsCount )
return;
wxDataViewCtrl *owner = GetOwner();
int fullWinWidth = GetSize().x;
wxDataViewColumn *lastCol = owner->GetColumn(colsCount - 1);
int colswidth = GetEndOfLastCol();
int lastColX = colswidth - lastCol->GetWidth();
if ( lastColX < fullWinWidth )
{
int desiredWidth = wxMax(fullWinWidth - lastColX, lastCol->GetMinWidth());
lastCol->SetWidth(desiredWidth);
// All columns fit on screen, so we don't need horizontal scrolling.
// To prevent flickering scrollbar when resizing the window to be
// narrower, force-set the virtual width to 0 here. It will eventually
// be corrected at idle time.
SetVirtualSize(0, m_virtualSize.y);
RefreshRect(wxRect(lastColX, 0, fullWinWidth - lastColX, GetSize().y));
}
else
{
// else: don't bother, the columns won't fit anyway
SetVirtualSize(colswidth, m_virtualSize.y);
}
}
//-----------------------------------------------------------------------------
// wxDataViewCtrl
//-----------------------------------------------------------------------------
@ -4584,6 +4646,9 @@ wxSize wxDataViewCtrl::GetSizeAvailableForScrollTarget(const wxSize& size)
void wxDataViewCtrl::OnSize( wxSizeEvent &WXUNUSED(event) )
{
if ( m_clientArea && GetColumnCount() )
m_clientArea->UpdateColumnSizes();
// We need to override OnSize so that our scrolled
// window a) does call Layout() to use sizers for
// positioning the controls but b) does not query
@ -4730,6 +4795,14 @@ void wxDataViewCtrl::OnColumnsCountChanged()
void wxDataViewCtrl::DoSetExpanderColumn()
{
wxDataViewColumn* column = GetExpanderColumn();
if ( column )
{
int index = GetColumnIndex(column);
if ( index != wxNOT_FOUND )
InvalidateColBestWidth(index);
}
m_clientArea->UpdateDisplay();
}
@ -4780,6 +4853,18 @@ int wxDataViewCtrl::GetColumnIndex(const wxDataViewColumn *column) const
return wxNOT_FOUND;
}
int wxDataViewCtrl::GetModelColumnIndex( unsigned int model_column ) const
{
const int count = GetColumnCount();
for ( int index = 0; index < count; index++ )
{
wxDataViewColumn* column = GetColumn(index);
if ( column->GetModelColumn() == model_column )
return index;
}
return wxNOT_FOUND;
}
unsigned int wxDataViewCtrl::GetBestColumnWidth(int idx) const
{
if ( m_colsBestWidths[idx].width != 0 )
@ -4797,21 +4882,23 @@ unsigned int wxDataViewCtrl::GetBestColumnWidth(int idx) const
wxDataViewMainWindow *clientArea,
wxDataViewRenderer *renderer,
const wxDataViewModel *model,
unsigned column,
unsigned int model_column,
int expanderSize)
: m_width(0),
m_dvc(dvc),
m_clientArea(clientArea),
m_renderer(renderer),
m_model(model),
m_column(column),
m_model_column(model_column),
m_expanderSize(expanderSize)
{
int index = dvc->GetModelColumnIndex( model_column );
wxDataViewColumn* column = index == wxNOT_FOUND ? NULL : dvc->GetColumn(index);
m_isExpanderCol =
!clientArea->IsList() &&
(column == 0 ||
GetExpanderColumnOrFirstOne(const_cast<wxDataViewCtrl*>(dvc)) == dvc->GetColumnAt(column));
GetExpanderColumnOrFirstOne(const_cast<wxDataViewCtrl*>(dvc)) == column );
}
void UpdateWithWidth(int width)
@ -4835,7 +4922,7 @@ unsigned int wxDataViewCtrl::GetBestColumnWidth(int idx) const
item = m_clientArea->GetItemByRow(row);
}
m_renderer->PrepareForItem(m_model, item, m_column);
m_renderer->PrepareForItem(m_model, item, m_model_column);
m_width = wxMax(m_width, m_renderer->GetSize().x + indent);
}
@ -4847,7 +4934,7 @@ unsigned int wxDataViewCtrl::GetBestColumnWidth(int idx) const
wxDataViewMainWindow *m_clientArea;
wxDataViewRenderer *m_renderer;
const wxDataViewModel *m_model;
unsigned m_column;
unsigned m_model_column;
bool m_isExpanderCol;
int m_expanderSize;
};

View File

@ -378,10 +378,10 @@ void wxEditableListBox::SwapItems(long i1, long i2)
m_listCtrl->SetItemText(i2, t1);
// swap the item data
long d1 = m_listCtrl->GetItemData(i1);
long d2 = m_listCtrl->GetItemData(i2);
m_listCtrl->SetItemData(i1, d2);
m_listCtrl->SetItemData(i2, d1);
wxUIntPtr d1 = m_listCtrl->GetItemData(i1);
wxUIntPtr d2 = m_listCtrl->GetItemData(i2);
m_listCtrl->SetItemPtrData(i1, d2);
m_listCtrl->SetItemPtrData(i2, d1);
}

View File

@ -69,9 +69,7 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid)
return false;
// use special, easy to notice, colours
const wxColour colBg = wxSystemSettings::GetColour(wxSYS_COLOUR_INFOBK);
SetBackgroundColour(colBg);
SetOwnForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOTEXT));
SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOBK));
// create the controls: icon, text and the button to dismiss the
// message.
@ -80,6 +78,7 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid)
m_icon = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap);
m_text = new wxStaticText(this, wxID_ANY, "");
m_text->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_INFOTEXT));
m_button = wxBitmapButton::NewCloseButton(this, wxID_ANY);
m_button->SetToolTip(_("Hide this notification message."));
@ -111,6 +110,17 @@ bool wxInfoBarGeneric::SetFont(const wxFont& font)
return true;
}
bool wxInfoBarGeneric::SetForegroundColour(const wxColor& colour)
{
if ( !wxInfoBarBase::SetForegroundColour(colour) )
return false;
if ( m_text )
m_text->SetForegroundColour(colour);
return true;
}
wxInfoBarGeneric::BarPlacement wxInfoBarGeneric::GetBarPlacement() const
{
wxSizer * const sizer = GetContainingSizer();

View File

@ -3496,6 +3496,12 @@ size_t wxListMainWindow::GetItemCount() const
void wxListMainWindow::SetItemCount(long count)
{
// Update the current item if it's not valid any longer (notice that this
// invalidates it completely if the control is becoming empty, which is the
// right thing to do).
if ( HasCurrent() && m_current >= (size_t)count )
ChangeCurrent(count - 1);
m_selStore.SetItemCount(count);
m_countVirt = count;
@ -5191,6 +5197,9 @@ void wxGenericListCtrl::OnInternalIdle()
bool wxGenericListCtrl::SetBackgroundColour( const wxColour &colour )
{
if ( !wxWindow::SetBackgroundColour( colour ) )
return false;
if (m_mainWin)
{
m_mainWin->SetBackgroundColour( colour );
@ -5211,9 +5220,6 @@ bool wxGenericListCtrl::SetForegroundColour( const wxColour &colour )
m_mainWin->m_dirty = true;
}
if (m_headerWin)
m_headerWin->SetForegroundColour( colour );
return true;
}

View File

@ -63,11 +63,6 @@
#ifndef __WXUNIVERSAL__
#if wxUSE_LIBGNOMEPRINT
#include "wx/link.h"
wxFORCE_LINK_MODULE(gnome_print)
#endif
#if wxUSE_GTKPRINT
#include "wx/link.h"
wxFORCE_LINK_MODULE(gtk_print)

View File

@ -214,9 +214,6 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event)
return true;
}
if ( processed && event.IsCommandEvent())
return true;
// For wxEVT_PAINT the user code can either handle this event as usual or
// override virtual OnDraw(), so if the event hasn't been handled we need
// to call this virtual function ourselves.
@ -235,6 +232,11 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event)
return true;
}
// If the user code handled this event, it should prevent the default
// handling from taking place, so don't do anything else in this case.
if ( processed )
return true;
if ( evType == wxEVT_CHILD_FOCUS )
{
m_scrollHelper->HandleOnChildFocus((wxChildFocusEvent &)event);

View File

@ -716,8 +716,6 @@ void wxTreeListModel::DeleteItem(Node* item)
Node* const parent = item->GetParent();
ItemDeleted(ToDVI(parent), ToDVI(item));
Node* previous = parent->GetChild();
if ( previous == item )
{
@ -739,6 +737,8 @@ void wxTreeListModel::DeleteItem(Node* item)
previous->DeleteNext();
}
ItemDeleted(ToDVI(parent), ToDVI(item));
}
void wxTreeListModel::DeleteAllItems()

View File

@ -89,9 +89,6 @@ bool wxVarScrollHelperEvtHandler::ProcessEvent(wxEvent& event)
return true;
}
if ( processed && event.IsCommandEvent())
return true;
// For wxEVT_PAINT the user code can either handle this event as usual or
// override virtual OnDraw(), so if the event hasn't been handled we need
// to call this virtual function ourselves.
@ -110,6 +107,11 @@ bool wxVarScrollHelperEvtHandler::ProcessEvent(wxEvent& event)
return true;
}
// If the user code handled this event, it should prevent the default
// handling from taking place, so don't do anything else in this case.
if ( processed )
return true;
// reset the skipped flag (which might have been set to true in
// ProcessEvent() above) to be able to test it below
bool wasSkipped = event.GetSkipped();
@ -142,6 +144,7 @@ bool wxVarScrollHelperEvtHandler::ProcessEvent(wxEvent& event)
else if ( evType == wxEVT_MOUSEWHEEL )
{
m_scrollHelper->HandleOnMouseWheel((wxMouseEvent &)event);
return true;
}
#endif
#endif // wxUSE_MOUSEWHEEL

Some files were not shown because too many files have changed in this diff Show More