GTK's dnd is broken, not mine
Added notebook::removepage (not tested) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -27,13 +27,6 @@
|
||||
|
||||
extern bool g_blockEventsOnDrag;
|
||||
|
||||
|
||||
#if (GTK_MINOR_VERSION == 1)
|
||||
#if (GTK_MICRO_VERSION >= 3)
|
||||
#define NEW_GTK_DND_CODE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef NEW_GTK_DND_CODE
|
||||
|
||||
#include "gtk/gtkdnd.h"
|
||||
|
@@ -486,19 +486,38 @@ void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
|
||||
GList *child = m_list->children;
|
||||
while (child)
|
||||
{
|
||||
#ifdef NEW_GTK_DND_CODE
|
||||
GtkBin *item = GTK_BIN( child->data );
|
||||
m_dropTarget->UnregisterWidget( item->child );
|
||||
#else
|
||||
m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
|
||||
#endif
|
||||
child = child->next;
|
||||
}
|
||||
}
|
||||
|
||||
wxWindow::SetDropTarget( dropTarget );
|
||||
#ifndef NEW_GTK_DND_CODE
|
||||
if (m_dropTarget) m_dropTarget->UnregisterWidget( m_list );
|
||||
#endif
|
||||
|
||||
if (m_dropTarget) delete m_dropTarget;
|
||||
m_dropTarget = dropTarget;
|
||||
|
||||
#ifndef NEW_GTK_DND_CODE
|
||||
if (m_dropTarget) m_dropTarget->RegisterWidget( dnd_widget );
|
||||
#endif
|
||||
|
||||
if (m_dropTarget)
|
||||
{
|
||||
GList *child = m_list->children;
|
||||
while (child)
|
||||
{
|
||||
#ifdef NEW_GTK_DND_CODE
|
||||
GtkBin *item = GTK_BIN( child->data );
|
||||
m_dropTarget->RegisterWidget( item->child );
|
||||
#else
|
||||
m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
|
||||
#endif
|
||||
child = child->next;
|
||||
}
|
||||
}
|
||||
|
@@ -370,12 +370,32 @@ bool wxNotebook::DeletePage( int page )
|
||||
child = child->next;
|
||||
}
|
||||
|
||||
wxASSERT( child );
|
||||
wxCHECK_MSG( child != NULL, FALSE, "illegal notebook index" );
|
||||
|
||||
delete nb_page->m_client;
|
||||
|
||||
// Amazingly, this is not necessary
|
||||
// gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page_num );
|
||||
m_pages.DeleteObject( nb_page );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxNotebook::RemovePage( int page )
|
||||
{
|
||||
wxNotebookPage* nb_page = GetNotebookPage(page);
|
||||
if (!nb_page) return FALSE;
|
||||
|
||||
int page_num = 0;
|
||||
GList *child = GTK_NOTEBOOK(m_widget)->children;
|
||||
while (child)
|
||||
{
|
||||
if (nb_page->m_page == (GtkNotebookPage*)child->data) break;
|
||||
page_num++;
|
||||
child = child->next;
|
||||
}
|
||||
|
||||
wxCHECK_MSG( child != NULL, FALSE, "illegal notebook index" );
|
||||
|
||||
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page_num );
|
||||
|
||||
m_pages.DeleteObject( nb_page );
|
||||
|
||||
|
@@ -27,13 +27,6 @@
|
||||
|
||||
extern bool g_blockEventsOnDrag;
|
||||
|
||||
|
||||
#if (GTK_MINOR_VERSION == 1)
|
||||
#if (GTK_MICRO_VERSION >= 3)
|
||||
#define NEW_GTK_DND_CODE
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef NEW_GTK_DND_CODE
|
||||
|
||||
#include "gtk/gtkdnd.h"
|
||||
|
@@ -486,19 +486,38 @@ void wxListBox::SetDropTarget( wxDropTarget *dropTarget )
|
||||
GList *child = m_list->children;
|
||||
while (child)
|
||||
{
|
||||
#ifdef NEW_GTK_DND_CODE
|
||||
GtkBin *item = GTK_BIN( child->data );
|
||||
m_dropTarget->UnregisterWidget( item->child );
|
||||
#else
|
||||
m_dropTarget->UnregisterWidget( GTK_WIDGET( child->data ) );
|
||||
#endif
|
||||
child = child->next;
|
||||
}
|
||||
}
|
||||
|
||||
wxWindow::SetDropTarget( dropTarget );
|
||||
#ifndef NEW_GTK_DND_CODE
|
||||
if (m_dropTarget) m_dropTarget->UnregisterWidget( m_list );
|
||||
#endif
|
||||
|
||||
if (m_dropTarget) delete m_dropTarget;
|
||||
m_dropTarget = dropTarget;
|
||||
|
||||
#ifndef NEW_GTK_DND_CODE
|
||||
if (m_dropTarget) m_dropTarget->RegisterWidget( dnd_widget );
|
||||
#endif
|
||||
|
||||
if (m_dropTarget)
|
||||
{
|
||||
GList *child = m_list->children;
|
||||
while (child)
|
||||
{
|
||||
#ifdef NEW_GTK_DND_CODE
|
||||
GtkBin *item = GTK_BIN( child->data );
|
||||
m_dropTarget->RegisterWidget( item->child );
|
||||
#else
|
||||
m_dropTarget->RegisterWidget( GTK_WIDGET( child->data ) );
|
||||
#endif
|
||||
child = child->next;
|
||||
}
|
||||
}
|
||||
|
@@ -370,12 +370,32 @@ bool wxNotebook::DeletePage( int page )
|
||||
child = child->next;
|
||||
}
|
||||
|
||||
wxASSERT( child );
|
||||
wxCHECK_MSG( child != NULL, FALSE, "illegal notebook index" );
|
||||
|
||||
delete nb_page->m_client;
|
||||
|
||||
// Amazingly, this is not necessary
|
||||
// gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page_num );
|
||||
m_pages.DeleteObject( nb_page );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool wxNotebook::RemovePage( int page )
|
||||
{
|
||||
wxNotebookPage* nb_page = GetNotebookPage(page);
|
||||
if (!nb_page) return FALSE;
|
||||
|
||||
int page_num = 0;
|
||||
GList *child = GTK_NOTEBOOK(m_widget)->children;
|
||||
while (child)
|
||||
{
|
||||
if (nb_page->m_page == (GtkNotebookPage*)child->data) break;
|
||||
page_num++;
|
||||
child = child->next;
|
||||
}
|
||||
|
||||
wxCHECK_MSG( child != NULL, FALSE, "illegal notebook index" );
|
||||
|
||||
gtk_notebook_remove_page( GTK_NOTEBOOK(m_widget), page_num );
|
||||
|
||||
m_pages.DeleteObject( nb_page );
|
||||
|
||||
|
Reference in New Issue
Block a user