[GnomeMeeting-devel-list] [PRE-PATCH] private structures



Hi,

don't cry, I know it's for post 1.00, but since I was still working on
it, I wanted to have something at least a little polished before working
on something else!

The private text-chat pre-patch looked quite good, so it's the same than
last time, and is probably a patch.

The calls history pre-patch moves everything to calls_history.*, and:
* it still has the dirty function is_calls_history_model (that shows
there's some factoring to do);
* the fact that calls_history.h depends on ldap_window.h shows there
some factoring to do.

My conclusion is: the first thing to do after 1.00 is make a list of
gnomemeeting's part, with a list of what the dependancies should be, and
break those that are there but shouldn't!

Snark
diff -urN gnomemeeting-cvs-20040127.CVS/src/calls_history.cpp gnomemeeting-cvs-20040127.CVS.patched/src/calls_history.cpp
--- gnomemeeting-cvs-20040127.CVS/src/calls_history.cpp	1970-01-01 01:00:00.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/calls_history.cpp	2004-01-27 14:45:58.000000000 +0100
@@ -0,0 +1,433 @@
+
+/* GnomeMeeting -- A Video-Conferencing application
+ * Copyright (C) 2000-2004 Damien Sandras
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * GnomeMeting is licensed under the GPL license and as a special exception,
+ * you have permission to link or otherwise combine this program with the
+ * programs OpenH323 and Pwlib, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OpenH323 program, as long
+ * as you do follow the requirements of the GNU GPL for all the rest of the
+ * software thus combined.
+ */
+
+
+/*
+ *                         calls_history.cpp  -  description
+ *                         -------------------------
+ *   begin                : Sun Sep 1 2002
+ *   copyright            : (C) 2000-2004 by Damien Sandras 
+ *   description          : This file contains functions to manage&display the
+ *		calls history
+ */
+
+#include "common.h"
+#include "calls_history.h"
+#include "gnomemeeting.h"
+#include "gconf_widgets_extensions.h"
+#include "misc.h"
+#include "lib/stock-icons.h"
+#include "ldap_window.h"
+
+struct _GmCallsHistoryWindowPrivate
+{
+  GtkListStore *given_calls_list_store;
+  GtkListStore *received_calls_list_store;
+  GtkListStore *missed_calls_list_store;
+};
+
+/* FIXME: should really disappear soon after 1.00 */
+gboolean is_model_from_calls_history (GmCallsHistoryWindow *chw, GtkTreeModel *model)
+{
+  return model == GTK_TREE_MODEL (chw->internal->given_calls_list_store)
+      || model == GTK_TREE_MODEL (chw->internal->received_calls_list_store)
+      || model == GTK_TREE_MODEL (chw->internal->missed_calls_list_store);
+}
+
+static void dnd_drag_data_get_cb (GtkWidget *,
+				  GdkDragContext *,
+				  GtkSelectionData *,
+				  guint,
+				  guint,
+				  gpointer);
+
+/* DESCRIPTION  :  This callback is called when the user has released the drag.
+ * BEHAVIOR     :  Puts the required data into the selection_data, we put
+ *                 name and the url fields for now.
+ * PRE          :  data = the type of the page from where the drag occured :
+ *                 CONTACTS_GROUPS or CONTACTS_SERVERS.
+ */
+static void
+dnd_drag_data_get_cb (GtkWidget *tree_view,
+		      GdkDragContext *dc,
+		      GtkSelectionData *selection_data,
+		      guint info,
+		      guint t,
+		      gpointer data)
+{
+  GtkTreeSelection *selection = NULL;
+  GtkTreeModel *model = NULL;
+  GtkTreeIter iter;
+  
+  gchar *contact_name = NULL;
+  gchar *contact_url = NULL;
+  gchar *drag_data = NULL;
+
+        
+  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
+  model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
+    
+  if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
+      
+    gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 
+			1, &contact_name,
+			2, &contact_url, -1);
+
+    if (contact_name && contact_url) {
+      
+      drag_data = g_strdup_printf ("%s|%s", contact_name, contact_url);
+    
+      gtk_selection_data_set (selection_data,
+			      selection_data->target, 
+			      8,
+			      (const guchar *) drag_data,
+			      strlen (drag_data));
+      g_free (drag_data);
+    }
+  }
+  
+  g_free (contact_name);
+  g_free (contact_url);
+}
+
+
+/* The functions */
+void
+gnomemeeting_calls_history_window_populate ()
+{
+  GtkTreeIter iter;
+  GtkListStore *list_store = NULL;
+
+  gchar *gconf_key = NULL;
+  gchar **call_data = NULL;
+  
+  GSList *calls_list = NULL;
+
+  GmCallsHistoryWindowPrivate *chw = NULL;
+
+  chw = GnomeMeeting::Process ()->GetCallsHistoryWindow ()->internal;
+
+  for (int i = 0 ; i < MAX_VALUE_CALL ; i++) {
+    
+    switch (i) {
+
+    case RECEIVED_CALL:
+      list_store = chw->received_calls_list_store;
+      gconf_key =
+	g_strdup (USER_INTERFACE_KEY "calls_history_window/received_calls_history");
+      break;
+    case PLACED_CALL:
+      list_store = chw->given_calls_list_store;
+      gconf_key =
+	g_strdup (USER_INTERFACE_KEY "calls_history_window/placed_calls_history");
+      break;
+    case MISSED_CALL:
+      list_store = chw->missed_calls_list_store;
+      gconf_key =
+	g_strdup (USER_INTERFACE_KEY "calls_history_window/missed_calls_history");
+      break;
+    }
+
+    gtk_list_store_clear (list_store);
+    
+    calls_list = gconf_get_string_list (gconf_key);
+
+    while (calls_list && calls_list->data) {
+      
+      call_data = g_strsplit ((char *) calls_list->data, "|", 0);
+      
+      if (call_data) {
+	
+	gtk_list_store_append (list_store, &iter);
+	gtk_list_store_set (list_store,
+			    &iter,
+			    0, call_data [0],
+			    1, call_data [1],
+			    2, call_data [2],
+			    3, call_data [3],
+			    4, call_data [4],
+			    5, call_data [5],
+			    -1);
+      }
+      
+      g_strfreev (call_data);
+
+      calls_list = g_slist_next (calls_list);
+    }
+    
+    g_free (gconf_key);
+    g_slist_free (calls_list);
+  }
+}
+
+
+void
+gnomemeeting_calls_history_window_add_call (int i,
+					    const char *remote_user,
+					    const char *ip,
+					    const char *duration,
+					    const char *reason,
+					    const char *software)
+{
+  PString time;
+
+  gchar *gconf_key = NULL;
+  gchar *call_data = NULL;
+  
+  GSList *calls_list = NULL;
+  GSList *tmp = NULL;
+  
+  time = PTime ().AsString ("www dd MMM, hh:mm:ss");
+  
+  switch (i) {
+
+  case RECEIVED_CALL:
+    gconf_key =
+      g_strdup (USER_INTERFACE_KEY "calls_history_window/received_calls_history");
+    break;
+  case PLACED_CALL:
+    gconf_key =
+      g_strdup (USER_INTERFACE_KEY "calls_history_window/placed_calls_history");
+    break;
+  case MISSED_CALL:
+    gconf_key =
+      g_strdup (USER_INTERFACE_KEY "calls_history_window/missed_calls_history");
+    break;
+  }
+
+  
+  call_data =
+    g_strdup_printf ("%s|%s|%s|%s|%s|%s",
+		     (const char *) time ? (const char *) time : "",
+		     remote_user ? remote_user : "",
+		     ip ? ip : "",
+		     duration ? duration : "",
+		     reason ? reason : "",
+		     software ? software : "");
+  
+  calls_list = gconf_get_string_list (gconf_key);
+  calls_list = g_slist_append (calls_list, (gpointer) call_data);
+
+  while (g_slist_length (calls_list) > 100) {
+
+    tmp = g_slist_nth (calls_list, 0);
+    calls_list = g_slist_remove_link (calls_list, tmp);
+
+    g_slist_free_1 (tmp);
+  }
+  
+  gconf_set_string_list (gconf_key, calls_list);
+  
+  g_free (gconf_key);
+  g_slist_free (calls_list);
+}
+
+#define CLOSE_BUTTON_ID 0
+#define CLEAR_BUTTON_ID 1
+
+void
+gnomemeeting_calls_history_window_response_event (GtkDialog *dialog, gint id, gpointer window)
+{
+  switch (id) {
+    case CLOSE_BUTTON_ID:
+      gnomemeeting_window_hide (GTK_WIDGET (window));
+      break;
+    case CLEAR_BUTTON_ID:
+      gconf_set_string_list (USER_INTERFACE_KEY "calls_history_window/received_calls_history", NULL);
+      gconf_set_string_list (USER_INTERFACE_KEY "calls_history_window/placed_calls_history", NULL);
+      gconf_set_string_list (USER_INTERFACE_KEY "calls_history_window/missed_calls_history", NULL);
+      break;
+  }
+}
+
+GtkWidget *
+gnomemeeting_calls_history_window_new (GmCallsHistoryWindow *chw)
+{
+  GtkWidget *window = NULL;
+  GtkWidget *notebook = NULL;
+  GtkWidget *scr = NULL;
+  GtkWidget *label = NULL;
+  GtkWidget *tree_view = NULL;
+  GdkPixbuf *icon = NULL;
+  
+  GtkTreeViewColumn *column = NULL;
+  GtkCellRenderer *renderer = NULL;
+
+  GtkListStore *list_store [3];
+  
+  gchar *label_text [3] =
+    {N_("Received Calls"), N_("Placed Calls"), N_("Unanswered Calls")};
+  label_text [0] = gettext (label_text [0]);
+  label_text [1] = gettext (label_text [1]);
+  label_text [2] = gettext (label_text [2]);
+
+  static GtkTargetEntry dnd_targets [] =
+    {
+      {"text/plain", GTK_TARGET_SAME_APP, 0}
+    };
+
+  
+  window = gtk_dialog_new ();
+  gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CLEAR, CLEAR_BUTTON_ID);
+  gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CLOSE, CLOSE_BUTTON_ID);
+  g_object_set_data_full (G_OBJECT (window), "window_name",
+			  g_strdup ("calls_history_window"), g_free);
+  
+  gtk_window_set_title (GTK_WINDOW (window), _("Calls History"));
+  gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
+  icon = gtk_widget_render_icon (GTK_WIDGET (window),
+				 GM_STOCK_CALLS_HISTORY,
+				 GTK_ICON_SIZE_MENU, NULL);
+  gtk_window_set_icon (GTK_WINDOW (window), icon);
+  g_object_unref (icon);
+
+  notebook = gtk_notebook_new ();
+  gtk_container_set_border_width (GTK_CONTAINER (notebook), 6);
+  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), notebook,
+		      TRUE, TRUE, 0);
+
+  for (int i = 0 ; i < MAX_VALUE_CALL ; i++) {
+
+    label = gtk_label_new (N_(label_text [i]));
+    scr = gtk_scrolled_window_new (NULL, NULL);
+    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scr), 
+				    GTK_POLICY_AUTOMATIC,
+				    GTK_POLICY_AUTOMATIC);
+
+    list_store [i] = 
+      gtk_list_store_new (6,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING,
+			  G_TYPE_STRING);
+    
+    tree_view = 
+      gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store [i]));
+    gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
+    
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Date"),
+						       renderer,
+						       "text", 
+						       0,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Remote User"),
+						       renderer,
+						       "text", 
+						       1,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    g_object_set (G_OBJECT (renderer), "weight", "bold", NULL);
+        
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("URL"),
+						       renderer,
+						       "text", 
+						       2,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    gtk_tree_view_column_set_visible (column, false);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Call Duration"),
+						       renderer,
+						       "text", 
+						       3,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    if (i == 2)
+      gtk_tree_view_column_set_visible (column, false);
+
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Call End Reason"),
+						       renderer,
+						       "text", 
+						       4,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
+    
+    renderer = gtk_cell_renderer_text_new ();
+    column = gtk_tree_view_column_new_with_attributes (_("Software"),
+						       renderer,
+						       "text", 
+						       5,
+						       NULL);
+    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
+    g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
+	
+    
+    gtk_container_add (GTK_CONTAINER (scr), tree_view);
+    gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scr, label);
+
+
+    /* Signal to call the person on the double-clicked row */
+    g_signal_connect (G_OBJECT (tree_view), "row_activated", 
+		      G_CALLBACK (contact_activated_cb), GINT_TO_POINTER (3));
+
+    /* The drag and drop information */
+    gtk_drag_source_set (GTK_WIDGET (tree_view),
+			 GDK_BUTTON1_MASK, dnd_targets, 1,
+			 GDK_ACTION_COPY);
+    g_signal_connect (G_OBJECT (tree_view), "drag_data_get",
+		      G_CALLBACK (dnd_drag_data_get_cb), NULL);
+
+    /* Right-click on a contact */
+    g_signal_connect (G_OBJECT (tree_view), "event_after",
+		    G_CALLBACK (contact_clicked_cb), GINT_TO_POINTER (1));
+  }
+
+  chw->internal = new GmCallsHistoryWindowPrivate ();
+  chw->internal->received_calls_list_store = list_store [0];
+  chw->internal->given_calls_list_store = list_store [1];
+  chw->internal->missed_calls_list_store = list_store [2];
+
+  g_signal_connect_swapped (GTK_OBJECT (window), 
+			    "response", 
+			    G_CALLBACK (gnomemeeting_calls_history_window_response_event),
+			    (gpointer) window);
+
+  g_signal_connect_swapped (GTK_OBJECT (window), 
+			    "delete-event", 
+			    G_CALLBACK (gtk_widget_hide_on_delete),
+			    (gpointer) window);
+
+  
+  /* Fill in the window with old calls */
+  gnomemeeting_calls_history_window_populate ();
+
+  
+  gtk_widget_show_all (GTK_WIDGET (GTK_DIALOG (window)->vbox));
+  
+  return window;
+}
diff -urN gnomemeeting-cvs-20040127.CVS/src/calls_history.h gnomemeeting-cvs-20040127.CVS.patched/src/calls_history.h
--- gnomemeeting-cvs-20040127.CVS/src/calls_history.h	1970-01-01 01:00:00.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/calls_history.h	2004-01-27 13:11:28.000000000 +0100
@@ -0,0 +1,84 @@
+
+/* GnomeMeeting -- A Video-Conferencing application
+ * Copyright (C) 2000-2004 Damien Sandras
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ *
+ * GnomeMeting is licensed under the GPL license and as a special exception,
+ * you have permission to link or otherwise combine this program with the
+ * programs OpenH323 and Pwlib, and distribute the combination, without
+ * applying the requirements of the GNU GPL to the OpenH323 program, as long
+ * as you do follow the requirements of the GNU GPL for all the rest of the
+ * software thus combined.
+ */
+
+
+/*
+ *                         calls_history.h  -  description
+ *                         -----------------------
+ *   begin                : Sun Sep 1 2002
+ *   copyright            : (C) 2000-2004 by Damien Sandras 
+ *   description          : This file contains functions to manage&display
+ *		the calls history
+ */
+ 
+#ifndef _CALLS_HISTORY_H
+#define _CALLS_HISTORY_H
+
+enum {
+  RECEIVED_CALL,
+  PLACED_CALL,
+  MISSED_CALL,
+  MAX_VALUE_CALL // hackish... sorry... just keep it last
+};
+
+typedef struct _GmCallsHistoryWindow GmCallsHistoryWindow;
+typedef struct _GmCallsHistoryWindowPrivate GmCallsHistoryWindowPrivate;
+
+struct _GmCallsHistoryWindow
+{
+  GmCallsHistoryWindowPrivate *internal;
+};
+
+/* FIXME: will disappear real soon! */
+gboolean is_model_from_calls_history (GmCallsHistoryWindow *chw, GtkTreeModel *model);
+
+/* DESCRIPTION  :  /
+ * BEHAVIOR     :  Build the calls history window and returns a pointer to it.
+ * PRE          :  /
+ */
+GtkWidget *gnomemeeting_calls_history_window_new (GmCallsHistoryWindow *);
+
+
+/* DESCRIPTION  :  /
+ * BEHAVIOR     :  Populate the calls history window.
+ * PRE          :  /
+ */
+void gnomemeeting_calls_history_window_populate ();
+
+
+/* DESCRIPTION  :  /
+ * BEHAVIOR     :  Add a call to the calls history window.
+ * PRE          :  /
+ */
+void gnomemeeting_calls_history_window_add_call (int,
+						 const char *, 
+						 const char *,
+						 const char *,
+						 const char *,
+						 const char *);
+
+#endif
diff -urN gnomemeeting-cvs-20040127.CVS/src/common.h gnomemeeting-cvs-20040127.CVS.patched/src/common.h
--- gnomemeeting-cvs-20040127.CVS/src/common.h	2004-01-24 23:27:39.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/common.h	2004-01-27 10:07:53.000000000 +0100
@@ -122,7 +122,6 @@
 typedef struct _GmLdapWindowPage GmLdapWindowPage;
 typedef struct _GmTextChat GmTextChat;
 typedef struct _GmDruidWindow GmDruidWindow;
-typedef struct _GmCallsHistoryWindow GmCallsHistoryWindow;
 typedef struct _GmRtpData GmRtpData;
 
 
@@ -293,13 +292,6 @@
 };
 
 
-struct _GmCallsHistoryWindow
-{
-  GtkListStore *given_calls_list_store;
-  GtkListStore *received_calls_list_store;
-  GtkListStore *missed_calls_list_store;
-};
-
 
 struct _GmPrefWindow
 {
diff -urN gnomemeeting-cvs-20040127.CVS/src/gnomemeeting.h gnomemeeting-cvs-20040127.CVS.patched/src/gnomemeeting.h
--- gnomemeeting-cvs-20040127.CVS/src/gnomemeeting.h	2004-01-20 12:46:57.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/gnomemeeting.h	2004-01-27 13:10:54.000000000 +0100
@@ -41,7 +41,7 @@
 
 #include "common.h"
 #include "endpoint.h"
-
+#include "calls_history.h"
 
 /**
  * COMMON NOTICE: The Application must be initialized with Init after its
diff -urN gnomemeeting-cvs-20040127.CVS/src/ldap_window.cpp gnomemeeting-cvs-20040127.CVS.patched/src/ldap_window.cpp
--- gnomemeeting-cvs-20040127.CVS/src/ldap_window.cpp	2004-01-25 18:27:50.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/ldap_window.cpp	2004-01-27 10:07:54.000000000 +0100
@@ -285,9 +285,7 @@
   model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
 
   /* The source can be either the addressbook OR the calls history */
-  if (src_model == GTK_TREE_MODEL (chw->given_calls_list_store)
-      || src_model == GTK_TREE_MODEL (chw->received_calls_list_store)
-      || src_model == GTK_TREE_MODEL (chw->missed_calls_list_store)) {
+  if (is_model_from_calls_history (chw, src_model)) {
 
     src_selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (src_widget));
 
diff -urN gnomemeeting-cvs-20040127.CVS/src/Makefile.am gnomemeeting-cvs-20040127.CVS.patched/src/Makefile.am
--- gnomemeeting-cvs-20040127.CVS/src/Makefile.am	2004-01-02 19:48:15.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/Makefile.am	2004-01-27 13:11:37.000000000 +0100
@@ -10,6 +10,7 @@
 	common.h		\
 	callbacks.cpp		\
 	callbacks.h		\
+	calls_history.cpp	\
 	gdkvideoio.cpp		\
 	gdkvideoio.h		\
 	gnomemeeting.cpp	\
diff -urN gnomemeeting-cvs-20040127.CVS/src/tools.cpp gnomemeeting-cvs-20040127.CVS.patched/src/tools.cpp
--- gnomemeeting-cvs-20040127.CVS/src/tools.cpp	2004-01-24 23:27:40.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/tools.cpp	2004-01-27 15:34:08.000000000 +0100
@@ -41,14 +41,11 @@
 
 #include "tools.h"
 #include "gnomemeeting.h"
-#include "callbacks.h"
-#include "ldap_window.h"
 #include "misc.h"
 
 #include "gconf_widgets_extensions.h"
 #include "gnome_prefs_window.h"
-#include "stock-icons.h"
-
+//#include "stock-icons.h"
 
 extern GtkWidget *gm;
 
@@ -59,13 +56,6 @@
 static void microtelco_consult_cb (GtkWidget *,
 				   gpointer);
 
-static void dnd_drag_data_get_cb (GtkWidget *,
-				  GdkDragContext *,
-				  GtkSelectionData *,
-				  guint,
-				  guint,
-				  gpointer);
-
 
 /* DESCRIPTION  :  This callback is called when the user validates an answer
  *                 to the PC-To-Phone window.
@@ -157,374 +147,6 @@
   g_free (pin);
 }
 
-
-/* DESCRIPTION  :  This callback is called when the user has released the drag.
- * BEHAVIOR     :  Puts the required data into the selection_data, we put
- *                 name and the url fields for now.
- * PRE          :  data = the type of the page from where the drag occured :
- *                 CONTACTS_GROUPS or CONTACTS_SERVERS.
- */
-static void
-dnd_drag_data_get_cb (GtkWidget *tree_view,
-		      GdkDragContext *dc,
-		      GtkSelectionData *selection_data,
-		      guint info,
-		      guint t,
-		      gpointer data)
-{
-  GtkTreeSelection *selection = NULL;
-  GtkTreeModel *model = NULL;
-  GtkTreeIter iter;
-  
-  gchar *contact_name = NULL;
-  gchar *contact_url = NULL;
-  gchar *drag_data = NULL;
-
-        
-  selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view));
-  model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
-    
-  if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
-      
-    gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 
-			1, &contact_name,
-			2, &contact_url, -1);
-
-    if (contact_name && contact_url) {
-      
-      drag_data = g_strdup_printf ("%s|%s", contact_name, contact_url);
-    
-      gtk_selection_data_set (selection_data,
-			      selection_data->target, 
-			      8,
-			      (const guchar *) drag_data,
-			      strlen (drag_data));
-      g_free (drag_data);
-    }
-  }
-  
-  g_free (contact_name);
-  g_free (contact_url);
-}
-
-
-/* The functions */
-void
-gnomemeeting_calls_history_window_populate ()
-{
-  GtkTreeIter iter;
-  GtkListStore *list_store = NULL;
-
-  gchar *gconf_key = NULL;
-  gchar **call_data = NULL;
-  
-  GSList *calls_list = NULL;
-
-  GmCallsHistoryWindow *chw = NULL;
-
-  chw = GnomeMeeting::Process ()->GetCallsHistoryWindow ();
-
-  for (int i = 0 ; i < MAX_VALUE_CALL ; i++) {
-    
-    switch (i) {
-
-    case RECEIVED_CALL:
-      list_store = chw->received_calls_list_store;
-      gconf_key =
-	g_strdup (USER_INTERFACE_KEY "calls_history_window/received_calls_history");
-      break;
-    case PLACED_CALL:
-      list_store = chw->given_calls_list_store;
-      gconf_key =
-	g_strdup (USER_INTERFACE_KEY "calls_history_window/placed_calls_history");
-      break;
-    case MISSED_CALL:
-      list_store = chw->missed_calls_list_store;
-      gconf_key =
-	g_strdup (USER_INTERFACE_KEY "calls_history_window/missed_calls_history");
-      break;
-    }
-
-    gtk_list_store_clear (list_store);
-    
-    calls_list = gconf_get_string_list (gconf_key);
-
-    while (calls_list && calls_list->data) {
-      
-      call_data = g_strsplit ((char *) calls_list->data, "|", 0);
-      
-      if (call_data) {
-	
-	gtk_list_store_append (list_store, &iter);
-	gtk_list_store_set (list_store,
-			    &iter,
-			    0, call_data [0],
-			    1, call_data [1],
-			    2, call_data [2],
-			    3, call_data [3],
-			    4, call_data [4],
-			    5, call_data [5],
-			    -1);
-      }
-      
-      g_strfreev (call_data);
-
-      calls_list = g_slist_next (calls_list);
-    }
-    
-    g_free (gconf_key);
-    g_slist_free (calls_list);
-  }
-}
-
-
-void
-gnomemeeting_calls_history_window_add_call (int i,
-					    const char *remote_user,
-					    const char *ip,
-					    const char *duration,
-					    const char *reason,
-					    const char *software)
-{
-  PString time;
-
-  gchar *gconf_key = NULL;
-  gchar *call_data = NULL;
-  
-  GSList *calls_list = NULL;
-  GSList *tmp = NULL;
-  
-  time = PTime ().AsString ("www dd MMM, hh:mm:ss");
-  
-  switch (i) {
-
-  case RECEIVED_CALL:
-    gconf_key =
-      g_strdup (USER_INTERFACE_KEY "calls_history_window/received_calls_history");
-    break;
-  case PLACED_CALL:
-    gconf_key =
-      g_strdup (USER_INTERFACE_KEY "calls_history_window/placed_calls_history");
-    break;
-  case MISSED_CALL:
-    gconf_key =
-      g_strdup (USER_INTERFACE_KEY "calls_history_window/missed_calls_history");
-    break;
-  }
-
-  
-  call_data =
-    g_strdup_printf ("%s|%s|%s|%s|%s|%s",
-		     (const char *) time ? (const char *) time : "",
-		     remote_user ? remote_user : "",
-		     ip ? ip : "",
-		     duration ? duration : "",
-		     reason ? reason : "",
-		     software ? software : "");
-  
-  calls_list = gconf_get_string_list (gconf_key);
-  calls_list = g_slist_append (calls_list, (gpointer) call_data);
-
-  while (g_slist_length (calls_list) > 100) {
-
-    tmp = g_slist_nth (calls_list, 0);
-    calls_list = g_slist_remove_link (calls_list, tmp);
-
-    g_slist_free_1 (tmp);
-  }
-  
-  gconf_set_string_list (gconf_key, calls_list);
-  
-  g_free (gconf_key);
-  g_slist_free (calls_list);
-}
-
-#define CLOSE_BUTTON_ID 0
-#define CLEAR_BUTTON_ID 1
-
-void
-gnomemeeting_calls_history_window_response_event (GtkDialog *dialog, gint id, gpointer window)
-{
-  switch (id) {
-    case CLOSE_BUTTON_ID:
-      gnomemeeting_window_hide (GTK_WIDGET (window));
-      break;
-    case CLEAR_BUTTON_ID:
-      gconf_set_string_list (USER_INTERFACE_KEY "calls_history_window/received_calls_history", NULL);
-      gconf_set_string_list (USER_INTERFACE_KEY "calls_history_window/placed_calls_history", NULL);
-      gconf_set_string_list (USER_INTERFACE_KEY "calls_history_window/missed_calls_history", NULL);
-      break;
-  }
-}
-
-GtkWidget *
-gnomemeeting_calls_history_window_new (GmCallsHistoryWindow *chw)
-{
-  GtkWidget *window = NULL;
-  GtkWidget *notebook = NULL;
-  GtkWidget *scr = NULL;
-  GtkWidget *label = NULL;
-  GtkWidget *tree_view = NULL;
-  GdkPixbuf *icon = NULL;
-  
-  GtkTreeViewColumn *column = NULL;
-  GtkCellRenderer *renderer = NULL;
-
-  GtkListStore *list_store [3];
-  
-  gchar *label_text [3] =
-    {N_("Received Calls"), N_("Placed Calls"), N_("Unanswered Calls")};
-  label_text [0] = gettext (label_text [0]);
-  label_text [1] = gettext (label_text [1]);
-  label_text [2] = gettext (label_text [2]);
-
-  static GtkTargetEntry dnd_targets [] =
-    {
-      {"text/plain", GTK_TARGET_SAME_APP, 0}
-    };
-
-  
-  window = gtk_dialog_new ();
-  gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CLEAR, CLEAR_BUTTON_ID);
-  gtk_dialog_add_button (GTK_DIALOG (window), GTK_STOCK_CLOSE, CLOSE_BUTTON_ID);
-  g_object_set_data_full (G_OBJECT (window), "window_name",
-			  g_strdup ("calls_history_window"), g_free);
-  
-  gtk_window_set_title (GTK_WINDOW (window), _("Calls History"));
-  gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER);
-  icon = gtk_widget_render_icon (GTK_WIDGET (window),
-				 GM_STOCK_CALLS_HISTORY,
-				 GTK_ICON_SIZE_MENU, NULL);
-  gtk_window_set_icon (GTK_WINDOW (window), icon);
-  g_object_unref (icon);
-
-  notebook = gtk_notebook_new ();
-  gtk_container_set_border_width (GTK_CONTAINER (notebook), 6);
-  gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), notebook,
-		      TRUE, TRUE, 0);
-
-  for (int i = 0 ; i < MAX_VALUE_CALL ; i++) {
-
-    label = gtk_label_new (N_(label_text [i]));
-    scr = gtk_scrolled_window_new (NULL, NULL);
-    gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scr), 
-				    GTK_POLICY_AUTOMATIC,
-				    GTK_POLICY_AUTOMATIC);
-
-    list_store [i] = 
-      gtk_list_store_new (6,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING,
-			  G_TYPE_STRING);
-    
-    tree_view = 
-      gtk_tree_view_new_with_model (GTK_TREE_MODEL (list_store [i]));
-    gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (tree_view), TRUE);
-    
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Date"),
-						       renderer,
-						       "text", 
-						       0,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Remote User"),
-						       renderer,
-						       "text", 
-						       1,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    g_object_set (G_OBJECT (renderer), "weight", "bold", NULL);
-        
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("URL"),
-						       renderer,
-						       "text", 
-						       2,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    gtk_tree_view_column_set_visible (column, false);
-
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Call Duration"),
-						       renderer,
-						       "text", 
-						       3,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    if (i == 2)
-      gtk_tree_view_column_set_visible (column, false);
-
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Call End Reason"),
-						       renderer,
-						       "text", 
-						       4,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
-    
-    renderer = gtk_cell_renderer_text_new ();
-    column = gtk_tree_view_column_new_with_attributes (_("Software"),
-						       renderer,
-						       "text", 
-						       5,
-						       NULL);
-    gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), column);
-    g_object_set (G_OBJECT (renderer), "style", PANGO_STYLE_ITALIC, NULL);
-	
-    
-    gtk_container_add (GTK_CONTAINER (scr), tree_view);
-    gtk_notebook_append_page (GTK_NOTEBOOK (notebook), scr, label);
-
-
-    /* Signal to call the person on the double-clicked row */
-    g_signal_connect (G_OBJECT (tree_view), "row_activated", 
-		      G_CALLBACK (contact_activated_cb), GINT_TO_POINTER (3));
-
-    /* The drag and drop information */
-    gtk_drag_source_set (GTK_WIDGET (tree_view),
-			 GDK_BUTTON1_MASK, dnd_targets, 1,
-			 GDK_ACTION_COPY);
-    g_signal_connect (G_OBJECT (tree_view), "drag_data_get",
-		      G_CALLBACK (dnd_drag_data_get_cb), NULL);
-
-    /* Right-click on a contact */
-    g_signal_connect (G_OBJECT (tree_view), "event_after",
-		    G_CALLBACK (contact_clicked_cb), GINT_TO_POINTER (1));
-  }
-
-  chw->received_calls_list_store = list_store [0];
-  chw->given_calls_list_store = list_store [1];
-  chw->missed_calls_list_store = list_store [2];
-
-  g_signal_connect_swapped (GTK_OBJECT (window), 
-			    "response", 
-			    G_CALLBACK (gnomemeeting_calls_history_window_response_event),
-			    (gpointer) window);
-
-  g_signal_connect_swapped (GTK_OBJECT (window), 
-			    "delete-event", 
-			    G_CALLBACK (gtk_widget_hide_on_delete),
-			    (gpointer) window);
-
-  
-  /* Fill in the window with old calls */
-  gnomemeeting_calls_history_window_populate ();
-
-  
-  gtk_widget_show_all (GTK_WIDGET (GTK_DIALOG (window)->vbox));
-  
-  return window;
-}
-
-
 GtkWidget *
 gnomemeeting_pc_to_phone_window_new ()
 {
diff -urN gnomemeeting-cvs-20040127.CVS/src/tools.h gnomemeeting-cvs-20040127.CVS.patched/src/tools.h
--- gnomemeeting-cvs-20040127.CVS/src/tools.h	2004-01-25 18:27:52.000000000 +0100
+++ gnomemeeting-cvs-20040127.CVS.patched/src/tools.h	2004-01-27 12:10:03.000000000 +0100
@@ -42,40 +42,6 @@
 
 #include "common.h"
 
-enum {
-  RECEIVED_CALL,
-  PLACED_CALL,
-  MISSED_CALL,
-  MAX_VALUE_CALL // hackish... sorry... just keep it last
-};
-
-/* The functions  */
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Build the calls history window and returns a pointer to it.
- * PRE          :  /
- */
-GtkWidget *gnomemeeting_calls_history_window_new (GmCallsHistoryWindow *);
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Populate the calls history window.
- * PRE          :  /
- */
-void gnomemeeting_calls_history_window_populate ();
-
-
-/* DESCRIPTION  :  /
- * BEHAVIOR     :  Add a call to the calls history window.
- * PRE          :  /
- */
-void gnomemeeting_calls_history_window_add_call (int,
-						 const char *, 
-						 const char *,
-						 const char *,
-						 const char *,
-						 const char *);
-
 /* DESCRIPTION  :  /
  * BEHAVIOR     :  Build the log window and returns it.
  * PRE          :  /
diff -ur gnomemeeting-cvs-20040126.CVS/src/chat_window.cpp gnomemeeting-cvs-20040126.CVS.patched/src/chat_window.cpp
--- gnomemeeting-cvs-20040126.CVS/src/chat_window.cpp	2004-01-22 22:07:29.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/chat_window.cpp	2004-01-26 11:19:01.000000000 +0100
@@ -54,6 +54,16 @@
 #include "gtk-text-view-addon.h"
 #include "gtk_menu_extensions.h"
 
+struct _GmTextChatPrivate
+{
+  GtkWidget     *text_view;
+  GtkTextBuffer *text_buffer;
+  gboolean	 something_typed;
+  gchar       	 *begin_msg;
+};
+
+
+
 extern GtkWidget *gm;
 
 
@@ -185,10 +195,10 @@
 
   gw = GnomeMeeting::Process ()->GetMainWindow ();
   
-  gtk_text_buffer_get_start_iter (chat->text_buffer, &start_iter);
-  gtk_text_buffer_get_end_iter (chat->text_buffer, &end_iter);
+  gtk_text_buffer_get_start_iter (chat->internal->text_buffer, &start_iter);
+  gtk_text_buffer_get_end_iter (chat->internal->text_buffer, &end_iter);
 
-  gtk_text_buffer_delete (chat->text_buffer, &start_iter, &end_iter);
+  gtk_text_buffer_delete (chat->internal->text_buffer, &start_iter, &end_iter);
 
   gtk_menu_set_sensitive (gw->main_menu, "clear_text_chat", FALSE);
 }
@@ -196,11 +206,11 @@
 void
 gnomemeeting_text_chat_call_start_notification (void)
 {
-  GmTextChat *chat = NULL;
+  GmTextChatPrivate *chat = NULL;
   GmWindow *gw = NULL;
 
   gw = GnomeMeeting::Process ()->GetMainWindow ();
-  chat = GnomeMeeting::Process ()->GetTextChat ();
+  chat = GnomeMeeting::Process ()->GetTextChat ()->internal;
 	
   // find the time at which the event occured
   time_t *timeptr;
@@ -227,7 +237,7 @@
 gnomemeeting_text_chat_call_stop_notification (void)
 {
   GtkTextIter iter;
-  GmTextChat *chat = NULL;
+  GmTextChatPrivate *chat = NULL;
   GmWindow *gw = NULL;
   gchar *text = NULL;
 
@@ -246,7 +256,7 @@
 
   // displays the message
   gw = GnomeMeeting::Process ()->GetMainWindow ();
-  chat = GnomeMeeting::Process ()->GetTextChat ();
+  chat = GnomeMeeting::Process ()->GetTextChat ()->internal;
   gtk_text_buffer_get_end_iter (chat->text_buffer, &iter);
 
   if (chat->something_typed == TRUE)
@@ -266,11 +276,11 @@
   GtkTextIter iter;
   GtkTextMark *mark;
   
-  GmTextChat *chat = NULL;
+  GmTextChatPrivate *chat = NULL;
   GmWindow *gw = NULL;
 
   gw = GnomeMeeting::Process ()->GetMainWindow ();
-  chat = GnomeMeeting::Process ()->GetTextChat ();
+  chat = GnomeMeeting::Process ()->GetTextChat ()->internal ;
 
   gtk_text_buffer_get_end_iter (chat->text_buffer, &iter);
 
@@ -337,36 +347,36 @@
   gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scr),
 				  GTK_POLICY_AUTOMATIC,
 				  GTK_POLICY_ALWAYS);
-
-  chat->begin_msg = NULL;
-  chat->something_typed = FALSE;
-
-  chat->text_view = gtk_text_view_new_with_regex ();
-  gtk_text_view_set_editable (GTK_TEXT_VIEW (chat->text_view), FALSE);
-  gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (chat->text_view),
+  chat->internal = new _GmTextChatPrivate ();
+  chat->internal->begin_msg = NULL;
+  chat->internal->something_typed = FALSE;
+
+  chat->internal->text_view = gtk_text_view_new_with_regex ();
+  gtk_text_view_set_editable (GTK_TEXT_VIEW (chat->internal->text_view), FALSE);
+  gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (chat->internal->text_view),
 			       GTK_WRAP_WORD);
 
-  chat->text_buffer = 
-    gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->text_view));
+  chat->internal->text_buffer = 
+    gtk_text_view_get_buffer (GTK_TEXT_VIEW (chat->internal->text_view));
 
-  gtk_text_buffer_get_end_iter (chat->text_buffer, &iter);
-  gtk_text_view_set_cursor_visible  (GTK_TEXT_VIEW (chat->text_view), false);
+  gtk_text_buffer_get_end_iter (chat->internal->text_buffer, &iter);
+  gtk_text_view_set_cursor_visible  (GTK_TEXT_VIEW (chat->internal->text_view), false);
 
-  mark = gtk_text_buffer_create_mark (chat->text_buffer, 
+  mark = gtk_text_buffer_create_mark (chat->internal->text_buffer, 
 				      "current-position", &iter, FALSE);
 
-  gtk_text_buffer_create_tag (chat->text_buffer, "primary-user",
+  gtk_text_buffer_create_tag (chat->internal->text_buffer, "primary-user",
 			      "foreground", "red", 
 			      "weight", 900, NULL);
 
-  gtk_text_buffer_create_tag (chat->text_buffer,
+  gtk_text_buffer_create_tag (chat->internal->text_buffer,
 			      "secondary-user",
 			      "foreground", "darkblue", 
 			      "weight", 900, NULL);
 
   
   /* Create the various tags for the different urls types */
-  regex_tag = gtk_text_buffer_create_tag (chat->text_buffer,
+  regex_tag = gtk_text_buffer_create_tag (chat->internal->text_buffer,
 					  "uri-http",
 					  "foreground", "blue",
 					  NULL);
@@ -383,7 +393,7 @@
   }
 
   
-  regex_tag = gtk_text_buffer_create_tag (chat->text_buffer, "uri-h323",
+  regex_tag = gtk_text_buffer_create_tag (chat->internal->text_buffer, "uri-h323",
 					  "foreground", "pink",
 					  NULL);
   if (gtk_text_tag_set_regex (regex_tag,
@@ -398,14 +408,14 @@
 				       NULL);
   }
 
-  regex_tag = gtk_text_buffer_create_tag (chat->text_buffer, "smileys",
+  regex_tag = gtk_text_buffer_create_tag (chat->internal->text_buffer, "smileys",
 					  "foreground", "grey",
 					  NULL);
   if (gtk_text_tag_set_regex (regex_tag,
 			      "(:[-]?(\\)|\\(|o|O|p|P|D|\\||/)|\\}:(\\(|\\))|\\|[-]?(\\(|\\))|:'\\(|:\\[|:-(\\.|\\*|x)|;[-]?\\)|(8|B)[-]?\\)|X(\\(|\\||\\))|\\((\\.|\\|)\\)|x\\*O)"))
     gtk_text_tag_set_regex_display (regex_tag, gtk_text_buffer_insert_smiley);
 
-  regex_tag = gtk_text_buffer_create_tag (chat->text_buffer, "latex",
+  regex_tag = gtk_text_buffer_create_tag (chat->internal->text_buffer, "latex",
 					  "foreground", "grey",
 					  NULL);
   if (gtk_text_tag_set_regex (regex_tag,
@@ -417,7 +427,7 @@
   /* */
   frame = gtk_frame_new (NULL);
   gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
-  gtk_container_add (GTK_CONTAINER (scr), chat->text_view);
+  gtk_container_add (GTK_CONTAINER (scr), chat->internal->text_view);
   gtk_container_add (GTK_CONTAINER (frame), scr);
   
   gtk_table_attach (GTK_TABLE (table), GTK_WIDGET (frame), 
@@ -448,7 +458,7 @@
 		    0, 0);
 
   g_signal_connect (GTK_OBJECT (entry), "activate",
-		    G_CALLBACK (chat_entry_activate), chat->text_view);
+		    G_CALLBACK (chat_entry_activate), chat->internal->text_view);
 
   return chat_window;
 }
diff -ur gnomemeeting-cvs-20040126.CVS/src/chat_window.h gnomemeeting-cvs-20040126.CVS.patched/src/chat_window.h
--- gnomemeeting-cvs-20040126.CVS/src/chat_window.h	2004-01-20 12:46:57.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/chat_window.h	2004-01-26 09:42:08.000000000 +0100
@@ -46,6 +46,14 @@
 
 G_BEGIN_DECLS
 
+typedef struct _GmTextChat GmTextChat;
+typedef struct _GmTextChatPrivate GmTextChatPrivate;
+
+struct _GmTextChat
+{
+  GtkWidget *window;
+  GmTextChatPrivate *internal;
+};
 
 /* DESCRIPTION  :  /
  * BEHAVIOR     :  Initializes the text chat view.
diff -ur gnomemeeting-cvs-20040126.CVS/src/common.h gnomemeeting-cvs-20040126.CVS.patched/src/common.h
--- gnomemeeting-cvs-20040126.CVS/src/common.h	2004-01-24 23:27:39.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/common.h	2004-01-26 09:29:23.000000000 +0100
@@ -120,7 +120,6 @@
 typedef struct _GmPrefWindow GmPrefWindow;
 typedef struct _GmLdapWindow GmLdapWindow;
 typedef struct _GmLdapWindowPage GmLdapWindowPage;
-typedef struct _GmTextChat GmTextChat;
 typedef struct _GmDruidWindow GmDruidWindow;
 typedef struct _GmCallsHistoryWindow GmCallsHistoryWindow;
 typedef struct _GmRtpData GmRtpData;
@@ -156,14 +155,6 @@
 } ControlPanelSection;
 
 
-struct _GmTextChat
-{
-  GtkWidget     *text_view;
-  GtkTextBuffer *text_buffer;
-  gboolean	something_typed;
-  gchar		*begin_msg;
-};
-
 
 struct _GmRtpData
 {
diff -ur gnomemeeting-cvs-20040126.CVS/src/endpoint.h gnomemeeting-cvs-20040126.CVS.patched/src/endpoint.h
--- gnomemeeting-cvs-20040126.CVS/src/endpoint.h	2004-01-24 23:27:40.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/endpoint.h	2004-01-26 09:32:01.000000000 +0100
@@ -43,6 +43,7 @@
 #include "../config.h"
 
 #include "common.h"
+#include "chat_window.h"
 
 #ifdef HAS_IXJ
 #include <ixjlid.h>
diff -ur gnomemeeting-cvs-20040126.CVS/src/gnomemeeting.h gnomemeeting-cvs-20040126.CVS.patched/src/gnomemeeting.h
--- gnomemeeting-cvs-20040126.CVS/src/gnomemeeting.h	2004-01-20 12:46:57.000000000 +0100
+++ gnomemeeting-cvs-20040126.CVS.patched/src/gnomemeeting.h	2004-01-26 09:32:37.000000000 +0100
@@ -40,6 +40,7 @@
 #define _GNOMEMEETING_H_
 
 #include "common.h"
+#include "chat_window.h"
 #include "endpoint.h"
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]