Corrected wxWindow::GetExtent
s econd attempt at accelerators (mdi sample works) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@666 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -130,6 +130,7 @@ class wxBitmap: public wxObject
|
|||||||
friend wxFrame;
|
friend wxFrame;
|
||||||
friend wxDialog;
|
friend wxDialog;
|
||||||
friend wxTreeCtrl;
|
friend wxTreeCtrl;
|
||||||
|
friend wxNotebook;
|
||||||
|
|
||||||
GdkPixmap *GetPixmap() const;
|
GdkPixmap *GetPixmap() const;
|
||||||
GdkBitmap *GetBitmap() const;
|
GdkBitmap *GetBitmap() const;
|
||||||
|
@@ -130,6 +130,7 @@ class wxBitmap: public wxObject
|
|||||||
friend wxFrame;
|
friend wxFrame;
|
||||||
friend wxDialog;
|
friend wxDialog;
|
||||||
friend wxTreeCtrl;
|
friend wxTreeCtrl;
|
||||||
|
friend wxNotebook;
|
||||||
|
|
||||||
GdkPixmap *GetPixmap() const;
|
GdkPixmap *GetPixmap() const;
|
||||||
GdkBitmap *GetBitmap() const;
|
GdkBitmap *GetBitmap() const;
|
||||||
|
@@ -109,7 +109,6 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
|
|||||||
CreateToolBar(wxNO_BORDER|wxTB_FLAT|wxTB_HORIZONTAL);
|
CreateToolBar(wxNO_BORDER|wxTB_FLAT|wxTB_HORIZONTAL);
|
||||||
InitToolBar(GetToolBar());
|
InitToolBar(GetToolBar());
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
|
||||||
// Accelerators
|
// Accelerators
|
||||||
wxAcceleratorEntry entries[3];
|
wxAcceleratorEntry entries[3];
|
||||||
entries[0].Set(wxACCEL_CTRL, (int) 'N', MDI_NEW_WINDOW);
|
entries[0].Set(wxACCEL_CTRL, (int) 'N', MDI_NEW_WINDOW);
|
||||||
@@ -117,7 +116,6 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
|
|||||||
entries[2].Set(wxACCEL_CTRL, (int) 'A', MDI_ABOUT);
|
entries[2].Set(wxACCEL_CTRL, (int) 'A', MDI_ABOUT);
|
||||||
wxAcceleratorTable accel(3, entries);
|
wxAcceleratorTable accel(3, entries);
|
||||||
SetAcceleratorTable(accel);
|
SetAcceleratorTable(accel);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) )
|
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) )
|
||||||
|
@@ -33,6 +33,7 @@ LIB_CPP_SRC=\
|
|||||||
common/memory.cpp \
|
common/memory.cpp \
|
||||||
common/module.cpp \
|
common/module.cpp \
|
||||||
common/object.cpp \
|
common/object.cpp \
|
||||||
|
common/odbc.cpp \
|
||||||
common/postscrp.cpp \
|
common/postscrp.cpp \
|
||||||
common/prntbase.cpp \
|
common/prntbase.cpp \
|
||||||
common/resource.cpp \
|
common/resource.cpp \
|
||||||
|
@@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
#include "wx/accel.h"
|
#include "wx/accel.h"
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxAcceleratorTable
|
// wxAcceleratorTable
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -22,13 +24,24 @@ class wxAccelRefData: public wxObjectRefData
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
wxAccelRefData(void);
|
wxAccelRefData(void);
|
||||||
|
~wxAccelRefData(void);
|
||||||
|
|
||||||
wxList m_accels;
|
wxList m_accels;
|
||||||
};
|
};
|
||||||
|
|
||||||
wxAccelRefData::wxAccelRefData(void)
|
wxAccelRefData::wxAccelRefData(void)
|
||||||
{
|
{
|
||||||
m_accels.DeleteContents( TRUE );
|
}
|
||||||
|
|
||||||
|
wxAccelRefData::~wxAccelRefData(void)
|
||||||
|
{
|
||||||
|
wxNode *node = m_accels.First();
|
||||||
|
while (node)
|
||||||
|
{
|
||||||
|
wxAcceleratorEntry *entry = (wxAcceleratorEntry *)node->Data();
|
||||||
|
delete entry;
|
||||||
|
node = node->Next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -47,8 +60,11 @@ wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
|
|||||||
m_refData = new wxAccelRefData();
|
m_refData = new wxAccelRefData();
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
M_ACCELDATA->m_accels.Append( (wxObject*)
|
int flag = entries[i].GetFlags();
|
||||||
new wxAcceleratorEntry( entries[n].GetFlags(), entries[n].GetKeyCode(), entries[n].GetCommand() ) );
|
int keycode = entries[i].GetKeyCode();
|
||||||
|
int command = entries[i].GetCommand();
|
||||||
|
if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode );
|
||||||
|
M_ACCELDATA->m_accels.Append( (wxObject*) new wxAcceleratorEntry( flag, keycode, command ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -193,11 +193,17 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
|
|||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
{
|
{
|
||||||
int command = win->GetAcceleratorTable()->GetCommand( event );
|
wxWindow *ancestor = win;
|
||||||
|
while (ancestor)
|
||||||
|
{
|
||||||
|
int command = ancestor->GetAcceleratorTable()->GetCommand( event );
|
||||||
if (command != -1)
|
if (command != -1)
|
||||||
{
|
{
|
||||||
wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
|
wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
|
||||||
ret = win->GetEventHandler()->ProcessEvent( command_event );
|
ret = ancestor->GetEventHandler()->ProcessEvent( command_event );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ancestor = ancestor->GetParent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1404,7 +1410,7 @@ void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
|
|||||||
if (theFont) fontToUse = *theFont;
|
if (theFont) fontToUse = *theFont;
|
||||||
|
|
||||||
GdkFont *font = fontToUse.GetInternalFont( 1.0 );
|
GdkFont *font = fontToUse.GetInternalFont( 1.0 );
|
||||||
if (x) (*y) = gdk_string_width( font, string );
|
if (x) (*x) = gdk_string_width( font, string );
|
||||||
if (y) (*y) = font->ascent + font->descent;
|
if (y) (*y) = font->ascent + font->descent;
|
||||||
if (descent) (*descent) = font->descent;
|
if (descent) (*descent) = font->descent;
|
||||||
if (externalLeading) (*externalLeading) = 0; // ??
|
if (externalLeading) (*externalLeading) = 0; // ??
|
||||||
|
@@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
#include "wx/accel.h"
|
#include "wx/accel.h"
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxAcceleratorTable
|
// wxAcceleratorTable
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -22,13 +24,24 @@ class wxAccelRefData: public wxObjectRefData
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
wxAccelRefData(void);
|
wxAccelRefData(void);
|
||||||
|
~wxAccelRefData(void);
|
||||||
|
|
||||||
wxList m_accels;
|
wxList m_accels;
|
||||||
};
|
};
|
||||||
|
|
||||||
wxAccelRefData::wxAccelRefData(void)
|
wxAccelRefData::wxAccelRefData(void)
|
||||||
{
|
{
|
||||||
m_accels.DeleteContents( TRUE );
|
}
|
||||||
|
|
||||||
|
wxAccelRefData::~wxAccelRefData(void)
|
||||||
|
{
|
||||||
|
wxNode *node = m_accels.First();
|
||||||
|
while (node)
|
||||||
|
{
|
||||||
|
wxAcceleratorEntry *entry = (wxAcceleratorEntry *)node->Data();
|
||||||
|
delete entry;
|
||||||
|
node = node->Next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -47,8 +60,11 @@ wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
|
|||||||
m_refData = new wxAccelRefData();
|
m_refData = new wxAccelRefData();
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
M_ACCELDATA->m_accels.Append( (wxObject*)
|
int flag = entries[i].GetFlags();
|
||||||
new wxAcceleratorEntry( entries[n].GetFlags(), entries[n].GetKeyCode(), entries[n].GetCommand() ) );
|
int keycode = entries[i].GetKeyCode();
|
||||||
|
int command = entries[i].GetCommand();
|
||||||
|
if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode );
|
||||||
|
M_ACCELDATA->m_accels.Append( (wxObject*) new wxAcceleratorEntry( flag, keycode, command ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -193,11 +193,17 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
|
|||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
{
|
{
|
||||||
int command = win->GetAcceleratorTable()->GetCommand( event );
|
wxWindow *ancestor = win;
|
||||||
|
while (ancestor)
|
||||||
|
{
|
||||||
|
int command = ancestor->GetAcceleratorTable()->GetCommand( event );
|
||||||
if (command != -1)
|
if (command != -1)
|
||||||
{
|
{
|
||||||
wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
|
wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
|
||||||
ret = win->GetEventHandler()->ProcessEvent( command_event );
|
ret = ancestor->GetEventHandler()->ProcessEvent( command_event );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ancestor = ancestor->GetParent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1404,7 +1410,7 @@ void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
|
|||||||
if (theFont) fontToUse = *theFont;
|
if (theFont) fontToUse = *theFont;
|
||||||
|
|
||||||
GdkFont *font = fontToUse.GetInternalFont( 1.0 );
|
GdkFont *font = fontToUse.GetInternalFont( 1.0 );
|
||||||
if (x) (*y) = gdk_string_width( font, string );
|
if (x) (*x) = gdk_string_width( font, string );
|
||||||
if (y) (*y) = font->ascent + font->descent;
|
if (y) (*y) = font->ascent + font->descent;
|
||||||
if (descent) (*descent) = font->descent;
|
if (descent) (*descent) = font->descent;
|
||||||
if (externalLeading) (*externalLeading) = 0; // ??
|
if (externalLeading) (*externalLeading) = 0; // ??
|
||||||
|
Reference in New Issue
Block a user