]> git.saurik.com Git - wxWidgets.git/commitdiff
GTK 1.0 compilation (not tested)
authorRobert Roebling <robert@roebling.de>
Sat, 22 May 1999 15:13:18 +0000 (15:13 +0000)
committerRobert Roebling <robert@roebling.de>
Sat, 22 May 1999 15:13:18 +0000 (15:13 +0000)
  toolbars can now get inserted in the client
   area as well (as normal windows)
  Menu accels can be functions keys
  Made DialogEd work again (with wxGTK :-) )

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/frame.h
include/wx/gtk1/frame.h
samples/controls/controls.cpp
src/gtk/frame.cpp
src/gtk/menu.cpp
src/gtk/window.cpp
src/gtk1/frame.cpp
src/gtk1/menu.cpp
src/gtk1/window.cpp
utils/dialoged/src/reseditr.cpp
utils/dialoged/src/reseditr.h

index 70bb8392b6be0622d8feca370a0b94b389484876..13a543e0fe2468c6308bbe629ea924a0021669d7 100644 (file)
@@ -114,6 +114,7 @@ public:
     GtkWidget    *m_mainWidget;
     bool          m_menuBarDetached;
     bool          m_toolBarDetached;
+    bool          m_insertInClientArea;  /* not from within OnCreateXXX */
 
 protected:
     virtual void DoSetSize(int x, int y,
index 70bb8392b6be0622d8feca370a0b94b389484876..13a543e0fe2468c6308bbe629ea924a0021669d7 100644 (file)
@@ -114,6 +114,7 @@ public:
     GtkWidget    *m_mainWidget;
     bool          m_menuBarDetached;
     bool          m_toolBarDetached;
+    bool          m_insertInClientArea;  /* not from within OnCreateXXX */
 
 protected:
     virtual void DoSetSize(int x, int y,
index 3e76a41b2dd0ee43ae043e28c274e2f0def0cb19..eb24f789a6a5e8dde04e5f194682e85c8b6de103 100644 (file)
@@ -183,17 +183,17 @@ bool MyApp::OnInit()
     frame->SetIcon( wxICON(mondrian) );
 
     wxMenu *file_menu = new wxMenu;
-    file_menu->Append(MINIMAL_ABOUT, "&About");
-    file_menu->Append(MINIMAL_QUIT, "E&xit");
+    file_menu->Append(MINIMAL_ABOUT, "&About\tF1");
+    file_menu->Append(MINIMAL_QUIT, "E&xit\tAlt-X", "Quit controls sample");
 
     wxMenuBar *menu_bar = new wxMenuBar( wxMB_DOCKABLE );
     menu_bar->Append(file_menu, "&File");
 
 #if wxUSE_TOOLTIPS
     wxMenu *tooltip_menu = new wxMenu;
-    tooltip_menu->Append(MINIMAL_SET_TOOLTIP_DELAY, "Set &delay");
+    tooltip_menu->Append(MINIMAL_SET_TOOLTIP_DELAY, "Set &delay\tCtrl-D");
     tooltip_menu->AppendSeparator();
-    tooltip_menu->Append(MINIMAL_ENABLE_TOOLTIPS, "&Toggle tooltips",
+    tooltip_menu->Append(MINIMAL_ENABLE_TOOLTIPS, "&Toggle tooltips\tCrtl-T",
             "enable/disable tooltips", TRUE);
     tooltip_menu->Check(MINIMAL_ENABLE_TOOLTIPS, TRUE);
     menu_bar->Append(tooltip_menu, "&Tooltips");
index e2b33215317cc922bd36db9f8e04456e25a75fc7..b4195914f8fe8b64fe6c31ff2f7d8d03bd0aeda8 100644 (file)
@@ -249,13 +249,10 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
  * virtual function here as wxWindows requires different ways to insert
  * a child in container classes. */
 
-static void wxInsertChildInFrame( wxWindow* parent, wxWindow* child )
+static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child )
 {
-    if (wxIS_KIND_OF(child,wxToolBar) || wxIS_KIND_OF(child,wxMenuBar))
+    if (!parent->m_insertInClientArea)
     {
-        /* actually, menubars are never inserted here, but this
-           may change one day */
-    
         /* these are outside the client area */
         wxFrame* frame = (wxFrame*) parent;
         gtk_myfixed_put( GTK_MYFIXED(frame->m_mainWidget),
@@ -318,7 +315,8 @@ wxFrame::wxFrame()
     m_mainWidget = (GtkWidget*) NULL;
     m_menuBarDetached = FALSE;
     m_toolBarDetached = FALSE;
-    m_insertCallback = wxInsertChildInFrame;
+    m_insertCallback = (wxInsertChildFunction) NULL;
+    m_insertInClientArea = TRUE;
 }
 
 wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
@@ -334,7 +332,8 @@ wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
     m_mainWidget = (GtkWidget*) NULL;
     m_menuBarDetached = FALSE;
     m_toolBarDetached = FALSE;
-    m_insertCallback = wxInsertChildInFrame;
+    m_insertCallback = (wxInsertChildFunction) NULL;
+    m_insertInClientArea = TRUE;
     Create( parent, id, title, pos, size, style, name );
 }
 
@@ -350,7 +349,7 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
 
     m_title = title;
     
-    m_insertCallback = wxInsertChildInFrame;
+    m_insertCallback = (wxInsertChildFunction) wxInsertChildInFrame;
 
     GtkWindowType win_type = GTK_WINDOW_TOPLEVEL;
     if (style & wxSIMPLE_BORDER) win_type = GTK_WINDOW_POPUP;
@@ -752,7 +751,7 @@ void wxFrame::OnInternalIdle()
     DoMenuUpdates();
 }
 
-void wxFrame::OnCloseWindow( wxCloseEvent& event )
+void wxFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) )
 {
     Destroy();
 }
@@ -887,15 +886,19 @@ void wxFrame::OnMenuHighlight(wxMenuEvent& event)
     }
 }
 
-wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
+wxToolBar* wxFrame::CreateToolBar( long style, wxWindowID id, const wxString& name )
 {
     wxASSERT_MSG( (m_widget != NULL), _T("invalid frame") );
 
     wxCHECK_MSG( m_frameToolBar == NULL, FALSE, _T("recreating toolbar in wxFrame") );
 
+    m_insertInClientArea = FALSE;
+    
     m_frameToolBar = OnCreateToolBar( style, id, name );
 
-    GetChildren().DeleteObject( m_frameToolBar );
+    if (m_frameToolBar) GetChildren().DeleteObject( m_frameToolBar );
+    
+    m_insertInClientArea = TRUE;
 
     m_sizeSet = FALSE;
 
index 6907fe1d684178cf59daa4129d6c83f104e2e24d..fd67e5ee803f1de0d7f934f924ec7ce7c1b94094 100644 (file)
@@ -488,9 +488,9 @@ void wxMenuItem::SetName( const wxString& str )
 #if (GTK_MINOR_VERSION > 0)
             m_text << _T('_');
         } else 
-       if (*pc == _T('/'))
+       if (*pc == _T('/'))      /* we have to filter out slashes ... */
        {
-            m_text << _T('\\');
+            m_text << _T('\\');  /* ... and replace them with back slashes */
 #endif
         }
         else
@@ -677,6 +677,12 @@ void wxMenu::Append( int id, const wxString &item, const wxString &helpStr, bool
                entry.accelerator = hotbuf;
               break;
            }
+           case _T('F'):   /* function keys */
+           {
+              strcpy( hotbuf, hotkey.mb_str() );
+               entry.accelerator = hotbuf;
+              break;
+           }
            default:
            {
            }
index 7821833663a09a7d9e4c0f590bedd489b95beada..f7059d2e7c44ad99bf57070d4b1816a0ddd8eb81 100644 (file)
 #include "gdk/gdkkeysyms.h"
 #include "wx/gtk/win_gtk.h"
 
+#if (GTK_MINOR_VERSION == 0)
+#include "gdk/gdkx.h"
+#endif
+
 //-----------------------------------------------------------------------------
 // documentation on internals
 //-----------------------------------------------------------------------------
@@ -185,6 +189,22 @@ extern bool g_isIdle;
 // key event conversion routines
 //-----------------------------------------------------------------------------
 
+#if (GTK_MINOR_VERSION == 0)
+static guint
+gdk_keyval_to_upper (guint       keyval)
+{
+  if (keyval)
+    {
+      KeySym lower_val = 0;
+      KeySym upper_val = 0;
+      
+      XConvertCase (keyval, &lower_val, &upper_val);
+      return upper_val;
+    }
+  return 0;
+}
+#endif
+
 static long map_to_unmodified_wx_keysym( KeySym keysym )
 {
     guint key_code = 0;
@@ -638,6 +658,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
         ret = win->GetEventHandler()->ProcessEvent( new_event );
     }
     
+#if (GTK_MINOR_VERSION > 0)
     /* pressing F10 will activate the menu bar of the top frame */
     if ( (!ret) &&
          (gdk_event->keyval == GDK_F10) )
@@ -665,6 +686,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
             ancestor = ancestor->GetParent();
         }
     }
+#endif
 
 /*
     Damn, I forgot why this didn't work, but it didn't work.
@@ -1232,7 +1254,9 @@ static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_
         gdk_window_set_cursor( widget->window, win->GetCursor().GetCursor() );
 
     wxMouseEvent event( wxEVT_ENTER_WINDOW );
+#if (GTK_MINOR_VERSION > 0)
     event.SetTimestamp( gdk_event->time );
+#endif
     event.SetEventObject( win );
 
     int x = 0;
@@ -1279,7 +1303,9 @@ static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_
         gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() );
 
     wxMouseEvent event( wxEVT_LEAVE_WINDOW );
+#if (GTK_MINOR_VERSION > 0)
     event.SetTimestamp( gdk_event->time );
+#endif
     event.SetEventObject( win );
 
     int x = 0;
index e2b33215317cc922bd36db9f8e04456e25a75fc7..b4195914f8fe8b64fe6c31ff2f7d8d03bd0aeda8 100644 (file)
@@ -249,13 +249,10 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
  * virtual function here as wxWindows requires different ways to insert
  * a child in container classes. */
 
-static void wxInsertChildInFrame( wxWindow* parent, wxWindow* child )
+static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child )
 {
-    if (wxIS_KIND_OF(child,wxToolBar) || wxIS_KIND_OF(child,wxMenuBar))
+    if (!parent->m_insertInClientArea)
     {
-        /* actually, menubars are never inserted here, but this
-           may change one day */
-    
         /* these are outside the client area */
         wxFrame* frame = (wxFrame*) parent;
         gtk_myfixed_put( GTK_MYFIXED(frame->m_mainWidget),
@@ -318,7 +315,8 @@ wxFrame::wxFrame()
     m_mainWidget = (GtkWidget*) NULL;
     m_menuBarDetached = FALSE;
     m_toolBarDetached = FALSE;
-    m_insertCallback = wxInsertChildInFrame;
+    m_insertCallback = (wxInsertChildFunction) NULL;
+    m_insertInClientArea = TRUE;
 }
 
 wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
@@ -334,7 +332,8 @@ wxFrame::wxFrame( wxWindow *parent, wxWindowID id, const wxString &title,
     m_mainWidget = (GtkWidget*) NULL;
     m_menuBarDetached = FALSE;
     m_toolBarDetached = FALSE;
-    m_insertCallback = wxInsertChildInFrame;
+    m_insertCallback = (wxInsertChildFunction) NULL;
+    m_insertInClientArea = TRUE;
     Create( parent, id, title, pos, size, style, name );
 }
 
@@ -350,7 +349,7 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
 
     m_title = title;
     
-    m_insertCallback = wxInsertChildInFrame;
+    m_insertCallback = (wxInsertChildFunction) wxInsertChildInFrame;
 
     GtkWindowType win_type = GTK_WINDOW_TOPLEVEL;
     if (style & wxSIMPLE_BORDER) win_type = GTK_WINDOW_POPUP;
@@ -752,7 +751,7 @@ void wxFrame::OnInternalIdle()
     DoMenuUpdates();
 }
 
-void wxFrame::OnCloseWindow( wxCloseEvent& event )
+void wxFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) )
 {
     Destroy();
 }
@@ -887,15 +886,19 @@ void wxFrame::OnMenuHighlight(wxMenuEvent& event)
     }
 }
 
-wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
+wxToolBar* wxFrame::CreateToolBar( long style, wxWindowID id, const wxString& name )
 {
     wxASSERT_MSG( (m_widget != NULL), _T("invalid frame") );
 
     wxCHECK_MSG( m_frameToolBar == NULL, FALSE, _T("recreating toolbar in wxFrame") );
 
+    m_insertInClientArea = FALSE;
+    
     m_frameToolBar = OnCreateToolBar( style, id, name );
 
-    GetChildren().DeleteObject( m_frameToolBar );
+    if (m_frameToolBar) GetChildren().DeleteObject( m_frameToolBar );
+    
+    m_insertInClientArea = TRUE;
 
     m_sizeSet = FALSE;
 
index 6907fe1d684178cf59daa4129d6c83f104e2e24d..fd67e5ee803f1de0d7f934f924ec7ce7c1b94094 100644 (file)
@@ -488,9 +488,9 @@ void wxMenuItem::SetName( const wxString& str )
 #if (GTK_MINOR_VERSION > 0)
             m_text << _T('_');
         } else 
-       if (*pc == _T('/'))
+       if (*pc == _T('/'))      /* we have to filter out slashes ... */
        {
-            m_text << _T('\\');
+            m_text << _T('\\');  /* ... and replace them with back slashes */
 #endif
         }
         else
@@ -677,6 +677,12 @@ void wxMenu::Append( int id, const wxString &item, const wxString &helpStr, bool
                entry.accelerator = hotbuf;
               break;
            }
+           case _T('F'):   /* function keys */
+           {
+              strcpy( hotbuf, hotkey.mb_str() );
+               entry.accelerator = hotbuf;
+              break;
+           }
            default:
            {
            }
index 7821833663a09a7d9e4c0f590bedd489b95beada..f7059d2e7c44ad99bf57070d4b1816a0ddd8eb81 100644 (file)
 #include "gdk/gdkkeysyms.h"
 #include "wx/gtk/win_gtk.h"
 
+#if (GTK_MINOR_VERSION == 0)
+#include "gdk/gdkx.h"
+#endif
+
 //-----------------------------------------------------------------------------
 // documentation on internals
 //-----------------------------------------------------------------------------
@@ -185,6 +189,22 @@ extern bool g_isIdle;
 // key event conversion routines
 //-----------------------------------------------------------------------------
 
+#if (GTK_MINOR_VERSION == 0)
+static guint
+gdk_keyval_to_upper (guint       keyval)
+{
+  if (keyval)
+    {
+      KeySym lower_val = 0;
+      KeySym upper_val = 0;
+      
+      XConvertCase (keyval, &lower_val, &upper_val);
+      return upper_val;
+    }
+  return 0;
+}
+#endif
+
 static long map_to_unmodified_wx_keysym( KeySym keysym )
 {
     guint key_code = 0;
@@ -638,6 +658,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
         ret = win->GetEventHandler()->ProcessEvent( new_event );
     }
     
+#if (GTK_MINOR_VERSION > 0)
     /* pressing F10 will activate the menu bar of the top frame */
     if ( (!ret) &&
          (gdk_event->keyval == GDK_F10) )
@@ -665,6 +686,7 @@ static gint gtk_window_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_e
             ancestor = ancestor->GetParent();
         }
     }
+#endif
 
 /*
     Damn, I forgot why this didn't work, but it didn't work.
@@ -1232,7 +1254,9 @@ static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_
         gdk_window_set_cursor( widget->window, win->GetCursor().GetCursor() );
 
     wxMouseEvent event( wxEVT_ENTER_WINDOW );
+#if (GTK_MINOR_VERSION > 0)
     event.SetTimestamp( gdk_event->time );
+#endif
     event.SetEventObject( win );
 
     int x = 0;
@@ -1279,7 +1303,9 @@ static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_
         gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() );
 
     wxMouseEvent event( wxEVT_LEAVE_WINDOW );
+#if (GTK_MINOR_VERSION > 0)
     event.SetTimestamp( gdk_event->time );
+#endif
     event.SetEventObject( win );
 
     int x = 0;
index 34a5dd365c693f0b723df98322cbc073fd6f420f..55a60b962cabc2ce7b57fc6df0a13a6638c67c07 100644 (file)
@@ -2188,7 +2188,6 @@ void wxResourceEditorFrame::OnCloseWindow(wxCloseEvent& event)
  */
 
 BEGIN_EVENT_TABLE(wxResourceEditorScrolledWindow, wxScrolledWindow)
-    EVT_SCROLL(wxResourceEditorScrolledWindow::OnScroll)
     EVT_PAINT(wxResourceEditorScrolledWindow::OnPaint)
 END_EVENT_TABLE()
 
@@ -2207,17 +2206,6 @@ wxResourceEditorScrolledWindow::~wxResourceEditorScrolledWindow()
 {
 }
 
-void wxResourceEditorScrolledWindow::OnScroll(wxScrollEvent& event)
-{
-    wxScrolledWindow::OnScroll(event);
-
-    int x, y;
-    ViewStart(& x, & y);
-
-    if (m_childWindow)
-        m_childWindow->Move(m_marginX + (- x * 10), m_marginY + (- y * 10));
-}
-
 void wxResourceEditorScrolledWindow::OnPaint(wxPaintEvent& WXUNUSED(event))
 {
     wxPaintDC dc(this);
index 5a87b10d069a9c7c8cb8bba60038ac8686c550ed..56e17c1adfa9f48a2708a75b86824848e750dea4 100644 (file)
@@ -382,7 +382,6 @@ class wxResourceEditorScrolledWindow: public wxScrolledWindow
       long style = 0);
   ~wxResourceEditorScrolledWindow();
 
-  void OnScroll(wxScrollEvent& event);
   void OnPaint(wxPaintEvent& event);
 
   void DrawTitle(wxDC& dc);