]> git.saurik.com Git - wxWidgets.git/commitdiff
GTK's dnd is broken, not mine
authorRobert Roebling <robert@roebling.de>
Tue, 24 Nov 1998 13:29:09 +0000 (13:29 +0000)
committerRobert Roebling <robert@roebling.de>
Tue, 24 Nov 1998 13:29:09 +0000 (13:29 +0000)
  Added notebook::removepage (not tested)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/dnd.h
include/wx/gtk/notebook.h
include/wx/gtk1/dnd.h
include/wx/gtk1/notebook.h
samples/dnd/dnd.cpp
src/gtk/dnd.cpp
src/gtk/listbox.cpp
src/gtk/notebook.cpp
src/gtk1/dnd.cpp
src/gtk1/listbox.cpp
src/gtk1/notebook.cpp

index e10c9e7c764868d31b179d6191a95d6ccffababf..937fe1aa896ddba3a793568d0b45aefeaaa1493f 100644 (file)
 #include "wx/string.h"
 #include "wx/cursor.h"
 
+//-------------------------------------------------------------------------
+// conditional compilation
+//-------------------------------------------------------------------------
+
+#if (GTK_MINOR_VERSION == 1)
+#if (GTK_MICRO_VERSION >= 3)
+#define NEW_GTK_DND_CODE
+#endif
+#endif
+
 //-------------------------------------------------------------------------
 // classes
 //-------------------------------------------------------------------------
index 46ae493e5771584ac8839639cb7eb18e0f62e9fb..b188e6083f0512a11df781bb6981525b6564aa47 100644 (file)
@@ -122,6 +122,8 @@ public:
 
   // operations
   // ----------
+    // remove one page from the notebook but do not destroy it
+  bool RemovePage(int nPage);
     // remove one page from the notebook
   bool DeletePage(int nPage);
     // remove all pages
index e10c9e7c764868d31b179d6191a95d6ccffababf..937fe1aa896ddba3a793568d0b45aefeaaa1493f 100644 (file)
 #include "wx/string.h"
 #include "wx/cursor.h"
 
+//-------------------------------------------------------------------------
+// conditional compilation
+//-------------------------------------------------------------------------
+
+#if (GTK_MINOR_VERSION == 1)
+#if (GTK_MICRO_VERSION >= 3)
+#define NEW_GTK_DND_CODE
+#endif
+#endif
+
 //-------------------------------------------------------------------------
 // classes
 //-------------------------------------------------------------------------
index 46ae493e5771584ac8839639cb7eb18e0f62e9fb..b188e6083f0512a11df781bb6981525b6564aa47 100644 (file)
@@ -122,6 +122,8 @@ public:
 
   // operations
   // ----------
+    // remove one page from the notebook but do not destroy it
+  bool RemovePage(int nPage);
     // remove one page from the notebook
   bool DeletePage(int nPage);
     // remove all pages
index 2d596e27cba029af81e4113849d128dea7880b45..03d8ce93882186ecfffc998835c95e0a2cdc1447 100644 (file)
@@ -182,6 +182,7 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
   m_ctrlFile  = new wxListBox(this, -1, pos, size, 1, &strFile, wxLB_HSCROLL);
   m_ctrlText  = new wxListBox(this, -1, pos, size, 1, &strText, wxLB_HSCROLL);
 
+/*
   m_ctrlLog   = new wxTextCtrl(this, -1, "", pos, size, 
                                wxTE_MULTILINE | wxTE_READONLY | 
                                wxSUNKEN_BORDER| wxHSCROLL);
@@ -189,6 +190,10 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
   // redirect log messages to the text window (don't forget to delete it!)
   m_pLog = new wxLogTextCtrl(m_ctrlLog);
   m_pLogPrev = wxLog::SetActiveTarget(m_pLog);
+*/
+
+  wxStaticText *m_testLabel = new wxStaticText( this, -1, "Hallo", pos, size );
+  m_testLabel->SetDropTarget( new wxTextDropTarget() );
 
   // associate drop targets with 2 text controls
   m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile));
@@ -212,15 +217,25 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
   c->height.PercentOf(this, wxHeight, 40);
   m_ctrlText->SetConstraints(c);
 
+/*
   // Lower text control
   c = new wxLayoutConstraints;
   c->left.SameAs    (this, wxLeft);
   c->right.SameAs   (this, wxRight);
   c->height.PercentOf(this, wxHeight, 40);
   c->top.SameAs(m_ctrlText, wxBottom);
-
   m_ctrlLog->SetConstraints(c);
+*/
 
+  // Lower label control
+  c = new wxLayoutConstraints;
+  c->left.SameAs    (this, wxLeft);
+  c->right.SameAs   (this, wxRight);
+  c->height.PercentOf(this, wxHeight, 40);
+  c->top.SameAs(m_ctrlText, wxBottom);
+  m_testLabel->SetConstraints(c);
+  
+  
   SetAutoLayout(TRUE);
 }
 
@@ -284,7 +299,7 @@ void DnDFrame::OnHelp(wxCommandEvent& /* event */)
 
 void DnDFrame::OnLogClear(wxCommandEvent& /* event */ )
 {
-  m_ctrlLog->Clear();
+//  m_ctrlLog->Clear();
 }
 
 bool DnDFrame::OnClose() 
index 6cdb19747f203cffeafcf944a045a9ba625996bb..388df88d259b614c07165f19ce1c9751912a1cbf 100644 (file)
 
 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"
index 2734acb6227f1bca9cb186a01f79bd9175ce1e93..198a207afa9c28ef604fa49280f534ee80390d62 100644 (file)
@@ -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;
         }
     }
index feb8c042c5f87838ec4207641365c8093096163c..b1ece83c05e9c67417d29d35a45986fd5380e3c6 100644 (file)
@@ -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 );
 
index 6cdb19747f203cffeafcf944a045a9ba625996bb..388df88d259b614c07165f19ce1c9751912a1cbf 100644 (file)
 
 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"
index 2734acb6227f1bca9cb186a01f79bd9175ce1e93..198a207afa9c28ef604fa49280f534ee80390d62 100644 (file)
@@ -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;
         }
     }
index feb8c042c5f87838ec4207641365c8093096163c..b1ece83c05e9c67417d29d35a45986fd5380e3c6 100644 (file)
@@ -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 );