really implemented operator==(); reformatted a little

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30923 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-12-10 11:23:16 +00:00
parent de4b00500f
commit a21d4ad106
2 changed files with 58 additions and 43 deletions

View File

@@ -24,7 +24,7 @@ class WXDLLEXPORT wxAcceleratorTable : public wxObject
{
public:
// default ctor
wxAcceleratorTable();
wxAcceleratorTable() : wxObject() { }
// copy ctor
wxAcceleratorTable(const wxAcceleratorTable& accel) : wxObject(accel) { Ref(accel); }
@@ -35,17 +35,16 @@ public:
// initialize from array
wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]);
virtual ~wxAcceleratorTable();
wxAcceleratorTable& operator=(const wxAcceleratorTable& accel)
{
if ( *this != accel )
Ref(accel);
return *this;
}
wxAcceleratorTable& operator = (const wxAcceleratorTable& accel) { if ( *this != accel ) Ref(accel); return *this; }
// #if WXWIN_COMPATIBILITY_2_4
// fixme: it is still used in 'operator =' above
bool operator==(const wxAcceleratorTable& accel) const
{ return m_refData == accel.m_refData; }
bool operator==(const wxAcceleratorTable& accel) const;
bool operator!=(const wxAcceleratorTable& accel) const
{ return !(*this == accel); }
// #endif
bool Ok() const;
void SetHACCEL(WXHACCEL hAccel);

View File

@@ -1,5 +1,5 @@
/////////////////////////////////////////////////////////////////////////////
// Name: accel.cpp
// Name: msw/accel.cpp
// Purpose: wxAcceleratorTable
// Author: Julian Smart
// Modified by:
@@ -9,10 +9,18 @@
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "accel.h"
#endif
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
@@ -20,18 +28,24 @@
#pragma hdrstop
#endif
#if wxUSE_ACCEL
#ifndef WX_PRECOMP
#include "wx/window.h"
#endif
#include "wx/accel.h"
#if wxUSE_ACCEL
#include "wx/msw/private.h"
extern WXWORD wxCharCodeWXToMSW(int id, bool *isVirtual);
IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject)
// ----------------------------------------------------------------------------
// data defining wxAcceleratorTable
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData
{
friend class WXDLLEXPORT wxAcceleratorTable;
@@ -47,6 +61,14 @@ protected:
DECLARE_NO_COPY_CLASS(wxAcceleratorRefData)
};
// ============================================================================
// implementation
// ============================================================================
// ----------------------------------------------------------------------------
// wxAcceleratorRefData
// ----------------------------------------------------------------------------
#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData)
wxAcceleratorRefData::wxAcceleratorRefData()
@@ -61,39 +83,22 @@ wxAcceleratorRefData::~wxAcceleratorRefData()
{
DestroyAcceleratorTable((HACCEL) m_hAccel);
}
m_hAccel = 0 ;
}
wxAcceleratorTable::wxAcceleratorTable()
{
m_refData = NULL;
}
wxAcceleratorTable::~wxAcceleratorTable()
{
}
// ----------------------------------------------------------------------------
// wxAcceleratorTable
// ----------------------------------------------------------------------------
// Load from .rc resource
wxAcceleratorTable::wxAcceleratorTable(const wxString& resource)
{
m_refData = new wxAcceleratorRefData;
HACCEL hAccel =
#if defined(__WIN32__)
#ifdef UNICODE
::LoadAcceleratorsW(wxGetInstance(), (const wxChar *)resource);
#else
::LoadAcceleratorsA(wxGetInstance(), (const char *)resource);
#endif
#else
::LoadAccelerators(wxGetInstance(), (const wxChar *)resource);
#endif
HACCEL hAccel = ::LoadAccelerators(wxGetInstance(), resource);
M_ACCELDATA->m_hAccel = hAccel;
M_ACCELDATA->m_ok = (hAccel != 0);
M_ACCELDATA->m_ok = hAccel != 0;
}
extern WXWORD wxCharCodeWXToMSW(int id, bool *isVirtual);
// Create from an array
wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[])
{
@@ -129,6 +134,16 @@ wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]
M_ACCELDATA->m_ok = (M_ACCELDATA->m_hAccel != 0);
}
bool wxAcceleratorTable::operator==(const wxAcceleratorTable& accel) const
{
const wxAcceleratorRefData *
accelData = (wxAcceleratorRefData *)accel.m_refData;
return m_refData ? (accelData &&
M_ACCELDATA->m_hAccel == accelData->m_hAccel)
: !accelData;
}
bool wxAcceleratorTable::Ok() const
{
return (M_ACCELDATA && (M_ACCELDATA->m_ok));
@@ -155,4 +170,5 @@ bool wxAcceleratorTable::Translate(wxWindow *window, WXMSG *wxmsg) const
return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg);
}
#endif
#endif // wxUSE_ACCEL