diff src/gui_gtk.c @ 2275:e4d849f4df03 vim73

Remove the old and not well supported GTK 1 code. (James Vega)
author Bram Moolenaar <bram@vim.org>
date Fri, 25 Jun 2010 05:37:59 +0200
parents 89dc68c0ab6f
children 6f63294a1781
line wrap: on
line diff
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -62,53 +62,6 @@
 # include <gnome.h>
 #endif
 
-#if defined(FEAT_GUI_DIALOG) && !defined(HAVE_GTK2)
-# include "../pixmaps/alert.xpm"
-# include "../pixmaps/error.xpm"
-# include "../pixmaps/generic.xpm"
-# include "../pixmaps/info.xpm"
-# include "../pixmaps/quest.xpm"
-#endif
-
-#if defined(FEAT_TOOLBAR) && !defined(HAVE_GTK2)
-/*
- * Icons used by the toolbar code.
- */
-#include "../pixmaps/tb_new.xpm"
-#include "../pixmaps/tb_open.xpm"
-#include "../pixmaps/tb_close.xpm"
-#include "../pixmaps/tb_save.xpm"
-#include "../pixmaps/tb_print.xpm"
-#include "../pixmaps/tb_cut.xpm"
-#include "../pixmaps/tb_copy.xpm"
-#include "../pixmaps/tb_paste.xpm"
-#include "../pixmaps/tb_find.xpm"
-#include "../pixmaps/tb_find_next.xpm"
-#include "../pixmaps/tb_find_prev.xpm"
-#include "../pixmaps/tb_find_help.xpm"
-#include "../pixmaps/tb_exit.xpm"
-#include "../pixmaps/tb_undo.xpm"
-#include "../pixmaps/tb_redo.xpm"
-#include "../pixmaps/tb_help.xpm"
-#include "../pixmaps/tb_macro.xpm"
-#include "../pixmaps/tb_make.xpm"
-#include "../pixmaps/tb_save_all.xpm"
-#include "../pixmaps/tb_jump.xpm"
-#include "../pixmaps/tb_ctags.xpm"
-#include "../pixmaps/tb_load_session.xpm"
-#include "../pixmaps/tb_save_session.xpm"
-#include "../pixmaps/tb_new_session.xpm"
-#include "../pixmaps/tb_blank.xpm"
-#include "../pixmaps/tb_maximize.xpm"
-#include "../pixmaps/tb_split.xpm"
-#include "../pixmaps/tb_minimize.xpm"
-#include "../pixmaps/tb_shell.xpm"
-#include "../pixmaps/tb_replace.xpm"
-#include "../pixmaps/tb_vsplit.xpm"
-#include "../pixmaps/tb_maxwidth.xpm"
-#include "../pixmaps/tb_minwidth.xpm"
-#endif /* FEAT_TOOLBAR && !HAVE_GTK2 */
-
 #ifdef FEAT_GUI_GTK
 # include <gdk/gdkkeysyms.h>
 # include <gdk/gdk.h>
@@ -137,11 +90,8 @@ typedef int GtkWidget;
 static void entry_activate_cb(GtkWidget *widget, gpointer data);
 static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog);
 static void find_replace_cb(GtkWidget *widget, gpointer data);
-#ifndef HAVE_GTK2
-static void gui_gtk_position_in_parent(GtkWidget *parent, GtkWidget *child, gui_win_pos_T where);
-#endif
 
-#if defined(FEAT_TOOLBAR) && defined(HAVE_GTK2)
+#if defined(FEAT_TOOLBAR)
 /*
  * Table from BuiltIn## icon indices to GTK+ stock IDs.  Order must exactly
  * match toolbar_names[] in menu.c!  All stock icons including the "vim-*"
@@ -298,9 +248,9 @@ toolbar_button_focus_in_event(GtkWidget 
 
     return TRUE;
 }
-#endif /* FEAT_TOOLBAR && HAVE_GTK2 */
+#endif /* FEAT_TOOLBAR */
 
-#if (defined(FEAT_TOOLBAR) && defined(HAVE_GTK2)) || defined(PROTO)
+#if defined(FEAT_TOOLBAR) || defined(PROTO)
 
     void
 gui_gtk_register_stock_icons(void)
@@ -330,19 +280,8 @@ gui_gtk_register_stock_icons(void)
     g_object_unref(factory);
 }
 
-#endif /* FEAT_TOOLBAR && HAVE_GTK2 */
-
+#endif /* FEAT_TOOLBAR */
 
-/*
- * Only use accelerators when gtk_menu_ensure_uline_accel_group() is
- * available, which is in version 1.2.1.  That was the first version where
- * accelerators properly worked (according to the change log).
- */
-#ifdef GTK_CHECK_VERSION
-# if GTK_CHECK_VERSION(1, 2, 1)
-#  define GTK_USE_ACCEL
-# endif
-#endif
 
 #if defined(FEAT_MENU) || defined(PROTO)
 
@@ -364,9 +303,7 @@ translate_mnemonic_tag(char_u *name, int
     char_u  *pdest;
     int	    n_underscores = 0;
 
-# ifdef HAVE_GTK2
     name = CONVERT_TO_UTF8(name);
-# endif
     if (name == NULL)
 	return NULL;
 
@@ -401,14 +338,10 @@ translate_mnemonic_tag(char_u *name, int
 	*pdest = NUL;
     }
 
-# ifdef HAVE_GTK2
     CONVERT_TO_UTF8_FREE(name);
-# endif
     return buf;
 }
 
-# ifdef HAVE_GTK2
-
     static void
 menu_item_new(vimmenu_T *menu, GtkWidget *parent_widget)
 {
@@ -445,96 +378,6 @@ menu_item_new(vimmenu_T *menu, GtkWidget
     gtk_widget_show_all(menu->id);
 }
 
-# else /* !HAVE_GTK2 */
-
-/*
- * Create a highly customized menu item by hand instead of by using:
- *
- * gtk_menu_item_new_with_label(menu->dname);
- *
- * This is necessary, since there is no other way in GTK+ 1 to get the
- * not automatically parsed accelerator stuff right.
- */
-    static void
-menu_item_new(vimmenu_T *menu, GtkWidget *parent_widget)
-{
-    GtkWidget	*widget;
-    GtkWidget	*bin;
-    GtkWidget	*label;
-    char_u	*name;
-    guint	accel_key;
-
-    widget = gtk_widget_new(GTK_TYPE_MENU_ITEM,
-			    "GtkWidget::visible", TRUE,
-			    "GtkWidget::sensitive", TRUE,
-			    /* "GtkWidget::parent", parent->submenu_id, */
-			    NULL);
-    bin = gtk_widget_new(GTK_TYPE_HBOX,
-			 "GtkWidget::visible", TRUE,
-			 "GtkWidget::parent", widget,
-			 "GtkBox::spacing", 16,
-			 NULL);
-    label = gtk_widget_new(GTK_TYPE_ACCEL_LABEL,
-			   "GtkWidget::visible", TRUE,
-			   "GtkWidget::parent", bin,
-			   "GtkAccelLabel::accel_widget", widget,
-			   "GtkMisc::xalign", 0.0,
-			   NULL);
-    menu->label = label;
-
-    if (menu->actext)
-	gtk_widget_new(GTK_TYPE_LABEL,
-		       "GtkWidget::visible", TRUE,
-		       "GtkWidget::parent", bin,
-		       "GtkLabel::label", menu->actext,
-		       "GtkMisc::xalign", 1.0,
-			NULL);
-
-    /*
-     * Translate VIM accelerator tagging into GTK+'s.  Note that since GTK uses
-     * underscores as the accelerator key, we need to add an additional under-
-     * score for each understore that appears in the menu name.
-     */
-#  ifdef GTK_USE_ACCEL
-    name = translate_mnemonic_tag(menu->name,
-		(p_wak[0] != 'n' || !GTK_IS_MENU_BAR(parent_widget)));
-#  else
-    name = translate_mnemonic_tag(menu->name, FALSE);
-#  endif
-
-    /* let GTK do its thing */
-    accel_key = gtk_label_parse_uline(GTK_LABEL(label), (const char *)name);
-    vim_free(name);
-
-#  ifdef GTK_USE_ACCEL
-    /* Don't add accelator if 'winaltkeys' is "no". */
-    if (accel_key != GDK_VoidSymbol)
-    {
-	if (GTK_IS_MENU_BAR(parent_widget))
-	{
-	    if (*p_wak != 'n')
-		gtk_widget_add_accelerator(widget,
-			"activate_item",
-			gui.accel_group,
-			accel_key, GDK_MOD1_MASK,
-			(GtkAccelFlags)0);
-	}
-	else
-	{
-	    gtk_widget_add_accelerator(widget,
-		    "activate_item",
-		    gtk_menu_ensure_uline_accel_group(GTK_MENU(parent_widget)),
-		    accel_key, 0,
-		    (GtkAccelFlags)0);
-	}
-    }
-#  endif /* GTK_USE_ACCEL */
-
-    menu->id = widget;
-}
-
-# endif /* !HAVE_GTK2 */
-
     void
 gui_mch_add_menu(vimmenu_T *menu, int idx)
 {
@@ -562,18 +405,6 @@ gui_mch_add_menu(vimmenu_T *menu, int id
 
     gtk_menu_shell_insert(GTK_MENU_SHELL(parent_widget), menu->id, idx);
 
-#ifndef HAVE_GTK2
-    /*
-     * The "Help" menu is a special case, and should be placed at the far
-     * right hand side of the menu-bar.  It's detected by its high priority.
-     *
-     * Right-aligning "Help" is considered bad UI design nowadays.
-     * Thus lets disable this for GTK+ 2 to match the environment.
-     */
-    if (parent == NULL && menu->priority >= 9999)
-	gtk_menu_item_right_justify(GTK_MENU_ITEM(menu->id));
-#endif
-
     menu->submenu_id = gtk_menu_new();
 
     gtk_menu_set_accel_group(GTK_MENU(menu->submenu_id), gui.accel_group);
@@ -590,117 +421,11 @@ menu_item_activate(GtkWidget *widget UNU
 {
     gui_menu_cb((vimmenu_T *)data);
 
-# ifndef HAVE_GTK2
-    /* Work around a bug in GTK+ 1: we don't seem to get a focus-in
-     * event after clicking a menu item shown via :popup. */
-    if (!gui.in_focus)
-	gui_focus_change(TRUE);
-# endif
-
     /* make sure the menu action is taken immediately */
     if (gtk_main_level() > 0)
 	gtk_main_quit();
 }
 
-# if defined(FEAT_TOOLBAR) && !defined(HAVE_GTK2)
-/*
- * These are the pixmaps used for the default buttons.
- * Order must exactly match toolbar_names[] in menu.c!
- */
-static char **(built_in_pixmaps[]) =
-{
-    tb_new_xpm,
-    tb_open_xpm,
-    tb_save_xpm,
-    tb_undo_xpm,
-    tb_redo_xpm,
-    tb_cut_xpm,
-    tb_copy_xpm,
-    tb_paste_xpm,
-    tb_print_xpm,
-    tb_help_xpm,
-    tb_find_xpm,
-    tb_save_all_xpm,
-    tb_save_session_xpm,
-    tb_new_session_xpm,
-    tb_load_session_xpm,
-    tb_macro_xpm,
-    tb_replace_xpm,
-    tb_close_xpm,
-    tb_maximize_xpm,
-    tb_minimize_xpm,
-    tb_split_xpm,
-    tb_shell_xpm,
-    tb_find_prev_xpm,
-    tb_find_next_xpm,
-    tb_find_help_xpm,
-    tb_make_xpm,
-    tb_jump_xpm,
-    tb_ctags_xpm,
-    tb_vsplit_xpm,
-    tb_maxwidth_xpm,
-    tb_minwidth_xpm,
-    tb_exit_xpm
-};
-
-/*
- * creates a blank pixmap using tb_blank
- */
-    static void
-pixmap_create_from_xpm(char **xpm, GdkPixmap **pixmap, GdkBitmap **mask)
-{
-    *pixmap = gdk_pixmap_colormap_create_from_xpm_d(
-	    NULL,
-	    gtk_widget_get_colormap(gui.mainwin),
-	    mask,
-	    NULL,
-	    xpm);
-}
-
-/*
- * creates a pixmap by using a built-in number
- */
-    static void
-pixmap_create_by_num(int pixmap_num, GdkPixmap **pixmap, GdkBitmap **mask)
-{
-    if (pixmap_num >= 0 && pixmap_num < (sizeof(built_in_pixmaps)
-					    / sizeof(built_in_pixmaps[0])))
-	pixmap_create_from_xpm(built_in_pixmaps[pixmap_num], pixmap, mask);
-}
-
-/*
- * Creates a pixmap by using the pixmap "name" found in 'runtimepath'/bitmaps/
- */
-    static void
-pixmap_create_by_dir(char_u *name, GdkPixmap **pixmap, GdkBitmap **mask)
-{
-    char_u full_pathname[MAXPATHL + 1];
-
-    if (gui_find_bitmap(name, full_pathname, "xpm") == OK)
-	*pixmap = gdk_pixmap_colormap_create_from_xpm(
-		NULL,
-		gtk_widget_get_colormap(gui.mainwin),
-		mask,
-		&gui.mainwin->style->bg[GTK_STATE_NORMAL],
-		(const char *)full_pathname);
-}
-
-/*
- * Creates a pixmap by using the pixmap "fname".
- */
-    static void
-pixmap_create_from_file(char_u *fname, GdkPixmap **pixmap, GdkBitmap **mask)
-{
-    *pixmap = gdk_pixmap_colormap_create_from_xpm(
-		NULL,
-		gtk_widget_get_colormap(gui.mainwin),
-		mask,
-		&gui.mainwin->style->bg[GTK_STATE_NORMAL],
-		(const char *)fname);
-}
-
-# endif /* FEAT_TOOLBAR && !HAVE_GTK2 */
-
     void
 gui_mch_add_menu_item(vimmenu_T *menu, int idx)
 {
@@ -723,7 +448,6 @@ gui_mch_add_menu_item(vimmenu_T *menu, i
 	}
 	else
 	{
-#  ifdef HAVE_GTK2
 	    char_u *text;
 	    char_u *tooltip;
 
@@ -750,39 +474,6 @@ gui_mch_add_menu_item(vimmenu_T *menu, i
 
 	    CONVERT_TO_UTF8_FREE(text);
 	    CONVERT_TO_UTF8_FREE(tooltip);
-
-#  else /* !HAVE_GTK2 */
-
-	    GdkPixmap *pixmap = NULL;
-	    GdkBitmap *mask = NULL;
-
-	    /* First try user specified bitmap, then builtin, the a blank. */
-	    if (menu->iconfile != NULL)
-	    {
-		char_u buf[MAXPATHL + 1];
-
-		gui_find_iconfile(menu->iconfile, buf, "xpm");
-		pixmap_create_from_file(buf, &pixmap, &mask);
-	    }
-	    if (pixmap == NULL && !menu->icon_builtin)
-		pixmap_create_by_dir(menu->name, &pixmap, &mask);
-	    if (pixmap == NULL && menu->iconidx >= 0)
-		pixmap_create_by_num(menu->iconidx, &pixmap, &mask);
-	    if (pixmap == NULL)
-		pixmap_create_from_xpm(tb_blank_xpm, &pixmap, &mask);
-	    if (pixmap == NULL)
-		return; /* should at least have blank pixmap, but if not... */
-
-	    menu->id = gtk_toolbar_insert_item(
-				    toolbar,
-				    (char *)(menu->dname),
-				    (char *)(menu->strings[MENU_INDEX_TIP]),
-				    (char *)(menu->dname),
-				    gtk_pixmap_new(pixmap, mask),
-				    GTK_SIGNAL_FUNC(menu_item_activate),
-				    (gpointer)menu,
-				    idx);
-#  endif /* !HAVE_GTK2 */
 	}
     }
     else
@@ -837,45 +528,16 @@ gui_gtk_set_mnemonics(int enable)
 {
     vimmenu_T	*menu;
     char_u	*name;
-# if !defined(HAVE_GTK2) && defined(GTK_USE_ACCEL)
-    guint	accel_key;
-# endif
 
     for (menu = root_menu; menu != NULL; menu = menu->next)
     {
 	if (menu->id == NULL)
 	    continue;
 
-# if defined(HAVE_GTK2)
 	name = translate_mnemonic_tag(menu->name, enable);
 	gtk_label_set_text_with_mnemonic(GTK_LABEL(menu->label),
 					 (const char *)name);
 	vim_free(name);
-# else
-#  if defined(GTK_USE_ACCEL)
-	name = translate_mnemonic_tag(menu->name, TRUE);
-	if (name != NULL)
-	{
-	    accel_key = gtk_label_parse_uline(GTK_LABEL(menu->label),
-					      (const char *)name);
-	    if (accel_key != GDK_VoidSymbol)
-		gtk_widget_remove_accelerator(menu->id, gui.accel_group,
-					      accel_key, GDK_MOD1_MASK);
-	    if (enable && accel_key != GDK_VoidSymbol)
-		gtk_widget_add_accelerator(menu->id, "activate_item",
-					   gui.accel_group,
-					   accel_key, GDK_MOD1_MASK,
-					   (GtkAccelFlags)0);
-	    vim_free(name);
-	}
-	if (!enable)
-	{
-	    name = translate_mnemonic_tag(menu->name, FALSE);
-	    gtk_label_parse_uline(GTK_LABEL(menu->label), (const char *)name);
-	    vim_free(name);
-	}
-#  endif
-# endif
     }
 }
 
@@ -903,58 +565,7 @@ gui_mch_toggle_tearoffs(int enable)
 }
 #endif /* FEAT_MENU */
 
-
-#if defined(FEAT_TOOLBAR) && !defined(HAVE_GTK2)
-/*
- * Seems like there's a hole in the GTK Toolbar API: there's no provision for
- * removing an item from the toolbar.  Therefore I need to resort to going
- * really deeply into the internal widget structures.
- *
- * <danielk> I'm not sure the statement above is true -- at least with
- * GTK+ 2 one can just call gtk_widget_destroy() and be done with it.
- * It is true though that you couldn't remove space items before GTK+ 2
- * (without digging into the internals that is).  But the code below
- * doesn't seem to handle those either.  Well, it's obsolete anyway.
- */
-    static void
-toolbar_remove_item_by_text(GtkToolbar *tb, const char *text)
-{
-    GtkContainer *container;
-    GList *childl;
-    GtkToolbarChild *gtbc;
-
-    g_return_if_fail(tb != NULL);
-    g_return_if_fail(GTK_IS_TOOLBAR(tb));
-    container = GTK_CONTAINER(&tb->container);
-
-    for (childl = tb->children; childl; childl = childl->next)
-    {
-	gtbc = (GtkToolbarChild *)childl->data;
-
-	if (gtbc->type != GTK_TOOLBAR_CHILD_SPACE
-		&& strcmp(GTK_LABEL(gtbc->label)->label, text) == 0)
-	{
-	    gboolean was_visible;
-
-	    was_visible = GTK_WIDGET_VISIBLE(gtbc->widget);
-	    gtk_widget_unparent(gtbc->widget);
-
-	    tb->children = g_list_remove_link(tb->children, childl);
-	    g_free(gtbc);
-	    g_list_free(childl);
-	    tb->num_children--;
-
-	    if (was_visible && GTK_WIDGET_VISIBLE(container))
-		gtk_widget_queue_resize(GTK_WIDGET(container));
-
-	    break;
-	}
-    }
-}
-#endif /* FEAT_TOOLBAR && !HAVE_GTK2 */
-
-
-#if defined(FEAT_TOOLBAR) && defined(HAVE_GTK2)
+#if defined(FEAT_TOOLBAR)
     static int
 get_menu_position(vimmenu_T *menu)
 {
@@ -969,7 +580,7 @@ get_menu_position(vimmenu_T *menu)
 
     return idx;
 }
-#endif /* FEAT_TOOLBAR && HAVE_GTK2 */
+#endif /* FEAT_TOOLBAR */
 
 
 #if defined(FEAT_TOOLBAR) || defined(PROTO)
@@ -981,18 +592,12 @@ gui_mch_menu_set_tip(vimmenu_T *menu)
     {
 	char_u *tooltip;
 
-# ifdef HAVE_GTK2
 	tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
 	if (tooltip == NULL || utf_valid_string(tooltip, NULL))
 	    /* Only set the tooltip when it's valid utf-8. */
-# else
-	tooltip = menu->strings[MENU_INDEX_TIP];
-# endif
 	gtk_tooltips_set_tip(GTK_TOOLBAR(gui.toolbar)->tooltips,
 			     menu->id, (const char *)tooltip, NULL);
-# ifdef HAVE_GTK2
 	CONVERT_TO_UTF8_FREE(tooltip);
-# endif
     }
 }
 #endif /* FEAT_TOOLBAR */
@@ -1008,16 +613,11 @@ gui_mch_destroy_menu(vimmenu_T *menu)
 # ifdef FEAT_TOOLBAR
     if (menu->parent != NULL && menu_is_toolbar(menu->parent->name))
     {
-#  ifdef HAVE_GTK2
 	if (menu_is_separator(menu->name))
 	    gtk_toolbar_remove_space(GTK_TOOLBAR(gui.toolbar),
 				     get_menu_position(menu));
 	else if (menu->id != NULL)
 	    gtk_widget_destroy(menu->id);
-#  else
-	toolbar_remove_item_by_text(GTK_TOOLBAR(gui.toolbar),
-				    (const char *)menu->dname);
-#  endif
     }
     else
 # endif /* FEAT_TOOLBAR */
@@ -1054,21 +654,11 @@ gui_mch_set_scrollbar_thumb(scrollbar_T 
 	adjustment->page_increment = size < 3L ? 1L : size - 2L;
 	adjustment->step_increment = 1.0;
 
-#ifdef HAVE_GTK2
 	g_signal_handler_block(GTK_OBJECT(adjustment),
 						      (gulong)sb->handler_id);
-#else
-	gtk_signal_handler_block(GTK_OBJECT(adjustment),
-						       (guint)sb->handler_id);
-#endif
 	gtk_adjustment_changed(adjustment);
-#ifdef HAVE_GTK2
 	g_signal_handler_unblock(GTK_OBJECT(adjustment),
 						      (gulong)sb->handler_id);
-#else
-	gtk_signal_handler_unblock(GTK_OBJECT(adjustment),
-						       (guint)sb->handler_id);
-#endif
     }
 }
 
@@ -1108,7 +698,6 @@ adjustment_value_changed(GtkAdjustment *
      */
     if (sb != NULL)
     {
-#ifdef HAVE_GTK2
 	dragging = TRUE;
 
 	if (sb->wp != NULL)
@@ -1139,9 +728,6 @@ adjustment_value_changed(GtkAdjustment *
 		}
 	    }
 	}
-#else
-	dragging = (GTK_RANGE(sb->id)->scroll_type == GTK_SCROLL_NONE);
-#endif
     }
 
     gui_drag_scrollbar(sb, value, dragging);
@@ -1193,7 +779,7 @@ gui_mch_destroy_scrollbar(scrollbar_T *s
 /*
  * Implementation of the file selector related stuff
  */
-#if defined(HAVE_GTK2) && GTK_CHECK_VERSION(2,4,0)
+#if GTK_CHECK_VERSION(2,4,0)
 /* This has been disabled, because the GTK library rewrites
  * ~/.recently-used.xbel every time the main loop is quit.  For Vim that means
  * on just about any event. */
@@ -1271,9 +857,7 @@ gui_mch_browse(int saving UNUSED,
 #endif
     char_u		dirbuf[MAXPATHL];
 
-# ifdef HAVE_GTK2
     title = CONVERT_TO_UTF8(title);
-# endif
 
     /* GTK has a bug, it only works with an absolute path. */
     if (initdir == NULL || *initdir == NUL)
@@ -1343,19 +927,13 @@ gui_mch_browse(int saving UNUSED,
 
     gtk_file_selection_set_filename(GTK_FILE_SELECTION(gui.filedlg),
 						      (const gchar *)dirbuf);
-# ifndef HAVE_GTK2
-    gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin),
-				       GTK_WIDGET(gui.filedlg), VW_POS_MOUSE);
-# endif
 
     gtk_widget_show(gui.filedlg);
     while (gui.filedlg && GTK_WIDGET_DRAWABLE(gui.filedlg))
 	gtk_main_iteration_do(TRUE);
 #endif
 
-# ifdef HAVE_GTK2
     CONVERT_TO_UTF8_FREE(title);
-# endif
     if (gui.browse_fname == NULL)
 	return NULL;
 
@@ -1363,8 +941,6 @@ gui_mch_browse(int saving UNUSED,
     return vim_strsave(shorten_fname1(gui.browse_fname));
 }
 
-#if defined(HAVE_GTK2) || defined(PROTO)
-
 /*
  * Put up a directory selector
  * Returns the selected name in allocated memory, or NULL for Cancel.
@@ -1428,544 +1004,11 @@ gui_mch_browsedir(
     return gui_mch_browse(0, title, NULL, NULL, initdir, NULL);
 # endif
 }
-#endif
 
 
 #endif	/* FEAT_BROWSE */
 
-#if defined(FEAT_GUI_DIALOG) && !defined(HAVE_GTK2)
-
-static char_u *dialog_textfield = NULL;
-static GtkWidget *dialog_textentry;
-
-    static void
-dlg_destroy(GtkWidget *dlg)
-{
-    if (dialog_textfield != NULL)
-    {
-	const char *text;
-
-	text = gtk_entry_get_text(GTK_ENTRY(dialog_textentry));
-	vim_strncpy(dialog_textfield, (char_u *)text, IOSIZE - 1);
-    }
-
-    /* Destroy the dialog, will break the waiting loop. */
-    gtk_widget_destroy(dlg);
-}
-
-# ifdef FEAT_GUI_GNOME
-    static int
-gui_gnome_dialog( int	type,
-		char_u	*title,
-		char_u	*message,
-		char_u	*buttons,
-		int	dfltbutton,
-		char_u	*textfield)
-{
-    GtkWidget	*dlg;
-    char	*gdtype;
-    char_u	*buttons_copy, *p, *next;
-    char	**buttons_list;
-    int		butcount, cur;
-
-    /* make a copy, so that we can insert NULs */
-    if ((buttons_copy = vim_strsave(buttons)) == NULL)
-	return -1;
-
-    /* determine exact number of buttons and allocate array to hold them */
-    for (butcount = 0, p = buttons; *p; p++)
-    {
-	if (*p == '\n')
-	    butcount++;
-    }
-    butcount++;
-    buttons_list = g_new0(char *, butcount + 1);
-
-    /* Add pixmap */
-    switch (type)
-    {
-    case VIM_ERROR:
-	gdtype = GNOME_MESSAGE_BOX_ERROR;
-	break;
-    case VIM_WARNING:
-	gdtype = GNOME_MESSAGE_BOX_WARNING;
-	break;
-    case VIM_INFO:
-	gdtype = GNOME_MESSAGE_BOX_INFO;
-	break;
-    case VIM_QUESTION:
-	gdtype = GNOME_MESSAGE_BOX_QUESTION;
-	break;
-    default:
-	gdtype = GNOME_MESSAGE_BOX_GENERIC;
-    };
-
-    p = buttons_copy;
-    for (cur = 0; cur < butcount; ++cur)
-    {
-	for (next = p; *next; ++next)
-	{
-	    if (*next == DLG_HOTKEY_CHAR)
-		STRMOVE(next, next + 1);
-	    if (*next == DLG_BUTTON_SEP)
-	    {
-		*next++ = NUL;
-		break;
-	    }
-	}
-
-	/* this should probably go into a table, but oh well */
-	if (g_strcasecmp((char *)p, "Ok") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_OK);
-	else if (g_strcasecmp((char *)p, "Cancel") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_CANCEL);
-	else if (g_strcasecmp((char *)p, "Yes") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_YES);
-	else if (g_strcasecmp((char *)p, "No") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_NO);
-	else if (g_strcasecmp((char *)p, "Close") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_CLOSE);
-	else if (g_strcasecmp((char *)p, "Help") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_HELP);
-	else if (g_strcasecmp((char *)p, "Apply") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_APPLY);
-#if 0
-	/*
-	 * these aren't really used that often anyway, but are listed here as
-	 * placeholders in case we need them.
-	 */
-	else if (g_strcasecmp((char *)p, "Next") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_NEXT);
-	else if (g_strcasecmp((char *)p, "Prev") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_PREV);
-	else if (g_strcasecmp((char *)p, "Up") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_UP);
-	else if (g_strcasecmp((char *)p, "Down") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_DOWN);
-	else if (g_strcasecmp((char *)p, "Font") == 0)
-	    buttons_list[cur] = g_strdup(GNOME_STOCK_BUTTON_FONT);
-#endif
-	else
-	    buttons_list[cur] = g_strdup((char *)p);
-
-	if (*next == NUL)
-	    break;
-
-	p = next;
-    }
-    vim_free(buttons_copy);
-
-    dlg = gnome_message_box_newv((const char *)message,
-				 (const char *)gdtype,
-				 (const char **)buttons_list);
-    for (cur = 0; cur < butcount; ++cur)
-	g_free(buttons_list[cur]);
-    g_free(buttons_list);
-
-    dialog_textfield = textfield;
-    if (textfield != NULL)
-    {
-	/* Add text entry field */
-	dialog_textentry = gtk_entry_new();
-	gtk_box_pack_start(GTK_BOX(GNOME_DIALOG(dlg)->vbox), dialog_textentry,
-			   TRUE, TRUE, 0);
-	gtk_entry_set_text(GTK_ENTRY(dialog_textentry),
-			   (const gchar *)textfield);
-	gtk_entry_select_region(GTK_ENTRY(dialog_textentry), 0,
-				STRLEN(textfield));
-	gtk_entry_set_max_length(GTK_ENTRY(dialog_textentry), IOSIZE - 1);
-	gtk_entry_set_position(GTK_ENTRY(dialog_textentry), STRLEN(textfield));
-	gtk_widget_show(dialog_textentry);
-	gtk_window_set_focus(GTK_WINDOW(dlg), dialog_textentry);
-    }
-
-    gtk_signal_connect_object(GTK_OBJECT(dlg), "destroy",
-			      GTK_SIGNAL_FUNC(dlg_destroy), GTK_OBJECT(dlg));
-    gnome_dialog_set_default(GNOME_DIALOG(dlg), dfltbutton + 1);
-    gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin),
-			       GTK_WIDGET(dlg), VW_POS_MOUSE);
-
-    return (1 + gnome_dialog_run_and_close(GNOME_DIALOG(dlg)));
-}
-
-# endif /* FEAT_GUI_GNOME */
-
-typedef struct _ButtonData
-{
-    int		*status;
-    int		index;
-    GtkWidget	*dialog;
-} ButtonData;
-
-typedef struct _CancelData
-{
-    int		*status;
-    int		ignore_enter;
-    GtkWidget	*dialog;
-} CancelData;
-
-    static void
-dlg_button_clicked(GtkWidget * widget, ButtonData *data)
-{
-    *(data->status) = data->index + 1;
-    dlg_destroy(data->dialog);
-}
-
-/*
- * This makes the Escape key equivalent to the cancel button.
- */
-    static int
-dlg_key_press_event(GtkWidget *widget, GdkEventKey *event, CancelData *data)
-{
-    /* Ignore hitting Enter (or Space) when there is no default button. */
-    if (data->ignore_enter && (event->keyval == GDK_Return
-						     || event->keyval == ' '))
-	return TRUE;
-    else    /* A different key was pressed, return to normal behavior */
-	data->ignore_enter = FALSE;
-
-    if (event->keyval != GDK_Escape && event->keyval != GDK_Return)
-	return FALSE;
-
-    /* The result value of 0 from a dialog is signaling cancelation.
-     * 1 means OK. */
-    *(data->status) = (event->keyval == GDK_Return);
-    dlg_destroy(data->dialog);
-
-    return TRUE;
-}
-
-/*
- * Callback function for when the dialog was destroyed by a window manager.
- */
-    static void
-dlg_destroy_cb(int *p)
-{
-    *p = TRUE;		/* set dialog_destroyed to break out of the loop */
-    if (gtk_main_level() > 0)
-	gtk_main_quit();
-}
-
-    int
-gui_mch_dialog(	int	type,		/* type of dialog */
-		char_u	*title,		/* title of dialog */
-		char_u	*message,	/* message text */
-		char_u	*buttons,	/* names of buttons */
-		int	def_but,	/* default button */
-		char_u	*textfield)	/* text for textfield or NULL */
-{
-    char_u	*names;
-    char_u	*p;
-    int		i;
-    int		butcount;
-    int		dialog_status = -1;
-    int		dialog_destroyed = FALSE;
-    int		vertical;
-
-    GtkWidget		*dialog;
-    GtkWidget		*frame;
-    GtkWidget		*vbox;
-    GtkWidget		*table;
-    GtkWidget		*dialogmessage;
-    GtkWidget		*action_area;
-    GtkWidget		*sub_area;
-    GtkWidget		*separator;
-    GtkAccelGroup	*accel_group;
-    GtkWidget		*pixmap;
-    GdkPixmap		*icon = NULL;
-    GdkBitmap		*mask = NULL;
-    char		**icon_data = NULL;
-
-    GtkWidget		**button;
-    ButtonData		*data;
-    CancelData		cancel_data;
-
-    /* if our pointer is currently hidden, then we should show it. */
-    gui_mch_mousehide(FALSE);
-
-# ifdef FEAT_GUI_GNOME
-    /* If Gnome is available, use it for the dialog. */
-    if (gtk_socket_id == 0)
-	return gui_gnome_dialog(type, title, message, buttons, def_but,
-								   textfield);
-# endif
-
-    if (title == NULL)
-	title = (char_u *)_("Vim dialog...");
-
-    if ((type < 0) || (type > VIM_LAST_TYPE))
-	type = VIM_GENERIC;
-
-    /* Check 'v' flag in 'guioptions': vertical button placement. */
-    vertical = (vim_strchr(p_go, GO_VERTICAL) != NULL);
-
-    dialog = gtk_window_new(GTK_WINDOW_DIALOG);
-    gtk_window_set_title(GTK_WINDOW(dialog), (const gchar *)title);
-    gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(gui.mainwin));
-    gtk_widget_realize(dialog);
-    gdk_window_set_decorations(dialog->window, GDK_DECOR_BORDER);
-    gdk_window_set_functions(dialog->window, GDK_FUNC_MOVE);
-
-    cancel_data.status = &dialog_status;
-    cancel_data.dialog = dialog;
-    gtk_signal_connect_after(GTK_OBJECT(dialog), "key_press_event",
-		    GTK_SIGNAL_FUNC(dlg_key_press_event),
-		    (gpointer) &cancel_data);
-    /* Catch the destroy signal, otherwise we don't notice a window manager
-     * destroying the dialog window. */
-    gtk_signal_connect_object(GTK_OBJECT(dialog), "destroy",
-		    GTK_SIGNAL_FUNC(dlg_destroy_cb),
-		    (gpointer)&dialog_destroyed);
-
-    gtk_grab_add(dialog);
-
-    /* this makes it look beter on Motif style window managers */
-    frame = gtk_frame_new(NULL);
-    gtk_container_add(GTK_CONTAINER(dialog), frame);
-    gtk_widget_show(frame);
-
-    vbox = gtk_vbox_new(FALSE, 0);
-    gtk_container_add(GTK_CONTAINER(frame), vbox);
-    gtk_widget_show(vbox);
-
-    table = gtk_table_new(1, 3, FALSE);
-    gtk_table_set_row_spacings(GTK_TABLE(table), 4);
-    gtk_table_set_col_spacings(GTK_TABLE(table), 8);
-    gtk_container_border_width(GTK_CONTAINER(table), 4);
-    gtk_box_pack_start(GTK_BOX(vbox), table, 4, 4, 0);
-    gtk_widget_show(table);
-
-    /* Add pixmap */
-    switch (type)
-    {
-    case VIM_GENERIC:
-	icon_data = generic_xpm;
-	break;
-    case VIM_ERROR:
-	icon_data = error_xpm;
-	break;
-    case VIM_WARNING:
-	icon_data = alert_xpm;
-	break;
-    case VIM_INFO:
-	icon_data = info_xpm;
-	break;
-    case VIM_QUESTION:
-	icon_data = quest_xpm;
-	break;
-    default:
-	icon_data = generic_xpm;
-    };
-    icon = gdk_pixmap_colormap_create_from_xpm_d(NULL,
-				     gtk_widget_get_colormap(dialog),
-				     &mask, NULL, icon_data);
-    if (icon)
-    {
-	pixmap = gtk_pixmap_new(icon, mask);
-	/* gtk_misc_set_alignment(GTK_MISC(pixmap), 0.5, 0.5); */
-	gtk_table_attach_defaults(GTK_TABLE(table), pixmap, 0, 1, 0, 1);
-	gtk_widget_show(pixmap);
-    }
-
-    /* Add label */
-    dialogmessage = gtk_label_new((const gchar *)message);
-    gtk_table_attach_defaults(GTK_TABLE(table), dialogmessage, 1, 2, 0, 1);
-    gtk_widget_show(dialogmessage);
-
-    dialog_textfield = textfield;
-    if (textfield != NULL)
-    {
-	/* Add text entry field */
-	dialog_textentry = gtk_entry_new();
-	gtk_widget_set_usize(dialog_textentry, 400, -2);
-	gtk_box_pack_start(GTK_BOX(vbox), dialog_textentry, TRUE, TRUE, 0);
-	gtk_entry_set_text(GTK_ENTRY(dialog_textentry),
-						    (const gchar *)textfield);
-	gtk_entry_select_region(GTK_ENTRY(dialog_textentry), 0,
-							   STRLEN(textfield));
-	gtk_entry_set_max_length(GTK_ENTRY(dialog_textentry), IOSIZE - 1);
-	gtk_entry_set_position(GTK_ENTRY(dialog_textentry), STRLEN(textfield));
-	gtk_widget_show(dialog_textentry);
-    }
-
-    /* Add box for buttons */
-    action_area = gtk_hbox_new(FALSE, 0);
-    gtk_container_border_width(GTK_CONTAINER(action_area), 4);
-    gtk_box_pack_end(GTK_BOX(vbox), action_area, FALSE, TRUE, 0);
-    gtk_widget_show(action_area);
-
-    /* Add a [vh]box in the hbox to center the buttons in the dialog. */
-    if (vertical)
-	sub_area = gtk_vbox_new(FALSE, 0);
-    else
-	sub_area = gtk_hbox_new(FALSE, 0);
-    gtk_container_set_border_width(GTK_CONTAINER(sub_area), 0);
-    gtk_box_pack_start(GTK_BOX(action_area), sub_area, TRUE, FALSE, 0);
-    gtk_widget_show(sub_area);
-
-    /*
-     * Create the buttons.
-     */
-
-    /*
-     * Translate the Vim accelerator character into an underscore for GTK+.
-     * Double underscores to keep them in the label.
-     */
-    /* count the number of underscores */
-    i = 1;
-    for (p = buttons; *p; ++p)
-	if (*p == '_')
-	    ++i;
-
-    /* make a copy of "buttons" with the translated characters */
-    names = alloc(STRLEN(buttons) + i);
-    if (names == NULL)
-	return -1;
-
-    p = names;
-    for (i = 0; buttons[i]; ++i)
-    {
-	if (buttons[i] == DLG_HOTKEY_CHAR)
-	    *p++ = '_';
-	else
-	{
-	    if (buttons[i] == '_')
-		*p++ = '_';
-	    *p++ = buttons[i];
-	}
-    }
-    *p = NUL;
-
-    /* Count the number of buttons and allocate button[] and data[]. */
-    butcount = 1;
-    for (p = names; *p; ++p)
-	if (*p == DLG_BUTTON_SEP)
-	    ++butcount;
-    button = (GtkWidget **)alloc((unsigned)(butcount * sizeof(GtkWidget *)));
-    data = (ButtonData *)alloc((unsigned)(butcount * sizeof(ButtonData)));
-    if (button == NULL || data == NULL)
-    {
-	vim_free(names);
-	vim_free(button);
-	vim_free(data);
-	return -1;
-    }
-
-    /* Attach the new accelerator group to the window. */
-    accel_group = gtk_accel_group_new();
-    gtk_accel_group_attach(accel_group, GTK_OBJECT(dialog));
-
-    p = names;
-    for (butcount = 0; *p; ++butcount)
-    {
-	char_u		*next;
-	GtkWidget	*label;
-# ifdef GTK_USE_ACCEL
-	guint		accel_key;
-# endif
-
-	/* Chunk out this single button. */
-	for (next = p; *next; ++next)
-	{
-	    if (*next == DLG_BUTTON_SEP)
-	    {
-		*next++ = NUL;
-		break;
-	    }
-	}
-
-	button[butcount] = gtk_button_new();
-	GTK_WIDGET_SET_FLAGS(button[butcount], GTK_CAN_DEFAULT);
-
-	label = gtk_accel_label_new("");
-	gtk_accel_label_set_accel_widget(GTK_ACCEL_LABEL(label), dialog);
-
-# ifdef GTK_USE_ACCEL
-	accel_key = gtk_label_parse_uline(GTK_LABEL(label), (const gchar *)p);
-	/* Don't add accelator if 'winaltkeys' is "no". */
-	if (accel_key != GDK_VoidSymbol)
-	{
-	    gtk_widget_add_accelerator(button[butcount],
-		    "clicked",
-		    accel_group,
-		    accel_key, 0,
-		    (GtkAccelFlags)0);
-	}
-# else
-	(void)gtk_label_parse_uline(GTK_LABEL(label), (const gchar *)p);
-# endif
-
-	gtk_container_add(GTK_CONTAINER(button[butcount]), label);
-	gtk_widget_show_all(button[butcount]);
-
-	data[butcount].status = &dialog_status;
-	data[butcount].index = butcount;
-	data[butcount].dialog = dialog;
-	gtk_signal_connect(GTK_OBJECT(button[butcount]),
-			   (const char *)"clicked",
-			   GTK_SIGNAL_FUNC(dlg_button_clicked),
-			   (gpointer) &data[butcount]);
-
-	gtk_box_pack_start(GTK_BOX(sub_area), button[butcount],
-			   TRUE, FALSE, 0);
-	p = next;
-    }
-
-    vim_free(names);
-
-    cancel_data.ignore_enter = FALSE;
-    if (butcount > 0)
-    {
-	--def_but;		/* 1 is first button */
-	if (def_but >= butcount)
-	    def_but = -1;
-	if (def_but >= 0)
-	{
-	    gtk_widget_grab_focus(button[def_but]);
-	    gtk_widget_grab_default(button[def_but]);
-	}
-	else
-	    /* No default, ignore hitting Enter. */
-	    cancel_data.ignore_enter = TRUE;
-    }
-
-    if (textfield != NULL)
-	gtk_window_set_focus(GTK_WINDOW(dialog), dialog_textentry);
-
-    separator = gtk_hseparator_new();
-    gtk_box_pack_end(GTK_BOX(vbox), separator, FALSE, TRUE, 0);
-    gtk_widget_show(separator);
-
-    dialog_status = -1;
-
-    gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin),
-					    GTK_WIDGET(dialog), VW_POS_MOUSE);
-
-    gtk_widget_show(dialog);
-
-    /* loop here until the dialog goes away */
-    while (dialog_status == -1 && !dialog_destroyed
-					       && GTK_WIDGET_DRAWABLE(dialog))
-	gtk_main_iteration_do(TRUE);
-
-    if (dialog_status < 0)
-	dialog_status = 0;
-    if (dialog_status != 1 && textfield != NULL)
-	*textfield = NUL;	/* dialog was cancelled */
-
-    /* let the garbage collector know that we don't need it any longer */
-    gtk_accel_group_unref(accel_group);
-
-    vim_free(button);
-    vim_free(data);
-
-    return dialog_status;
-}
-
-#endif /* FEAT_GUI_DIALOG && !HAVE_GTK2 */
-
-
-#if (defined(FEAT_GUI_DIALOG) && defined(HAVE_GTK2)) || defined(PROTO)
+#if defined(FEAT_GUI_DIALOG) || defined(PROTO)
 
     static GtkWidget *
 create_message_dialog(int type, char_u *title, char_u *message)
@@ -2316,7 +1359,7 @@ gui_mch_dialog(int	type,	    /* type of 
     return response > 0 ? response : 0;
 }
 
-#endif /* FEAT_GUI_DIALOG && HAVE_GTK2 */
+#endif /* FEAT_GUI_DIALOG */
 
 
 #if defined(FEAT_MENU) || defined(PROTO)
@@ -2324,7 +1367,7 @@ gui_mch_dialog(int	type,	    /* type of 
     void
 gui_mch_show_popupmenu(vimmenu_T *menu)
 {
-# if defined(FEAT_XIM) && defined(HAVE_GTK2)
+# if defined(FEAT_XIM)
     /*
      * Append a submenu for selecting an input method.	This is
      * currently the only way to switch input methods at runtime.
@@ -2355,7 +1398,7 @@ gui_mch_show_popupmenu(vimmenu_T *menu)
 	g_object_set_data(G_OBJECT(menu->submenu_id),
 			  "vim-has-im-menu", GINT_TO_POINTER(TRUE));
     }
-# endif /* FEAT_XIM && HAVE_GTK2 */
+# endif /* FEAT_XIM */
 
     gtk_menu_popup(GTK_MENU(menu->submenu_id),
 		   NULL, NULL,
@@ -2377,9 +1420,7 @@ static int popup_mouse_pos;
     static void
 popup_menu_position_func(GtkMenu *menu UNUSED,
 			 gint *x, gint *y,
-# ifdef HAVE_GTK2
 			 gboolean *push_in UNUSED,
-# endif
 			 gpointer user_data UNUSED)
 {
     gdk_window_get_origin(gui.drawarea->window, x, y);
@@ -2461,18 +1502,6 @@ find_key_press_event(
 
 	return TRUE;
     }
-    /*
-     * What the **** is this for?  Disabled for GTK+ 2 because due to
-     * gtk_signal_connect_after() it doesn't have any effect anyway.
-     * (Fortunately.)
-     */
-#ifndef HAVE_GTK2
-    /* block traversal resulting from those keys */
-    if (event->keyval == GDK_Left
-	    || event->keyval == GDK_Right
-	    || event->keyval == GDK_space)
-	return TRUE;
-#endif
 
     /* It would be delightful if it where possible to do search history
      * operations on the K_UP and K_DOWN keys here.
@@ -2481,7 +1510,6 @@ find_key_press_event(
     return FALSE;
 }
 
-#ifdef HAVE_GTK2
     static GtkWidget *
 create_image_button(const char *stock_id, const char *label)
 {
@@ -2529,14 +1557,10 @@ convert_localized_message(char_u **buffe
 
     return (const char *)*buffer;
 }
-#endif /* HAVE_GTK2 */
 
     static void
 find_replace_dialog_create(char_u *arg, int do_replace)
 {
-#ifndef HAVE_GTK2
-    GtkWidget	*frame;
-#endif
     GtkWidget	*hbox;		/* main top down box */
     GtkWidget	*actionarea;
     GtkWidget	*table;
@@ -2547,45 +1571,26 @@ find_replace_dialog_create(char_u *arg, 
     char_u	*entry_text;
     int		wword = FALSE;
     int		mcase = !p_ic;
-#ifdef HAVE_GTK2
     char_u	*conv_buffer = NULL;
 #   define CONV(message) convert_localized_message(&conv_buffer, (message))
-#else
-#   define CONV(message) (message)
-#endif
 
     frdp = (do_replace) ? (&repl_widgets) : (&find_widgets);
 
     /* Get the search string to use. */
     entry_text = get_find_dialog_text(arg, &wword, &mcase);
 
-#ifdef HAVE_GTK2
     if (entry_text != NULL && output_conv.vc_type != CONV_NONE)
     {
 	char_u *old_text = entry_text;
 	entry_text = string_convert(&output_conv, entry_text, NULL);
 	vim_free(old_text);
     }
-#endif
 
     /*
      * If the dialog already exists, just raise it.
      */
     if (frdp->dialog)
     {
-#ifndef HAVE_GTK2
-	/* always make the dialog appear where you want it even if the mainwin
-	 * has moved -- dbv */
-	gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin),
-				      GTK_WIDGET(frdp->dialog), VW_POS_MOUSE);
-	gui_gtk_synch_fonts();
-
-	if (!GTK_WIDGET_VISIBLE(frdp->dialog))
-	{
-	    gtk_widget_grab_focus(frdp->what);
-	    gtk_widget_show(frdp->dialog);
-	}
-#endif
 	if (entry_text != NULL)
 	{
 	    gtk_entry_set_text(GTK_ENTRY(frdp->what), (char *)entry_text);
@@ -2594,62 +1599,30 @@ find_replace_dialog_create(char_u *arg, 
 	    gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(frdp->mcase),
 							     (gboolean)mcase);
 	}
-#ifdef HAVE_GTK2
 	gtk_window_present(GTK_WINDOW(frdp->dialog));
-#else
-	gdk_window_raise(frdp->dialog->window);
-#endif
 	vim_free(entry_text);
 	return;
     }
 
-#ifdef HAVE_GTK2
     frdp->dialog = gtk_dialog_new();
     gtk_dialog_set_has_separator(GTK_DIALOG(frdp->dialog), FALSE);
     gtk_window_set_transient_for(GTK_WINDOW(frdp->dialog), GTK_WINDOW(gui.mainwin));
     gtk_window_set_destroy_with_parent(GTK_WINDOW(frdp->dialog), TRUE);
-#else
-    frdp->dialog = gtk_window_new(GTK_WINDOW_DIALOG);
-#endif
 
     if (do_replace)
     {
-#ifndef HAVE_GTK2
-	gtk_window_set_wmclass(GTK_WINDOW(frdp->dialog), "searchrepl", "gvim");
-#endif
 	gtk_window_set_title(GTK_WINDOW(frdp->dialog),
 			     CONV(_("VIM - Search and Replace...")));
     }
     else
     {
-#ifndef HAVE_GTK2
-	gtk_window_set_wmclass(GTK_WINDOW(frdp->dialog), "search", "gvim");
-#endif
 	gtk_window_set_title(GTK_WINDOW(frdp->dialog),
 			     CONV(_("VIM - Search...")));
     }
 
-#ifndef HAVE_GTK2 /* Utter crack.  Shudder. */
-    gtk_widget_realize(frdp->dialog);
-    gdk_window_set_decorations(frdp->dialog->window,
-	    GDK_DECOR_TITLE | GDK_DECOR_BORDER | GDK_DECOR_RESIZEH);
-    gdk_window_set_functions(frdp->dialog->window,
-	    GDK_FUNC_RESIZE | GDK_FUNC_MOVE);
-#endif
-
-#ifndef HAVE_GTK2
-    /* this makes it look better on Motif style window managers */
-    frame = gtk_frame_new(NULL);
-    gtk_container_add(GTK_CONTAINER(frdp->dialog), frame);
-#endif
-
     hbox = gtk_hbox_new(FALSE, 0);
-#ifdef HAVE_GTK2
     gtk_container_set_border_width(GTK_CONTAINER(hbox), 10);
     gtk_container_add(GTK_CONTAINER(GTK_DIALOG(frdp->dialog)->vbox), hbox);
-#else
-    gtk_container_add(GTK_CONTAINER(frame), hbox);
-#endif
 
     if (do_replace)
 	table = gtk_table_new(1024, 4, FALSE);
@@ -2747,30 +1720,16 @@ find_replace_dialog_create(char_u *arg, 
 			gtk_radio_button_group(GTK_RADIO_BUTTON(frdp->up)),
 			CONV(_("Down")));
     gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(frdp->down), TRUE);
-#ifdef HAVE_GTK2
     gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
-#endif
     gtk_box_pack_start(GTK_BOX(vbox), frdp->down, TRUE, TRUE, 0);
 
     /* vbox to hold the action buttons */
     actionarea = gtk_vbutton_box_new();
     gtk_container_border_width(GTK_CONTAINER(actionarea), 2);
-#ifndef HAVE_GTK2
-    if (do_replace)
-    {
-	gtk_button_box_set_layout(GTK_BUTTON_BOX(actionarea),
-				  GTK_BUTTONBOX_END);
-	gtk_button_box_set_spacing(GTK_BUTTON_BOX(actionarea), 0);
-    }
-#endif
     gtk_box_pack_end(GTK_BOX(hbox), actionarea, FALSE, FALSE, 0);
 
     /* 'Find Next' button */
-#ifdef HAVE_GTK2
     frdp->find = create_image_button(GTK_STOCK_FIND, _("Find Next"));
-#else
-    frdp->find = gtk_button_new_with_label(_("Find Next"));
-#endif
     gtk_widget_set_sensitive(frdp->find, sensitive);
 
     gtk_signal_connect(GTK_OBJECT(frdp->find), "clicked",
@@ -2785,11 +1744,7 @@ find_replace_dialog_create(char_u *arg, 
     if (do_replace)
     {
 	/* 'Replace' button */
-#ifdef HAVE_GTK2
 	frdp->replace = create_image_button(GTK_STOCK_CONVERT, _("Replace"));
-#else
-	frdp->replace = gtk_button_new_with_label(_("Replace"));
-#endif
 	gtk_widget_set_sensitive(frdp->replace, sensitive);
 	GTK_WIDGET_SET_FLAGS(frdp->replace, GTK_CAN_DEFAULT);
 	gtk_box_pack_start(GTK_BOX(actionarea), frdp->replace, FALSE, FALSE, 0);
@@ -2798,11 +1753,7 @@ find_replace_dialog_create(char_u *arg, 
 			   GINT_TO_POINTER(FRD_REPLACE));
 
 	/* 'Replace All' button */
-#ifdef HAVE_GTK2
 	frdp->all = create_image_button(GTK_STOCK_CONVERT, _("Replace All"));
-#else
-	frdp->all = gtk_button_new_with_label(_("Replace All"));
-#endif
 	gtk_widget_set_sensitive(frdp->all, sensitive);
 	GTK_WIDGET_SET_FLAGS(frdp->all, GTK_CAN_DEFAULT);
 	gtk_box_pack_start(GTK_BOX(actionarea), frdp->all, FALSE, FALSE, 0);
@@ -2812,11 +1763,7 @@ find_replace_dialog_create(char_u *arg, 
     }
 
     /* 'Cancel' button */
-#ifdef HAVE_GTK2
     tmp = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
-#else
-    tmp = gtk_button_new_with_label(_("Cancel"));
-#endif
     GTK_WIDGET_SET_FLAGS(tmp, GTK_CAN_DEFAULT);
     gtk_box_pack_end(GTK_BOX(actionarea), tmp, FALSE, FALSE, 0);
     gtk_signal_connect_object(GTK_OBJECT(tmp),
@@ -2827,36 +1774,15 @@ find_replace_dialog_create(char_u *arg, 
 			      GTK_OBJECT(frdp->dialog));
 
     tmp = gtk_vseparator_new();
-#ifdef HAVE_GTK2
     gtk_box_pack_end(GTK_BOX(hbox), tmp, FALSE, FALSE, 10);
-#else
-    gtk_box_pack_end(GTK_BOX(hbox), tmp, FALSE, TRUE, 0);
-#endif
-
-#ifndef HAVE_GTK2
-    gtk_widget_grab_focus(frdp->what);
 
-    /* show the frame and realize the frdp->dialog this gives us a window size
-     * request that we'll use to position the window within the boundary of
-     * the mainwin --dbv */
-    gtk_widget_show_all(frame);
-    gui_gtk_position_in_parent(GTK_WIDGET(gui.mainwin),
-				      GTK_WIDGET(frdp->dialog), VW_POS_MOUSE);
-    gui_gtk_synch_fonts();
-    gtk_widget_show_all(frdp->dialog);
-#endif
-
-#ifdef HAVE_GTK2
     /* Suppress automatic show of the unused action area */
     gtk_widget_hide(GTK_DIALOG(frdp->dialog)->action_area);
     gtk_widget_show_all(hbox);
     gtk_widget_show(frdp->dialog);
-#endif
 
     vim_free(entry_text);
-#ifdef HAVE_GTK2
     vim_free(conv_buffer);
-#endif
 #undef CONV
 }
 
@@ -2874,65 +1800,6 @@ gui_mch_replace_dialog(exarg_T *eap)
 	find_replace_dialog_create(eap->arg, TRUE);
 }
 
-
-#if !defined(HAVE_GTK2) || defined(PROTO)
-/*
- * Synchronize all gui elements, which are dependant upon the
- * main text font used. Those are in esp. the find/replace dialogs.
- * If you don't understand why this should be needed, please try to
- * search for "pięść" in iso8859-2.
- *
- * (<danielk> I converted the comment above to UTF-8 to put
- *  a stopper to the encoding mess.  Forgive me :)
- *
- * Obsolete with GTK2.
- */
-    void
-gui_gtk_synch_fonts(void)
-{
-    SharedFindReplace *frdp;
-    int do_replace;
-
-    /* OK this loop is a bit tricky... */
-    for (do_replace = 0; do_replace <= 1; ++do_replace)
-    {
-	frdp = (do_replace) ? (&repl_widgets) : (&find_widgets);
-	if (frdp->dialog)
-	{
-	    GtkStyle *style;
-
-	    /* synch the font with whats used by the text itself */
-	    style = gtk_style_copy(gtk_widget_get_style(frdp->what));
-	    gdk_font_unref(style->font);
-# ifdef FEAT_XFONTSET
-	    if (gui.fontset != NOFONTSET)
-		style->font = gui.fontset;
-	    else
-# endif
-		style->font = gui.norm_font;
-	    gdk_font_ref(style->font);
-	    gtk_widget_set_style(frdp->what, style);
-	    gtk_style_unref(style);
-	    if (do_replace)
-	    {
-		style = gtk_style_copy(gtk_widget_get_style(frdp->with));
-		gdk_font_unref(style->font);
-# ifdef FEAT_XFONTSET
-		if (gui.fontset != NOFONTSET)
-		    style->font = gui.fontset;
-		else
-# endif
-		    style->font = gui.norm_font;
-		gdk_font_ref(style->font);
-		gtk_widget_set_style(frdp->with, style);
-		gtk_style_unref(style);
-	    }
-	}
-    }
-}
-#endif /* !HAVE_GTK2 */
-
-
 /*
  * Callback for actions of the find and replace dialogs
  */
@@ -2968,15 +1835,11 @@ find_replace_cb(GtkWidget *widget UNUSED
     if (GTK_TOGGLE_BUTTON(sfr->mcase)->active)
 	flags |= FRD_MATCH_CASE;
 
-#ifdef HAVE_GTK2
     repl_text = CONVERT_FROM_UTF8(repl_text);
     find_text = CONVERT_FROM_UTF8(find_text);
-#endif
     rc = gui_do_findrepl(flags, find_text, repl_text, direction_down);
-#ifdef HAVE_GTK2
     CONVERT_FROM_UTF8_FREE(repl_text);
     CONVERT_FROM_UTF8_FREE(find_text);
-#endif
 
     if (rc && gtk_main_level() > 0)
 	gtk_main_quit(); /* make sure cmd will be handled immediately */
@@ -3035,83 +1898,3 @@ ex_helpfind(eap)
      * backwards compatibility anyway. */
     do_cmdline_cmd((char_u *)"emenu ToolBar.FindHelp");
 }
-
-#if !defined(HAVE_GTK2) || defined(PROTO) /* Crack crack crack.  Brrrr. */
-
-/*  gui_gtk_position_in_parent
- *
- *  this function causes a child window to be placed within the boundary of
- *  the parent (mainwin) window.
- *
- *  you can specify where the window will be positioned by the third argument
- *  (defined in gui.h):
- *	VW_POS_CENTER		at center of parent window
- *	VW_POS_MOUSE		center of child at mouse position
- *	VW_POS_TOP_CENTER	top of child at top of parent centered
- *				horizontally about the mouse.
- *
- *  NOTE: for this function to act as desired the child window must have a
- *	  window size requested.  this can be accomplished by packing/placing
- *	  child widgets onto a gtk_frame widget rather than the gtk_window
- *	  widget...
- *
- *  brent -- dbv
- */
-    static void
-gui_gtk_position_in_parent(
-	GtkWidget	*parent,
-	GtkWidget	*child,
-	gui_win_pos_T	where)
-{
-    GtkRequisition	c_size;
-    gint		xPm, yPm;
-    gint		xP, yP, wP, hP, pos_x, pos_y;
-
-    /* make sure the child widget is set up then get its size. */
-    gtk_widget_size_request(child, &c_size);
-
-    /* get origin and size of parent window */
-    gdk_window_get_origin((GdkWindow *)(parent->window), &xP, &yP);
-    gdk_window_get_size((GdkWindow *)(parent->window), &wP, &hP);
-
-    if (c_size.width > wP || c_size.height > hP)
-    {
-	/* doh! maybe the user should consider giving gVim a little more
-	 * screen real estate */
-	gtk_widget_set_uposition(child , xP + 2 , yP + 2);
-	return;
-    }
-
-    if (where == VW_POS_MOUSE)
-    {
-	/* position window at mouse pointer */
-	gtk_widget_get_pointer(parent, &xPm, &yPm);
-	pos_x = xP + xPm - (c_size.width) / 2;
-	pos_y = yP + yPm - (c_size.height) / 2;
-    }
-    else
-    {
-	/* set child x origin so it is in center of Vim window */
-	pos_x =  xP + (wP - c_size.width) / 2;
-
-	if (where == VW_POS_TOP_CENTER)
-	    pos_y = yP + 2;
-	else
-	    /* where == VW_POS_CENTER */
-	    pos_y = yP + (hP - c_size.height) / 2;
-    }
-
-    /* now, make sure the window will be inside the Vim window... */
-    if (pos_x < xP)
-	pos_x = xP + 2;
-    if (pos_y < yP)
-	pos_y = yP + 2;
-    if ((pos_x + c_size.width) > (wP + xP))
-	pos_x = xP + wP - c_size.width - 2;
-    /* Assume 'guiheadroom' indicates the title bar height... */
-    if ((pos_y + c_size.height + p_ghr / 2) > (hP + yP))
-
-    gtk_widget_set_uposition(child, pos_x, pos_y);
-}
-
-#endif /* !HAVE_GTK2 */