]> git.saurik.com Git - wxWidgets.git/commitdiff
Corrected wxWindow::GetExtent
authorRobert Roebling <robert@roebling.de>
Fri, 4 Sep 1998 12:43:41 +0000 (12:43 +0000)
committerRobert Roebling <robert@roebling.de>
Fri, 4 Sep 1998 12:43:41 +0000 (12:43 +0000)
 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

include/wx/gtk/bitmap.h
include/wx/gtk1/bitmap.h
samples/mdi/mdi.cpp
src/gtk.inc
src/gtk/accel.cpp
src/gtk/window.cpp
src/gtk1/accel.cpp
src/gtk1/window.cpp

index b14cb20955f203e7a94c510ed3345e43d1a77a59..61f2bb2708197f40f7bf7648d61be8b7285f9b29 100644 (file)
@@ -130,6 +130,7 @@ class wxBitmap: public wxObject
     friend wxFrame;
     friend wxDialog;
     friend wxTreeCtrl;
+    friend wxNotebook;
 
     GdkPixmap *GetPixmap() const;
     GdkBitmap *GetBitmap() const;
index b14cb20955f203e7a94c510ed3345e43d1a77a59..61f2bb2708197f40f7bf7648d61be8b7285f9b29 100644 (file)
@@ -130,6 +130,7 @@ class wxBitmap: public wxObject
     friend wxFrame;
     friend wxDialog;
     friend wxTreeCtrl;
+    friend wxNotebook;
 
     GdkPixmap *GetPixmap() const;
     GdkBitmap *GetBitmap() const;
index 94b4fc302bcd7a53ed135b60094d2bf651e5b91c..f94ac448f814275cf2ea4cb70c8bfe910d803e90 100644 (file)
@@ -109,7 +109,6 @@ MyFrame::MyFrame(wxWindow *parent, const wxWindowID id, const wxString& title, c
     CreateToolBar(wxNO_BORDER|wxTB_FLAT|wxTB_HORIZONTAL);
     InitToolBar(GetToolBar());
 
-#ifdef __WXMSW__
     // Accelerators
     wxAcceleratorEntry entries[3];
     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);
     wxAcceleratorTable accel(3, entries);
     SetAcceleratorTable(accel);
-#endif
 }
 
 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) )
index 26c2accec9afc00b8843679f311fbef57a81877c..76e934d2ce120c3bf188b5d8cc9424f7a343567b 100644 (file)
@@ -33,6 +33,7 @@ LIB_CPP_SRC=\
  common/memory.cpp \
  common/module.cpp \
  common/object.cpp \
+ common/odbc.cpp \
  common/postscrp.cpp \
  common/prntbase.cpp \
  common/resource.cpp \
index 08b5436b343b8ad0db31a129152b4843afc522b0..8288d870daf7ce76edbda683ff58fb4db614b290 100644 (file)
@@ -13,6 +13,8 @@
 
 #include "wx/accel.h"
 
+#include <ctype.h>
+
 //-----------------------------------------------------------------------------
 // wxAcceleratorTable
 //-----------------------------------------------------------------------------
@@ -22,13 +24,24 @@ class wxAccelRefData: public wxObjectRefData
   public:
   
     wxAccelRefData(void);
+    ~wxAccelRefData(void);
   
     wxList m_accels;
 };
 
 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();
   for (int i = 0; i < n; i++)
   {
-    M_ACCELDATA->m_accels.Append( (wxObject*)
-      new wxAcceleratorEntry( entries[n].GetFlags(), entries[n].GetKeyCode(), entries[n].GetCommand() ) );
+    int flag    = entries[i].GetFlags();
+    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 ) );
   }
 }
 
index dba832d7401ab926d1868399c771f75be0847672..2ca9ce464edd47da294df82bc60f6646f38796d0 100644 (file)
@@ -193,11 +193,17 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
   
   if (!ret)
   {
-    int command = win->GetAcceleratorTable()->GetCommand( event );
-    if (command != -1)
-    {
-      wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
-      ret = win->GetEventHandler()->ProcessEvent( command_event );
+    wxWindow *ancestor = win;
+    while (ancestor)
+    {    
+      int command = ancestor->GetAcceleratorTable()->GetCommand( event );
+      if (command != -1)
+      {
+        wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
+        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;
   
   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 (descent) (*descent) = font->descent;
   if (externalLeading) (*externalLeading) = 0;  // ??
index 08b5436b343b8ad0db31a129152b4843afc522b0..8288d870daf7ce76edbda683ff58fb4db614b290 100644 (file)
@@ -13,6 +13,8 @@
 
 #include "wx/accel.h"
 
+#include <ctype.h>
+
 //-----------------------------------------------------------------------------
 // wxAcceleratorTable
 //-----------------------------------------------------------------------------
@@ -22,13 +24,24 @@ class wxAccelRefData: public wxObjectRefData
   public:
   
     wxAccelRefData(void);
+    ~wxAccelRefData(void);
   
     wxList m_accels;
 };
 
 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();
   for (int i = 0; i < n; i++)
   {
-    M_ACCELDATA->m_accels.Append( (wxObject*)
-      new wxAcceleratorEntry( entries[n].GetFlags(), entries[n].GetKeyCode(), entries[n].GetCommand() ) );
+    int flag    = entries[i].GetFlags();
+    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 ) );
   }
 }
 
index dba832d7401ab926d1868399c771f75be0847672..2ca9ce464edd47da294df82bc60f6646f38796d0 100644 (file)
@@ -193,11 +193,17 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
   
   if (!ret)
   {
-    int command = win->GetAcceleratorTable()->GetCommand( event );
-    if (command != -1)
-    {
-      wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
-      ret = win->GetEventHandler()->ProcessEvent( command_event );
+    wxWindow *ancestor = win;
+    while (ancestor)
+    {    
+      int command = ancestor->GetAcceleratorTable()->GetCommand( event );
+      if (command != -1)
+      {
+        wxCommandEvent command_event( wxEVT_COMMAND_MENU_SELECTED, command );
+        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;
   
   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 (descent) (*descent) = font->descent;
   if (externalLeading) (*externalLeading) = 0;  // ??