Accelerators implemented for wxMotif; some wxComboBox stupidities cured
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@995 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
|
||||
#include "wx/object.h"
|
||||
#include "wx/string.h"
|
||||
#include "wx/event.h"
|
||||
|
||||
class WXDLLEXPORT wxAcceleratorTable;
|
||||
|
||||
@@ -31,11 +32,15 @@ class WXDLLEXPORT wxAcceleratorTable;
|
||||
#define wxACCEL_SHIFT 0x04
|
||||
|
||||
// Hold no key down
|
||||
#define wxACCEL_NONE 0x00
|
||||
#define wxACCEL_NORMAL 0x00
|
||||
|
||||
class WXDLLEXPORT wxAcceleratorEntry
|
||||
{
|
||||
public:
|
||||
wxAcceleratorEntry(const wxAcceleratorEntry& entry)
|
||||
{
|
||||
m_flags = entry.m_flags; m_keyCode = entry.m_keyCode; m_command = entry.m_command;
|
||||
}
|
||||
wxAcceleratorEntry(int flags = 0, int keyCode = 0, int cmd = 0)
|
||||
{
|
||||
m_flags = flags; m_keyCode = keyCode; m_command = cmd;
|
||||
@@ -48,6 +53,15 @@ public:
|
||||
inline int GetKeyCode() const { return m_keyCode; }
|
||||
inline int GetCommand() const { return m_command; }
|
||||
|
||||
void operator = (const wxAcceleratorEntry& entry)
|
||||
{
|
||||
m_flags = entry.m_flags; m_keyCode = entry.m_keyCode; m_command = entry.m_command;
|
||||
}
|
||||
|
||||
// Implementation use only
|
||||
bool MatchesEvent(const wxKeyEvent& event) const;
|
||||
|
||||
public:
|
||||
int m_flags;
|
||||
int m_keyCode; // ASCII or virtual keycode
|
||||
int m_command; // Command id to generate
|
||||
@@ -72,6 +86,10 @@ public:
|
||||
inline bool operator != (const wxAcceleratorTable& accel) { return m_refData != accel.m_refData; }
|
||||
|
||||
bool Ok() const;
|
||||
|
||||
// Implementation only
|
||||
int GetCount() const;
|
||||
wxAcceleratorEntry* GetEntries() const;
|
||||
};
|
||||
|
||||
WXDLLEXPORT_DATA(extern wxAcceleratorTable) wxNullAcceleratorTable;
|
||||
|
@@ -107,6 +107,14 @@ class WXDLLEXPORT wxApp: public wxEvtHandler
|
||||
// Creates a log object
|
||||
virtual wxLog* CreateLogTarget();
|
||||
|
||||
// Motif implementation.
|
||||
|
||||
// Processes an X event.
|
||||
virtual void ProcessXEvent(WXEvent* event);
|
||||
|
||||
// Returns TRUE if an accelerator has been processed
|
||||
virtual bool CheckForAccelerator(WXEvent* event);
|
||||
|
||||
public:
|
||||
// Will always be set to the appropriate, main-style values.
|
||||
int argc;
|
||||
|
@@ -28,6 +28,7 @@ class WXDLLEXPORT wxComboBox: public wxChoice
|
||||
|
||||
public:
|
||||
inline wxComboBox() {}
|
||||
~wxComboBox();
|
||||
|
||||
inline wxComboBox(wxWindow *parent, wxWindowID id,
|
||||
const wxString& value = wxEmptyString,
|
||||
@@ -50,8 +51,20 @@ class WXDLLEXPORT wxComboBox: public wxChoice
|
||||
const wxValidator& validator = wxDefaultValidator,
|
||||
const wxString& name = wxComboBoxNameStr);
|
||||
|
||||
// List functions: see wxChoice
|
||||
|
||||
virtual void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
|
||||
|
||||
// List functions
|
||||
virtual void Append(const wxString& item);
|
||||
virtual void Delete(int n);
|
||||
virtual void Clear();
|
||||
virtual int GetSelection() const ;
|
||||
virtual void SetSelection(int n);
|
||||
virtual int FindString(const wxString& s) const;
|
||||
virtual wxString GetString(int n) const ;
|
||||
virtual wxString GetStringSelection() const ;
|
||||
virtual bool SetStringSelection(const wxString& sel);
|
||||
virtual inline int Number() const { return m_noStrings; }
|
||||
|
||||
// Text field functions
|
||||
virtual wxString GetValue() const ;
|
||||
virtual void SetValue(const wxString& value);
|
||||
@@ -66,10 +79,6 @@ class WXDLLEXPORT wxComboBox: public wxChoice
|
||||
virtual long GetLastPosition() const ;
|
||||
virtual void Replace(long from, long to, const wxString& value);
|
||||
virtual void Remove(long from, long to);
|
||||
virtual void SetSelection(int n)
|
||||
{
|
||||
wxChoice::SetSelection(n);
|
||||
}
|
||||
virtual void SetSelection(long from, long to);
|
||||
virtual void SetEditable(bool editable);
|
||||
|
||||
@@ -77,6 +86,8 @@ class WXDLLEXPORT wxComboBox: public wxChoice
|
||||
virtual void ChangeFont(bool keepOriginalSize = TRUE);
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
WXWidget GetTopWidget() const { return m_mainWidget; }
|
||||
WXWidget GetMainWidget() const { return m_mainWidget; }
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -66,7 +66,7 @@ protected:
|
||||
int m_viewSize;
|
||||
int m_objectSize;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
// DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@@ -539,6 +539,20 @@ public:
|
||||
// Generates a paint event
|
||||
virtual void DoPaint();
|
||||
|
||||
// How to implement accelerators. If we find a key event,
|
||||
// translate to wxWindows wxKeyEvent form. Find a widget for the window.
|
||||
// Now find a wxWindow for the widget. If there isn't one, go up the widget hierarchy
|
||||
// trying to find one. Once one is found, call ProcessAccelerator for the
|
||||
// window. If it returns TRUE (processed the event), skip the X event,
|
||||
// otherwise carry on up the wxWindows window hierarchy calling ProcessAccelerator.
|
||||
// If all return FALSE, process the X event as normal.
|
||||
// Eventually we can implement OnCharHook the same way, but concentrate on accelerators
|
||||
// for now.
|
||||
// ProcessAccelerator must look at the current accelerator table, and try to find
|
||||
// what menu id or window (beneath it) has this ID. Then construct an appropriate command
|
||||
// event and send it.
|
||||
virtual bool ProcessAccelerator(wxKeyEvent& event);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
//// PROTECTED DATA
|
||||
protected:
|
||||
|
Reference in New Issue
Block a user