GTK 1.0 compilation (not tested)
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
This commit is contained in:
@@ -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;
|
||||
|
||||
|
@@ -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:
|
||||
{
|
||||
}
|
||||
|
@@ -44,6 +44,10 @@
|
||||
#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;
|
||||
|
Reference in New Issue
Block a user