X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c693edf3bc9539378a7ac56d90d41d89c7dc7579..e7494fa9961c39cd14069ef8b12f5c059c7d3b35:/src/gtk/notebook.cpp diff --git a/src/gtk/notebook.cpp b/src/gtk/notebook.cpp index 2ea952be80..7dae078001 100644 --- a/src/gtk/notebook.cpp +++ b/src/gtk/notebook.cpp @@ -127,43 +127,6 @@ static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* if (win->GetAutoLayout()) win->Layout(); } -//----------------------------------------------------------------------------- -// "key_press_event" -//----------------------------------------------------------------------------- - -static gint -gtk_notebook_key_press_callback( GtkWidget *widget, GdkEventKey *gdk_event, wxNotebook *notebook ) -{ - if (g_isIdle) wxapp_install_idle_handler(); - - if (g_blockEventsOnDrag) return FALSE; - - if (!notebook->m_hasVMT) return FALSE; - - /* this code makes jumping down from the handles of the notebooks - to the actual items in the visible notebook page possible with - the down-arrow key */ - - if (gdk_event->keyval != GDK_Down) return FALSE; - - if (notebook != notebook->FindFocus()) return FALSE; - - if (notebook->m_pages.GetCount() == 0) return FALSE; - - wxNode *node = notebook->m_pages.Nth( notebook->GetSelection() ); - - if (!node) return FALSE; - - wxNotebookPage *page = (wxNotebookPage*) node->Data(); - - // don't let others the key event - gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "key_press_event" ); - - page->m_client->SetFocus(); - - return TRUE; -} - //----------------------------------------------------------------------------- // InsertChild callback for wxNotebook //----------------------------------------------------------------------------- @@ -220,12 +183,18 @@ bool wxNotebook::Create(wxWindow *parent, wxWindowID id, m_acceptsFocus = TRUE; m_insertCallback = (wxInsertChildFunction)wxInsertChildInNotebook; - PreCreation( parent, id, pos, size, style, name ); + if (!PreCreation( parent, pos, size ) || + !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) + { + wxFAIL_MSG( wxT("wxNoteBook creation failed") ); + return FALSE; + } + m_widget = gtk_notebook_new(); #ifdef __WXDEBUG__ - debug_focus_in( m_widget, _T("wxNotebook::m_widget"), name ); + debug_focus_in( m_widget, wxT("wxNotebook::m_widget"), name ); #endif gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 ); @@ -235,8 +204,12 @@ bool wxNotebook::Create(wxWindow *parent, wxWindowID id, m_parent->DoAddChild( this ); - gtk_signal_connect( GTK_OBJECT(m_widget), "key_press_event", - GTK_SIGNAL_FUNC(gtk_notebook_key_press_callback), (gpointer)this ); + if(m_windowStyle & wxNB_RIGHT) + gtk_notebook_set_tab_pos( GTK_NOTEBOOK(m_widget), GTK_POS_RIGHT ); + if(m_windowStyle & wxNB_LEFT) + gtk_notebook_set_tab_pos( GTK_NOTEBOOK(m_widget), GTK_POS_LEFT ); + if(m_windowStyle & wxNB_BOTTOM) + gtk_notebook_set_tab_pos( GTK_NOTEBOOK(m_widget), GTK_POS_BOTTOM ); PostCreation(); @@ -245,9 +218,22 @@ bool wxNotebook::Create(wxWindow *parent, wxWindowID id, return TRUE; } +void wxNotebook::SetFocus() +{ + if (m_pages.GetCount() == 0) return; + + wxNode *node = m_pages.Nth( GetSelection() ); + + if (!node) return; + + wxNotebookPage *page = (wxNotebookPage*) node->Data(); + + page->m_client->SetFocus(); +} + int wxNotebook::GetSelection() const { - wxCHECK_MSG( m_widget != NULL, -1, _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid notebook") ); GList *pages = GTK_NOTEBOOK(m_widget)->children; @@ -272,18 +258,18 @@ int wxNotebook::GetRowCount() const wxString wxNotebook::GetPageText( int page ) const { - wxCHECK_MSG( m_widget != NULL, _T(""), _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, wxT(""), wxT("invalid notebook") ); wxNotebookPage* nb_page = GetNotebookPage(page); if (nb_page) return nb_page->m_text; else - return ""; + return wxT(""); } int wxNotebook::GetPageImage( int page ) const { - wxCHECK_MSG( m_widget != NULL, -1, _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid notebook") ); wxNotebookPage* nb_page = GetNotebookPage(page); if (nb_page) @@ -294,9 +280,9 @@ int wxNotebook::GetPageImage( int page ) const wxNotebookPage* wxNotebook::GetNotebookPage( int page ) const { - wxCHECK_MSG( m_widget != NULL, (wxNotebookPage*) NULL, _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, (wxNotebookPage*) NULL, wxT("invalid notebook") ); - wxCHECK_MSG( page < (int)m_pages.GetCount(), (wxNotebookPage*) NULL, _T("invalid notebook index") ); + wxCHECK_MSG( page < (int)m_pages.GetCount(), (wxNotebookPage*) NULL, wxT("invalid notebook index") ); wxNode *node = m_pages.Nth( page ); @@ -305,9 +291,9 @@ wxNotebookPage* wxNotebook::GetNotebookPage( int page ) const int wxNotebook::SetSelection( int page ) { - wxCHECK_MSG( m_widget != NULL, -1, _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, -1, wxT("invalid notebook") ); - wxCHECK_MSG( page < (int)m_pages.GetCount(), -1, _T("invalid notebook index") ); + wxCHECK_MSG( page < (int)m_pages.GetCount(), -1, wxT("invalid notebook index") ); int selOld = GetSelection(); @@ -318,7 +304,7 @@ int wxNotebook::SetSelection( int page ) void wxNotebook::AdvanceSelection( bool forward ) { - wxCHECK_RET( m_widget != NULL, _T("invalid notebook") ); + wxCHECK_RET( m_widget != NULL, wxT("invalid notebook") ); int sel = GetSelection(); int max = GetPageCount(); @@ -336,11 +322,11 @@ void wxNotebook::SetImageList( wxImageList* imageList ) bool wxNotebook::SetPageText( int page, const wxString &text ) { - wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, FALSE, wxT("invalid notebook") ); wxNotebookPage* nb_page = GetNotebookPage(page); - wxCHECK_MSG( nb_page, FALSE, _T("SetPageText: invalid page index") ); + wxCHECK_MSG( nb_page, FALSE, wxT("SetPageText: invalid page index") ); nb_page->m_text = text; @@ -436,22 +422,22 @@ bool wxNotebook::SetPageImage( int page, int image ) void wxNotebook::SetPageSize( const wxSize &WXUNUSED(size) ) { - wxFAIL_MSG( _T("wxNotebook::SetPageSize not implemented") ); + wxFAIL_MSG( wxT("wxNotebook::SetPageSize not implemented") ); } void wxNotebook::SetPadding( const wxSize &WXUNUSED(padding) ) { - wxFAIL_MSG( _T("wxNotebook::SetPadding not implemented") ); + wxFAIL_MSG( wxT("wxNotebook::SetPadding not implemented") ); } void wxNotebook::SetTabSize(const wxSize& WXUNUSED(sz)) { - wxFAIL_MSG( _T("wxNotebook::SetTabSize not implemented") ); + wxFAIL_MSG( wxT("wxNotebook::SetTabSize not implemented") ); } bool wxNotebook::DeleteAllPages() { - wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, FALSE, wxT("invalid notebook") ); while (m_pages.GetCount() > 0) DeletePage( m_pages.GetCount()-1 ); @@ -492,10 +478,10 @@ bool wxNotebook::RemovePage( int page ) bool wxNotebook::InsertPage( int position, wxWindow* win, const wxString& text, bool select, int imageId ) { - wxCHECK_MSG( m_widget != NULL, FALSE, _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, FALSE, wxT("invalid notebook") ); wxCHECK_MSG( win->GetParent() == this, FALSE, - _T("Can't add a page whose parent is not the notebook!") ); + wxT("Can't add a page whose parent is not the notebook!") ); /* don't receive switch page during addition */ gtk_signal_disconnect_by_func( GTK_OBJECT(m_widget), @@ -515,6 +501,9 @@ bool wxNotebook::InsertPage( int position, wxWindow* win, const wxString& text, page->m_box = gtk_hbox_new( FALSE, 0 ); gtk_container_border_width( GTK_CONTAINER(page->m_box), 2 ); + gtk_signal_connect( GTK_OBJECT(win->m_widget), "size_allocate", + GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)win ); + if (position < 0) gtk_notebook_append_page( notebook, win->m_widget, page->m_box ); else @@ -522,9 +511,6 @@ bool wxNotebook::InsertPage( int position, wxWindow* win, const wxString& text, page->m_page = (GtkNotebookPage*) g_list_last(notebook->children)->data; - gtk_signal_connect( GTK_OBJECT(win->m_widget), "size_allocate", - GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)win ); - /* set the label image */ page->m_image = imageId; @@ -549,7 +535,7 @@ bool wxNotebook::InsertPage( int position, wxWindow* win, const wxString& text, /* set the label text */ page->m_text = text; - if (page->m_text.IsEmpty()) page->m_text = _T(""); + if (page->m_text.IsEmpty()) page->m_text = wxT(""); page->m_label = GTK_LABEL( gtk_label_new(page->m_text.mbc_str()) ); gtk_box_pack_end( GTK_BOX(page->m_box), GTK_WIDGET(page->m_label), FALSE, FALSE, 3 ); @@ -587,7 +573,7 @@ void wxNotebook::OnNavigationKey(wxNavigationKeyEvent& event) wxWindow *wxNotebook::GetPage( int page ) const { - wxCHECK_MSG( m_widget != NULL, (wxWindow*) NULL, _T("invalid notebook") ); + wxCHECK_MSG( m_widget != NULL, (wxWindow*) NULL, wxT("invalid notebook") ); wxNotebookPage* nb_page = GetNotebookPage(page); if (!nb_page) @@ -626,4 +612,4 @@ bool wxNotebook::IsOwnGtkWindow( GdkWindow *window ) IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxNotifyEvent) -#endif \ No newline at end of file +#endif