Chnages to focus code with debug code
added wxSL_LABELS git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2297 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
c05cbb7f5e
commit
2e563988fb
@ -46,6 +46,16 @@ extern bool g_isIdle;
|
||||
|
||||
extern wxList wxPendingDelete;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// debug
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
|
||||
extern void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar *window );
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "size_allocate"
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -216,6 +226,21 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
|
||||
win->SetIcon( icon );
|
||||
}
|
||||
|
||||
/* we set the focus to the child that accepts the focus. this
|
||||
doesn't really have to be done in "realize" but why not? */
|
||||
wxNode *node = win->m_children.First();
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow*) node->Data();
|
||||
if (child->AcceptsFocus())
|
||||
{
|
||||
child->SetFocus();
|
||||
break;
|
||||
}
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -336,6 +361,10 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
|
||||
m_widget = gtk_window_new( win_type );
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_widget, _T("wxFrame::m_widget"), name );
|
||||
#endif
|
||||
|
||||
gtk_window_set_title( GTK_WINDOW(m_widget), title.mbc_str() );
|
||||
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
|
||||
|
||||
@ -348,17 +377,22 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
GTK_WIDGET_UNSET_FLAGS( m_mainWidget, GTK_CAN_FOCUS );
|
||||
gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_mainWidget, _T("wxFrame::m_mainWidget"), name );
|
||||
#endif
|
||||
|
||||
/* m_wxwindow only represents the client area without toolbar and menubar */
|
||||
m_wxwindow = gtk_myfixed_new();
|
||||
gtk_widget_show( m_wxwindow );
|
||||
gtk_container_add( GTK_CONTAINER(m_mainWidget), m_wxwindow );
|
||||
|
||||
/* we allow the frame to get the focus as otherwise no
|
||||
key events will get sent to it. the point with this is
|
||||
that the menu's key accelerators work by interceting
|
||||
key events here */
|
||||
GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||
gtk_widget_grab_focus( m_wxwindow );
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_wxwindow, _T("wxFrame::m_wxwindow"), name );
|
||||
#endif
|
||||
|
||||
/* we donm't allow the frame to get the focus as otherwise
|
||||
the frame will grabit at arbitrary fcous changes. */
|
||||
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||
|
||||
if (m_parent) m_parent->AddChild( this );
|
||||
|
||||
|
@ -36,6 +36,16 @@ extern bool g_isIdle;
|
||||
|
||||
extern bool g_blockEventsOnDrag;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// debug
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
|
||||
extern void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar *window );
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxNotebookPage
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -246,6 +256,10 @@ bool wxNotebook::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
m_widget = gtk_notebook_new();
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_widget, _T("wxNotebook::m_widget"), name );
|
||||
#endif
|
||||
|
||||
gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 );
|
||||
|
||||
m_idHandler = gtk_signal_connect (
|
||||
|
@ -101,12 +101,15 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
m_oldPos = 0.0;
|
||||
|
||||
if (style & wxSL_VERTICAL == wxSL_VERTICAL)
|
||||
if (style & wxSL_VERTICAL)
|
||||
m_widget = gtk_hscale_new( (GtkAdjustment *) NULL );
|
||||
else
|
||||
m_widget = gtk_vscale_new( (GtkAdjustment *) NULL );
|
||||
|
||||
gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE );
|
||||
if (style & wxSL_LABELS)
|
||||
gtk_scale_set_draw_value( GTK_SCALE( m_widget ), TRUE );
|
||||
else
|
||||
gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE );
|
||||
|
||||
m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) );
|
||||
|
||||
|
@ -121,6 +121,39 @@
|
||||
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// debug
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
|
||||
static gint gtk_debug_focus_in_callback( GtkWidget *WXUNUSED(widget),
|
||||
GdkEvent *WXUNUSED(event),
|
||||
const wxChar *name )
|
||||
{
|
||||
wxPrintf( _T("FOCUS NOW AT: ") );
|
||||
wxPrintf( name );
|
||||
wxPrintf( _T("\n") );
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar *window )
|
||||
{
|
||||
wxString tmp = name;
|
||||
tmp += _T(" FROM ");
|
||||
tmp += window;
|
||||
|
||||
wxChar *s = new wxChar[tmp.Length()+1];
|
||||
|
||||
wxStrcpy( s, tmp );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(widget), "focus_in_event",
|
||||
GTK_SIGNAL_FUNC(gtk_debug_focus_in_callback), (gpointer)s );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// data
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -1542,8 +1575,17 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
|
||||
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_widget, _T("wxWindow::m_widget"), name );
|
||||
#endif
|
||||
|
||||
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( s_window->hscrollbar, _T("wxWindow::hsrcollbar"), name );
|
||||
debug_focus_in( s_window->vscrollbar, _T("wxWindow::vsrcollbar"), name );
|
||||
#endif
|
||||
|
||||
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
||||
scroll_class->scrollbar_spacing = 0;
|
||||
|
||||
@ -1558,6 +1600,10 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
m_wxwindow = gtk_myfixed_new();
|
||||
gtk_widget_show( m_wxwindow );
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_wxwindow, _T("wxWindow::m_wxwindow"), name );
|
||||
#endif
|
||||
|
||||
gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
|
||||
|
||||
#if (GTK_MINOR_VERSION > 0)
|
||||
@ -1606,7 +1652,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
}
|
||||
|
||||
/* grab the actual focus */
|
||||
gtk_widget_grab_focus( m_wxwindow );
|
||||
// gtk_widget_grab_focus( m_wxwindow );
|
||||
|
||||
#if (GTK_MINOR_VERSION == 0)
|
||||
// shut the viewport up
|
||||
@ -2284,6 +2330,9 @@ void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSE
|
||||
|
||||
void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
|
||||
{
|
||||
/* this is commented because it also is commented
|
||||
in wxMSW. before I get even more questions about
|
||||
this. */
|
||||
// if (GetAutoLayout()) Layout();
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,16 @@ extern bool g_isIdle;
|
||||
|
||||
extern wxList wxPendingDelete;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// debug
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
|
||||
extern void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar *window );
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "size_allocate"
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -216,6 +226,21 @@ gtk_frame_realized_callback( GtkWidget *widget, wxFrame *win )
|
||||
win->SetIcon( icon );
|
||||
}
|
||||
|
||||
/* we set the focus to the child that accepts the focus. this
|
||||
doesn't really have to be done in "realize" but why not? */
|
||||
wxNode *node = win->m_children.First();
|
||||
while (node)
|
||||
{
|
||||
wxWindow *child = (wxWindow*) node->Data();
|
||||
if (child->AcceptsFocus())
|
||||
{
|
||||
child->SetFocus();
|
||||
break;
|
||||
}
|
||||
|
||||
node = node->Next();
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -336,6 +361,10 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
|
||||
m_widget = gtk_window_new( win_type );
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_widget, _T("wxFrame::m_widget"), name );
|
||||
#endif
|
||||
|
||||
gtk_window_set_title( GTK_WINDOW(m_widget), title.mbc_str() );
|
||||
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
|
||||
|
||||
@ -348,17 +377,22 @@ bool wxFrame::Create( wxWindow *parent, wxWindowID id, const wxString &title,
|
||||
GTK_WIDGET_UNSET_FLAGS( m_mainWidget, GTK_CAN_FOCUS );
|
||||
gtk_container_add( GTK_CONTAINER(m_widget), m_mainWidget );
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_mainWidget, _T("wxFrame::m_mainWidget"), name );
|
||||
#endif
|
||||
|
||||
/* m_wxwindow only represents the client area without toolbar and menubar */
|
||||
m_wxwindow = gtk_myfixed_new();
|
||||
gtk_widget_show( m_wxwindow );
|
||||
gtk_container_add( GTK_CONTAINER(m_mainWidget), m_wxwindow );
|
||||
|
||||
/* we allow the frame to get the focus as otherwise no
|
||||
key events will get sent to it. the point with this is
|
||||
that the menu's key accelerators work by interceting
|
||||
key events here */
|
||||
GTK_WIDGET_SET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||
gtk_widget_grab_focus( m_wxwindow );
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_wxwindow, _T("wxFrame::m_wxwindow"), name );
|
||||
#endif
|
||||
|
||||
/* we donm't allow the frame to get the focus as otherwise
|
||||
the frame will grabit at arbitrary fcous changes. */
|
||||
GTK_WIDGET_UNSET_FLAGS( m_wxwindow, GTK_CAN_FOCUS );
|
||||
|
||||
if (m_parent) m_parent->AddChild( this );
|
||||
|
||||
|
@ -36,6 +36,16 @@ extern bool g_isIdle;
|
||||
|
||||
extern bool g_blockEventsOnDrag;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// debug
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
|
||||
extern void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar *window );
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxNotebookPage
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -246,6 +256,10 @@ bool wxNotebook::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
m_widget = gtk_notebook_new();
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_widget, _T("wxNotebook::m_widget"), name );
|
||||
#endif
|
||||
|
||||
gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 );
|
||||
|
||||
m_idHandler = gtk_signal_connect (
|
||||
|
@ -101,12 +101,15 @@ bool wxSlider::Create(wxWindow *parent, wxWindowID id,
|
||||
|
||||
m_oldPos = 0.0;
|
||||
|
||||
if (style & wxSL_VERTICAL == wxSL_VERTICAL)
|
||||
if (style & wxSL_VERTICAL)
|
||||
m_widget = gtk_hscale_new( (GtkAdjustment *) NULL );
|
||||
else
|
||||
m_widget = gtk_vscale_new( (GtkAdjustment *) NULL );
|
||||
|
||||
gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE );
|
||||
if (style & wxSL_LABELS)
|
||||
gtk_scale_set_draw_value( GTK_SCALE( m_widget ), TRUE );
|
||||
else
|
||||
gtk_scale_set_draw_value( GTK_SCALE( m_widget ), FALSE );
|
||||
|
||||
m_adjust = gtk_range_get_adjustment( GTK_RANGE(m_widget) );
|
||||
|
||||
|
@ -121,6 +121,39 @@
|
||||
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// debug
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
|
||||
static gint gtk_debug_focus_in_callback( GtkWidget *WXUNUSED(widget),
|
||||
GdkEvent *WXUNUSED(event),
|
||||
const wxChar *name )
|
||||
{
|
||||
wxPrintf( _T("FOCUS NOW AT: ") );
|
||||
wxPrintf( name );
|
||||
wxPrintf( _T("\n") );
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void debug_focus_in( GtkWidget* widget, const wxChar* name, const wxChar *window )
|
||||
{
|
||||
wxString tmp = name;
|
||||
tmp += _T(" FROM ");
|
||||
tmp += window;
|
||||
|
||||
wxChar *s = new wxChar[tmp.Length()+1];
|
||||
|
||||
wxStrcpy( s, tmp );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(widget), "focus_in_event",
|
||||
GTK_SIGNAL_FUNC(gtk_debug_focus_in_callback), (gpointer)s );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// data
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -1542,8 +1575,17 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
|
||||
GTK_WIDGET_UNSET_FLAGS( m_widget, GTK_CAN_FOCUS );
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_widget, _T("wxWindow::m_widget"), name );
|
||||
#endif
|
||||
|
||||
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( s_window->hscrollbar, _T("wxWindow::hsrcollbar"), name );
|
||||
debug_focus_in( s_window->vscrollbar, _T("wxWindow::vsrcollbar"), name );
|
||||
#endif
|
||||
|
||||
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
||||
scroll_class->scrollbar_spacing = 0;
|
||||
|
||||
@ -1558,6 +1600,10 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
m_wxwindow = gtk_myfixed_new();
|
||||
gtk_widget_show( m_wxwindow );
|
||||
|
||||
#ifdef __WXDEBUG__
|
||||
debug_focus_in( m_wxwindow, _T("wxWindow::m_wxwindow"), name );
|
||||
#endif
|
||||
|
||||
gtk_container_add( GTK_CONTAINER(m_widget), m_wxwindow );
|
||||
|
||||
#if (GTK_MINOR_VERSION > 0)
|
||||
@ -1606,7 +1652,7 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
}
|
||||
|
||||
/* grab the actual focus */
|
||||
gtk_widget_grab_focus( m_wxwindow );
|
||||
// gtk_widget_grab_focus( m_wxwindow );
|
||||
|
||||
#if (GTK_MINOR_VERSION == 0)
|
||||
// shut the viewport up
|
||||
@ -2284,6 +2330,9 @@ void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSE
|
||||
|
||||
void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
|
||||
{
|
||||
/* this is commented because it also is commented
|
||||
in wxMSW. before I get even more questions about
|
||||
this. */
|
||||
// if (GetAutoLayout()) Layout();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user