diff --git a/src/sbbs3/gtkchat/GNUmakefile b/src/sbbs3/gtkchat/GNUmakefile
index cea3f237999f539c77fd64b5e6653b8b9f89a590..c5ef814f5eeac21065407369c0f1c8c39b03c5b1 100644
--- a/src/sbbs3/gtkchat/GNUmakefile
+++ b/src/sbbs3/gtkchat/GNUmakefile
@@ -22,11 +22,10 @@ endif
 
 vpath %.c ..
 
-CFLAGS	+=	-I.. -I../../comio $(SMBLIB_CFLAGS) $(HASH_CFLAGS) $(ENCODE_CFLAGS) $(XPDEV-MT_CFLAGS) $(JS_CFLAGS) $(CRYPT_CFLAGS) `pkg-config gtk+-2.0 --cflags`
+CFLAGS	+=	-I.. -I../../comio $(SMBLIB_CFLAGS) $(HASH_CFLAGS) $(ENCODE_CFLAGS) $(XPDEV-MT_CFLAGS) $(JS_CFLAGS) $(CRYPT_CFLAGS) `pkg-config gtk+-3.0 --cflags`
 LDFLAGS	+=	$(SMBLIB_LDFLAGS) $(ENCODE_LDFLAGS) $(HASH_LDFLAGS) $(XPDEV-MT_LDFLAGS) $(MT_LDFLAGS)
-EXTRA_LIBS += `pkg-config gtk+-2.0 --libs`
+EXTRA_LIBS += `pkg-config gtk+-3.0 --libs`
 
 $(GTKCHAT): $(OBJS)
 	@echo Linking $@
 	$(QUIET)$(CC) $(LDFLAGS) $(OBJS) -o $@ $(EXTRA_LIBS) $(SMBLIB_LIBS) $(ENCODE_LIBS) $(HASH_LIBS) $(XPDEV-MT_LIBS)
-	$(QUIET)cd $(EXEODIR) && ln -fs ../gtk-chat.glade .
diff --git a/src/sbbs3/gtkchat/callbacks.c b/src/sbbs3/gtkchat/callbacks.c
index 5f3e5344e1f48b85e5f097e11233f49024ec11ae..0de97d6454570af042825019a6b766d83bcf7f1d 100644
--- a/src/sbbs3/gtkchat/callbacks.c
+++ b/src/sbbs3/gtkchat/callbacks.c
@@ -65,6 +65,7 @@ gint
 connect_wait(gpointer data)
 {
 	GtkWidget *MainWindow;
+	gint x, y;
 
 	switch(chat_check_remote()) {
 		case -1:	/* Error */
@@ -74,8 +75,10 @@ connect_wait(gpointer data)
 		case 1:		/* Waiting for remote */
 			return(TRUE);
 		case 2:		/* Chat active */
-			MainWindow = create_MainWindow ();
+			gtk_window_get_position(data, &x, &y);
 			gtk_widget_hide (GTK_WIDGET(data));
+			MainWindow = create_MainWindow ();
+			gtk_window_move(GTK_WINDOW(MainWindow), x, y);
 			gtk_widget_show (MainWindow);
 			return(FALSE);
 	}
@@ -84,7 +87,7 @@ connect_wait(gpointer data)
 
 
 void
-on_MainWindow_destroy                  (GtkObject       *object,
+on_MainWindow_destroy                  (GObject       *object,
                                         gpointer         user_data)
 {
 	chat_close();
@@ -102,7 +105,7 @@ on_LocalText_key_press_event           (GtkWidget       *widget,
 	gsize	inbytes;
 	gsize	outbytes;
 
-	if(event->keyval==GDK_BackSpace || event->keyval==GDK_Delete) {
+	if(event->keyval==GDK_KEY_BackSpace || event->keyval==GDK_KEY_Delete) {
 		GtkTextIter		start;
 		GtkTextIter		end;
 
@@ -134,7 +137,7 @@ on_LocalText_key_press_event           (GtkWidget       *widget,
 		);
 		g_free(outstr);
 	}
-	if(event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) {
+	if(event->keyval == GDK_KEY_Return || event->keyval == GDK_KEY_KP_Enter) {
 		instr[1]=0;
 		instr[0]='\n';
 		chat_write_byte('\r');
diff --git a/src/sbbs3/gtkchat/callbacks.h b/src/sbbs3/gtkchat/callbacks.h
index 944a5a0adc2600ed7f8d11ee0c39caa345edfe1f..18796e0cd0b6481dbe479a6e227aab59dd678334 100644
--- a/src/sbbs3/gtkchat/callbacks.h
+++ b/src/sbbs3/gtkchat/callbacks.h
@@ -2,7 +2,7 @@
 
 
 void
-on_MainWindow_destroy                  (GtkObject       *object,
+on_MainWindow_destroy                  (GObject       *object,
                                         gpointer         user_data);
 
 gboolean
diff --git a/src/sbbs3/gtkchat/chatfuncs.c b/src/sbbs3/gtkchat/chatfuncs.c
index 1c029f4e2e3567e6e5d6d61b1219978cb2d64ecb..cccaac1529978a6e68331d28a7b4b43d4d2fac47 100644
--- a/src/sbbs3/gtkchat/chatfuncs.c
+++ b/src/sbbs3/gtkchat/chatfuncs.c
@@ -172,9 +172,13 @@ int chat_write_byte(unsigned char ch)
 
 int chat_close(void)
 {
-	if(in != -1)
+	if(in != -1) {
 		close(in);
-	if(out != -1)
+		in = -1;
+	}
+	if(out != -1) {
 		close(out);
+		out = -1;
+	}
 	return(togglechat(FALSE));
 }
diff --git a/src/sbbs3/gtkchat/gtk-chat.glade b/src/sbbs3/gtkchat/gtk-chat.glade
index 02c3efb0116ca37ebeb8c918ce52293c72226954..440336d17ca208d91d7c4ba482785266ef548bf3 100644
--- a/src/sbbs3/gtkchat/gtk-chat.glade
+++ b/src/sbbs3/gtkchat/gtk-chat.glade
@@ -1,216 +1,136 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
-<glade-interface>
-
-<widget class="GtkWindow" id="MainWindow">
-  <property name="width_request">400</property>
-  <property name="height_request">300</property>
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">Synchronet Sysop Chat</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="icon_name">stock_help-chat</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_UTILITY</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <signal name="destroy" handler="on_MainWindow_destroy" last_modification_time="Wed, 08 Mar 2006 07:15:35 GMT"/>
-
-  <child>
-    <widget class="GtkVPaned" id="SplitPane">
-      <property name="visible">True</property>
-      <property name="can_focus">True</property>
-      <property name="position">148</property>
-
-      <child>
-	<widget class="GtkTextView" id="RemoteText">
-	  <property name="visible">True</property>
-	  <property name="tooltip" translatable="yes">Remote Text Window</property>
-	  <property name="editable">False</property>
-	  <property name="overwrite">False</property>
-	  <property name="accepts_tab">True</property>
-	  <property name="justification">GTK_JUSTIFY_LEFT</property>
-	  <property name="wrap_mode">GTK_WRAP_WORD</property>
-	  <property name="cursor_visible">True</property>
-	  <property name="pixels_above_lines">0</property>
-	  <property name="pixels_below_lines">0</property>
-	  <property name="pixels_inside_wrap">0</property>
-	  <property name="left_margin">0</property>
-	  <property name="right_margin">0</property>
-	  <property name="indent">0</property>
-	  <property name="text" translatable="yes"></property>
-	</widget>
-	<packing>
-	  <property name="shrink">True</property>
-	  <property name="resize">False</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkTextView" id="LocalText">
-	  <property name="visible">True</property>
-	  <property name="can_focus">True</property>
-	  <property name="has_focus">True</property>
-	  <property name="editable">False</property>
-	  <property name="overwrite">False</property>
-	  <property name="accepts_tab">True</property>
-	  <property name="justification">GTK_JUSTIFY_LEFT</property>
-	  <property name="wrap_mode">GTK_WRAP_WORD</property>
-	  <property name="cursor_visible">True</property>
-	  <property name="pixels_above_lines">0</property>
-	  <property name="pixels_below_lines">0</property>
-	  <property name="pixels_inside_wrap">0</property>
-	  <property name="left_margin">0</property>
-	  <property name="right_margin">0</property>
-	  <property name="indent">0</property>
-	  <property name="text" translatable="yes"></property>
-	  <signal name="key_press_event" handler="on_LocalText_key_press_event" last_modification_time="Wed, 08 Mar 2006 07:13:25 GMT"/>
-	</widget>
-	<packing>
-	  <property name="shrink">True</property>
-	  <property name="resize">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-<widget class="GtkWindow" id="WaitWindow">
-  <property name="visible">True</property>
-  <property name="title" translatable="yes">Waiting for user</property>
-  <property name="type">GTK_WINDOW_TOPLEVEL</property>
-  <property name="window_position">GTK_WIN_POS_NONE</property>
-  <property name="modal">False</property>
-  <property name="resizable">True</property>
-  <property name="destroy_with_parent">False</property>
-  <property name="decorated">True</property>
-  <property name="skip_taskbar_hint">False</property>
-  <property name="skip_pager_hint">False</property>
-  <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
-  <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
-  <property name="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-
-  <child>
-    <widget class="GtkFixed" id="fixed1">
-      <property name="width_request">400</property>
-      <property name="height_request">40</property>
-      <property name="visible">True</property>
-
-      <child>
-	<widget class="GtkLabel" id="MessageLabel">
-	  <property name="width_request">400</property>
-	  <property name="height_request">16</property>
-	  <property name="visible">True</property>
-	  <property name="label" translatable="yes">Waiting for user to connect.</property>
-	  <property name="use_underline">False</property>
-	  <property name="use_markup">False</property>
-	  <property name="justify">GTK_JUSTIFY_LEFT</property>
-	  <property name="wrap">False</property>
-	  <property name="selectable">False</property>
-	  <property name="xalign">0.5</property>
-	  <property name="yalign">0.5</property>
-	  <property name="xpad">0</property>
-	  <property name="ypad">0</property>
-	  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-	  <property name="width_chars">-1</property>
-	  <property name="single_line_mode">False</property>
-	  <property name="angle">0</property>
-	</widget>
-	<packing>
-	  <property name="x">0</property>
-	  <property name="y">0</property>
-	</packing>
-      </child>
-
-      <child>
-	<widget class="GtkButton" id="CancelButton">
-	  <property name="width_request">88</property>
-	  <property name="height_request">24</property>
-	  <property name="visible">True</property>
-	  <property name="can_focus">True</property>
-	  <property name="relief">GTK_RELIEF_NORMAL</property>
-	  <property name="focus_on_click">True</property>
-	  <signal name="clicked" handler="on_CancelButton_clicked" last_modification_time="Thu, 09 Mar 2006 02:41:33 GMT"/>
-
-	  <child>
-	    <widget class="GtkAlignment" id="alignment1">
-	      <property name="visible">True</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xscale">0</property>
-	      <property name="yscale">0</property>
-	      <property name="top_padding">0</property>
-	      <property name="bottom_padding">0</property>
-	      <property name="left_padding">0</property>
-	      <property name="right_padding">0</property>
-
-	      <child>
-		<widget class="GtkHBox" id="hbox1">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">2</property>
-
-		  <child>
-		    <widget class="GtkImage" id="image1">
-		      <property name="visible">True</property>
-		      <property name="stock">gtk-cancel</property>
-		      <property name="icon_size">4</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkLabel" id="label2">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">Cancel</property>
-		      <property name="use_underline">True</property>
-		      <property name="use_markup">False</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-		</widget>
-	      </child>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="x">160</property>
-	  <property name="y">16</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-</glade-interface>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
+<!--*- mode: xml -*-->
+<interface>
+  <requires lib="gtk+" version="3.0"/>
+  <object class="GtkWindow" id="MainWindow">
+    <property name="width_request">400</property>
+    <property name="height_request">300</property>
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Synchronet Sysop Chat</property>
+    <property name="icon_name">stock_help-chat</property>
+    <property name="type_hint">utility</property>
+    <signal name="destroy" handler="on_MainWindow_destroy" swapped="no"/>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <object class="GtkPaned" id="SplitPane">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="orientation">vertical</property>
+        <property name="position">148</property>
+        <child>
+          <object class="GtkTextView" id="RemoteText">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="editable">False</property>
+            <property name="wrap_mode">word</property>
+          </object>
+          <packing>
+            <property name="resize">False</property>
+            <property name="shrink">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkTextView" id="LocalText">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="has_focus">True</property>
+            <property name="editable">False</property>
+            <property name="wrap_mode">word</property>
+            <signal name="key-press-event" handler="on_LocalText_key_press_event" swapped="no"/>
+          </object>
+          <packing>
+            <property name="resize">True</property>
+            <property name="shrink">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+  <object class="GtkWindow" id="WaitWindow">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">Waiting for user</property>
+    <child>
+      <placeholder/>
+    </child>
+    <child>
+      <object class="GtkFixed" id="fixed1">
+        <property name="width_request">400</property>
+        <property name="height_request">40</property>
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkLabel" id="MessageLabel">
+            <property name="width_request">400</property>
+            <property name="height_request">16</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Waiting for user to connect.</property>
+            <property name="xalign">0.5</property>
+            <property name="yalign">0.5</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkButton" id="CancelButton">
+            <property name="width_request">88</property>
+            <property name="height_request">24</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">False</property>
+            <signal name="clicked" handler="on_CancelButton_clicked" swapped="no"/>
+            <child>
+              <object class="GtkAlignment" id="alignment1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="xscale">0</property>
+                <property name="yscale">0</property>
+                <child>
+                  <object class="GtkBox" id="hbox1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="spacing">2</property>
+                    <child>
+                      <object class="GtkImage" id="image1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="stock">gtk-cancel</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Cancel</property>
+                        <property name="use_underline">True</property>
+                        <property name="xalign">0.5</property>
+                        <property name="yalign">0.5</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="x">160</property>
+            <property name="y">16</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/src/sbbs3/gtkchat/interface.c b/src/sbbs3/gtkchat/interface.c
index 99e4938c8cdc7f0cc11672739cf24bd8d24231d4..e56ed6abf43a53965130a78844c5ad6798ff9574 100644
--- a/src/sbbs3/gtkchat/interface.c
+++ b/src/sbbs3/gtkchat/interface.c
@@ -13,7 +13,7 @@
 
 #define GLADE_HOOKUP_OBJECT(component,widget,name) \
   g_object_set_data_full (G_OBJECT (component), name, \
-    gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
+    g_object_ref (widget), (GDestroyNotify) g_object_unref)
 
 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
   g_object_set_data (G_OBJECT (component), name, widget)
@@ -27,17 +27,13 @@ create_MainWindow (void)
   GtkWidget *SplitPane;
   GtkWidget *RemoteText;
   GtkWidget *LocalText;
-  GtkTooltips *tooltips;
-
-  tooltips = gtk_tooltips_new ();
 
   MainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
   gtk_widget_set_size_request (MainWindow, 400, 300);
   gtk_window_set_title (GTK_WINDOW (MainWindow), "Synchronet Sysop Chat");
-  gtk_window_set_icon_name (GTK_WINDOW (MainWindow), "stock_help-chat");
-  gtk_window_set_type_hint (GTK_WINDOW (MainWindow), GDK_WINDOW_TYPE_HINT_UTILITY);
+  gtk_window_set_icon_name (GTK_WINDOW (MainWindow), "user-available");
 
-  SplitPane = gtk_vpaned_new ();
+  SplitPane = gtk_paned_new (GTK_ORIENTATION_VERTICAL);
   gtk_widget_show (SplitPane);
   gtk_container_add (GTK_CONTAINER (MainWindow), SplitPane);
   gtk_paned_set_position (GTK_PANED (SplitPane), 148);
@@ -45,8 +41,8 @@ create_MainWindow (void)
   RemoteText = gtk_text_view_new ();
   gtk_widget_show (RemoteText);
   gtk_paned_pack1 (GTK_PANED (SplitPane), RemoteText, FALSE, TRUE);
-  GTK_WIDGET_UNSET_FLAGS (RemoteText, GTK_CAN_FOCUS);
-  gtk_tooltips_set_tip (tooltips, RemoteText, "Remote Text Window", NULL);
+  gtk_widget_set_can_focus (RemoteText, FALSE);
+  gtk_widget_set_tooltip_text (RemoteText, "Remote Text Window");
   gtk_text_view_set_editable (GTK_TEXT_VIEW (RemoteText), FALSE);
   gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (RemoteText), GTK_WRAP_WORD);
 
@@ -68,11 +64,10 @@ create_MainWindow (void)
   GLADE_HOOKUP_OBJECT (MainWindow, SplitPane, "SplitPane");
   GLADE_HOOKUP_OBJECT (MainWindow, RemoteText, "RemoteText");
   GLADE_HOOKUP_OBJECT (MainWindow, LocalText, "LocalText");
-  GLADE_HOOKUP_OBJECT_NO_REF (MainWindow, tooltips, "tooltips");
 
   gtk_widget_grab_focus (LocalText);
 
-  gtk_timeout_add(50, get_from_remote, RemoteText);
+  g_timeout_add(50, get_from_remote, RemoteText);
 
   return MainWindow;
 }
@@ -83,13 +78,10 @@ create_WaitWindow (void)
   GtkWidget *WaitWindow;
   GtkWidget *fixed1;
   GtkWidget *CancelButton;
-  GtkWidget *alignment1;
-  GtkWidget *hbox1;
-  GtkWidget *image1;
-  GtkWidget *label2;
 
   WaitWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  gtk_window_set_title (GTK_WINDOW (WaitWindow), "Waiting for user");
+  gtk_window_set_title (GTK_WINDOW (WaitWindow), "Synchronet Sysop Chat");
+  gtk_window_set_icon_name (GTK_WINDOW (WaitWindow), "user-away");
 
   fixed1 = gtk_fixed_new ();
   gtk_widget_show (fixed1);
@@ -101,27 +93,11 @@ create_WaitWindow (void)
   gtk_fixed_put (GTK_FIXED (fixed1), MessageLabel, 0, 0);
   gtk_widget_set_size_request (MessageLabel, 400, 16);
 
-  CancelButton = gtk_button_new ();
+  CancelButton = gtk_widget_new (GTK_TYPE_BUTTON, "label", "_Cancel", "use-underline", TRUE, "xalign", 0.5, "yalign", 0.5, NULL);
   gtk_widget_show (CancelButton);
   gtk_fixed_put (GTK_FIXED (fixed1), CancelButton, 160, 16);
   gtk_widget_set_size_request (CancelButton, 88, 24);
 
-  alignment1 = gtk_alignment_new (0.5, 0.5, 0, 0);
-  gtk_widget_show (alignment1);
-  gtk_container_add (GTK_CONTAINER (CancelButton), alignment1);
-
-  hbox1 = gtk_hbox_new (FALSE, 2);
-  gtk_widget_show (hbox1);
-  gtk_container_add (GTK_CONTAINER (alignment1), hbox1);
-
-  image1 = gtk_image_new_from_stock ("gtk-cancel", GTK_ICON_SIZE_BUTTON);
-  gtk_widget_show (image1);
-  gtk_box_pack_start (GTK_BOX (hbox1), image1, FALSE, FALSE, 0);
-
-  label2 = gtk_label_new_with_mnemonic ("Cancel");
-  gtk_widget_show (label2);
-  gtk_box_pack_start (GTK_BOX (hbox1), label2, FALSE, FALSE, 0);
-
   g_signal_connect ((gpointer) CancelButton, "clicked",
                     G_CALLBACK (on_CancelButton_clicked),
                     NULL);
@@ -131,12 +107,8 @@ create_WaitWindow (void)
   GLADE_HOOKUP_OBJECT (WaitWindow, fixed1, "fixed1");
   GLADE_HOOKUP_OBJECT (WaitWindow, MessageLabel, "MessageLabel");
   GLADE_HOOKUP_OBJECT (WaitWindow, CancelButton, "CancelButton");
-  GLADE_HOOKUP_OBJECT (WaitWindow, alignment1, "alignment1");
-  GLADE_HOOKUP_OBJECT (WaitWindow, hbox1, "hbox1");
-  GLADE_HOOKUP_OBJECT (WaitWindow, image1, "image1");
-  GLADE_HOOKUP_OBJECT (WaitWindow, label2, "label2");
 
-  gtk_timeout_add(50, connect_wait, WaitWindow);
+  g_timeout_add(50, connect_wait, WaitWindow);
   return WaitWindow;
 }
 
diff --git a/src/sbbs3/gtkchat/main.c b/src/sbbs3/gtkchat/main.c
index 0600067aa04d997e17699fcb82b23cf587cdc3f3..d80bda8ae582cb85549db877d644ed7e9f3fe845 100644
--- a/src/sbbs3/gtkchat/main.c
+++ b/src/sbbs3/gtkchat/main.c
@@ -1,4 +1,5 @@
 #include <stdlib.h>
+#include <locale.h>
 
 #include <gtk/gtk.h>
 
@@ -22,7 +23,7 @@ main (int argc, char *argv[])
   char		*ctrl_dir;
   GtkWidget *WaitWindow;
 
-  gtk_set_locale ();
+  setlocale(LC_ALL, "");
   gtk_init (&argc, &argv);
 
 /*  add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps"); */
diff --git a/src/sbbs3/gtkchat/support.c b/src/sbbs3/gtkchat/support.c
index 601777a1164102d853be394bc2515d57706667c7..d59de4196a953af431da2252b64977b99319f365 100644
--- a/src/sbbs3/gtkchat/support.c
+++ b/src/sbbs3/gtkchat/support.c
@@ -19,7 +19,7 @@ lookup_widget                          (GtkWidget       *widget,
       if (GTK_IS_MENU (widget))
         parent = gtk_menu_get_attach_widget (GTK_MENU (widget));
       else
-        parent = widget->parent;
+        parent = gtk_widget_get_parent(widget);
       if (!parent)
         parent = (GtkWidget*) g_object_get_data (G_OBJECT (widget), "GladeParentKey");
       if (parent == NULL)