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:
@@ -24,7 +24,7 @@ class WXDLLEXPORT wxAcceleratorTable : public wxObject
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// default ctor
|
// default ctor
|
||||||
wxAcceleratorTable();
|
wxAcceleratorTable() : wxObject() { }
|
||||||
|
|
||||||
// copy ctor
|
// copy ctor
|
||||||
wxAcceleratorTable(const wxAcceleratorTable& accel) : wxObject(accel) { Ref(accel); }
|
wxAcceleratorTable(const wxAcceleratorTable& accel) : wxObject(accel) { Ref(accel); }
|
||||||
@@ -35,17 +35,16 @@ public:
|
|||||||
// initialize from array
|
// initialize from array
|
||||||
wxAcceleratorTable(int n, const wxAcceleratorEntry entries[]);
|
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; }
|
bool operator==(const wxAcceleratorTable& accel) const;
|
||||||
|
|
||||||
// #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); }
|
{ return !(*this == accel); }
|
||||||
// #endif
|
|
||||||
|
|
||||||
bool Ok() const;
|
bool Ok() const;
|
||||||
void SetHACCEL(WXHACCEL hAccel);
|
void SetHACCEL(WXHACCEL hAccel);
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Name: accel.cpp
|
// Name: msw/accel.cpp
|
||||||
// Purpose: wxAcceleratorTable
|
// Purpose: wxAcceleratorTable
|
||||||
// Author: Julian Smart
|
// Author: Julian Smart
|
||||||
// Modified by:
|
// Modified by:
|
||||||
@@ -9,29 +9,43 @@
|
|||||||
// Licence: wxWindows licence
|
// Licence: wxWindows licence
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// declarations
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
|
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
|
||||||
#pragma implementation "accel.h"
|
#pragma implementation "accel.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// headers
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
// For compilers that support precompilation, includes "wx.h".
|
// For compilers that support precompilation, includes "wx.h".
|
||||||
#include "wx/wxprec.h"
|
#include "wx/wxprec.h"
|
||||||
|
|
||||||
#ifdef __BORLANDC__
|
#ifdef __BORLANDC__
|
||||||
#pragma hdrstop
|
#pragma hdrstop
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if wxUSE_ACCEL
|
||||||
|
|
||||||
#ifndef WX_PRECOMP
|
#ifndef WX_PRECOMP
|
||||||
#include "wx/window.h"
|
#include "wx/window.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/accel.h"
|
#include "wx/accel.h"
|
||||||
|
|
||||||
#if wxUSE_ACCEL
|
|
||||||
|
|
||||||
#include "wx/msw/private.h"
|
#include "wx/msw/private.h"
|
||||||
|
|
||||||
|
extern WXWORD wxCharCodeWXToMSW(int id, bool *isVirtual);
|
||||||
|
|
||||||
IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject)
|
IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable, wxObject)
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// data defining wxAcceleratorTable
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData
|
class WXDLLEXPORT wxAcceleratorRefData: public wxObjectRefData
|
||||||
{
|
{
|
||||||
friend class WXDLLEXPORT wxAcceleratorTable;
|
friend class WXDLLEXPORT wxAcceleratorTable;
|
||||||
@@ -47,53 +61,44 @@ protected:
|
|||||||
DECLARE_NO_COPY_CLASS(wxAcceleratorRefData)
|
DECLARE_NO_COPY_CLASS(wxAcceleratorRefData)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// ============================================================================
|
||||||
|
// implementation
|
||||||
|
// ============================================================================
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// wxAcceleratorRefData
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData)
|
#define M_ACCELDATA ((wxAcceleratorRefData *)m_refData)
|
||||||
|
|
||||||
wxAcceleratorRefData::wxAcceleratorRefData()
|
wxAcceleratorRefData::wxAcceleratorRefData()
|
||||||
{
|
{
|
||||||
m_ok = false;
|
m_ok = false;
|
||||||
m_hAccel = 0;
|
m_hAccel = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxAcceleratorRefData::~wxAcceleratorRefData()
|
wxAcceleratorRefData::~wxAcceleratorRefData()
|
||||||
{
|
{
|
||||||
if (m_hAccel)
|
if (m_hAccel)
|
||||||
{
|
{
|
||||||
DestroyAcceleratorTable((HACCEL) m_hAccel);
|
DestroyAcceleratorTable((HACCEL) m_hAccel);
|
||||||
}
|
}
|
||||||
m_hAccel = 0 ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxAcceleratorTable::wxAcceleratorTable()
|
// ----------------------------------------------------------------------------
|
||||||
{
|
// wxAcceleratorTable
|
||||||
m_refData = NULL;
|
// ----------------------------------------------------------------------------
|
||||||
}
|
|
||||||
|
|
||||||
wxAcceleratorTable::~wxAcceleratorTable()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load from .rc resource
|
// Load from .rc resource
|
||||||
wxAcceleratorTable::wxAcceleratorTable(const wxString& resource)
|
wxAcceleratorTable::wxAcceleratorTable(const wxString& resource)
|
||||||
{
|
{
|
||||||
m_refData = new wxAcceleratorRefData;
|
m_refData = new wxAcceleratorRefData;
|
||||||
|
|
||||||
HACCEL hAccel =
|
HACCEL hAccel = ::LoadAccelerators(wxGetInstance(), resource);
|
||||||
#if defined(__WIN32__)
|
|
||||||
#ifdef UNICODE
|
|
||||||
::LoadAcceleratorsW(wxGetInstance(), (const wxChar *)resource);
|
|
||||||
#else
|
|
||||||
::LoadAcceleratorsA(wxGetInstance(), (const char *)resource);
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
::LoadAccelerators(wxGetInstance(), (const wxChar *)resource);
|
|
||||||
#endif
|
|
||||||
M_ACCELDATA->m_hAccel = hAccel;
|
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
|
// Create from an array
|
||||||
wxAcceleratorTable::wxAcceleratorTable(int n, const wxAcceleratorEntry entries[])
|
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);
|
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
|
bool wxAcceleratorTable::Ok() const
|
||||||
{
|
{
|
||||||
return (M_ACCELDATA && (M_ACCELDATA->m_ok));
|
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);
|
return Ok() && ::TranslateAccelerator(GetHwndOf(window), GetHaccel(), msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif // wxUSE_ACCEL
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user