GtkWidget *m_mainWidget;
bool m_menuBarDetached;
bool m_toolBarDetached;
+ bool m_insertInClientArea; /* not from within OnCreateXXX */
protected:
virtual void DoSetSize(int x, int y,
GtkWidget *m_mainWidget;
bool m_menuBarDetached;
bool m_toolBarDetached;
+ bool m_insertInClientArea; /* not from within OnCreateXXX */
protected:
virtual void DoSetSize(int x, int y,
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");
* 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),
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,
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 );
}
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;
DoMenuUpdates();
}
-void wxFrame::OnCloseWindow( wxCloseEvent& event )
+void wxFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) )
{
Destroy();
}
}
}
-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;
#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
entry.accelerator = hotbuf;
break;
}
+ case _T('F'): /* function keys */
+ {
+ strcpy( hotbuf, hotkey.mb_str() );
+ entry.accelerator = hotbuf;
+ break;
+ }
default:
{
}
#include "gdk/gdkkeysyms.h"
#include "wx/gtk/win_gtk.h"
+#if (GTK_MINOR_VERSION == 0)
+#include "gdk/gdkx.h"
+#endif
+
//-----------------------------------------------------------------------------
// documentation on internals
//-----------------------------------------------------------------------------
// 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;
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) )
ancestor = ancestor->GetParent();
}
}
+#endif
/*
Damn, I forgot why this didn't work, but it didn't work.
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;
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;
* 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),
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,
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 );
}
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;
DoMenuUpdates();
}
-void wxFrame::OnCloseWindow( wxCloseEvent& event )
+void wxFrame::OnCloseWindow( wxCloseEvent& WXUNUSED(event) )
{
Destroy();
}
}
}
-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;
#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
entry.accelerator = hotbuf;
break;
}
+ case _T('F'): /* function keys */
+ {
+ strcpy( hotbuf, hotkey.mb_str() );
+ entry.accelerator = hotbuf;
+ break;
+ }
default:
{
}
#include "gdk/gdkkeysyms.h"
#include "wx/gtk/win_gtk.h"
+#if (GTK_MINOR_VERSION == 0)
+#include "gdk/gdkx.h"
+#endif
+
//-----------------------------------------------------------------------------
// documentation on internals
//-----------------------------------------------------------------------------
// 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;
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) )
ancestor = ancestor->GetParent();
}
}
+#endif
/*
Damn, I forgot why this didn't work, but it didn't work.
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;
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;
*/
BEGIN_EVENT_TABLE(wxResourceEditorScrolledWindow, wxScrolledWindow)
- EVT_SCROLL(wxResourceEditorScrolledWindow::OnScroll)
EVT_PAINT(wxResourceEditorScrolledWindow::OnPaint)
END_EVENT_TABLE()
{
}
-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);
long style = 0);
~wxResourceEditorScrolledWindow();
- void OnScroll(wxScrollEvent& event);
void OnPaint(wxPaintEvent& event);
void DrawTitle(wxDC& dc);