4 From: Bram Moolenaar <Bram@moolenaar.net>
6 Content-Type: text/plain; charset=ISO-8859-1
7 Content-Transfer-Encoding: 8bit
11 Problem: GTK 2: Search and Search/Replace dialogs are synced, that makes no
12 sense. Buttons are sometimes greyed-out. (Jeremy Messenger)
13 Solution: Remove the code to sync the two dialogs. Adjust the code to react
14 to an empty search string to also work for GTK2. (David Necas)
18 *** ../vim-6.2.240/src/gui_gtk.c Fri Feb 6 19:22:46 2004
19 --- src/gui_gtk.c Fri Feb 6 15:22:50 2004
22 #endif /* HAVE_GTK2 */
24 static void entry_activate_cb(GtkWidget *widget, gpointer data);
25 - #ifndef HAVE_GTK2 /* crack alert! */
26 static void entry_changed_cb(GtkWidget *entry, GtkWidget *dialog);
28 - static void find_direction_cb(GtkWidget *widget, gpointer data);
29 static void find_replace_cb(GtkWidget *widget, gpointer data);
30 - static void wword_match_cb(GtkWidget *widget, gpointer data);
31 - static void mcase_match_cb(GtkWidget *widget, gpointer data);
32 - static void repl_dir_cb(GtkWidget *widget, gpointer data);
34 #if defined(FEAT_TOOLBAR) && defined(HAVE_GTK2)
39 sensitive = (entry_text != NULL && entry_text[0] != NUL);
40 if (entry_text != NULL)
41 gtk_entry_set_text(GTK_ENTRY(frdp->what), (char *)entry_text);
43 gtk_signal_connect(GTK_OBJECT(frdp->what), "changed",
44 GTK_SIGNAL_FUNC(entry_changed_cb), frdp->dialog);
46 gtk_signal_connect_after(GTK_OBJECT(frdp->what), "key_press_event",
47 GTK_SIGNAL_FUNC(find_key_press_event),
52 frdp->wword = gtk_check_button_new_with_label(CONV(_("Match whole word only")));
53 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(frdp->wword),
55 - gtk_signal_connect(GTK_OBJECT(frdp->wword), "clicked",
56 - GTK_SIGNAL_FUNC(wword_match_cb), NULL);
58 gtk_table_attach(GTK_TABLE(table), frdp->wword, 0, 1023, 2, 3,
59 GTK_FILL, GTK_EXPAND, 2, 2);
63 frdp->mcase = gtk_check_button_new_with_label(CONV(_("Match case")));
64 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(frdp->mcase),
66 - gtk_signal_connect(GTK_OBJECT(frdp->mcase), "clicked",
67 - GTK_SIGNAL_FUNC(mcase_match_cb), NULL);
69 gtk_table_attach(GTK_TABLE(table), frdp->mcase, 0, 1023, 3, 4,
70 GTK_FILL, GTK_EXPAND, 2, 2);
74 gtk_radio_button_group(GTK_RADIO_BUTTON(frdp->up)),
76 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(frdp->down), TRUE);
77 - gtk_signal_connect(GTK_OBJECT(frdp->down), "clicked",
78 - (do_replace) ? GTK_SIGNAL_FUNC(repl_dir_cb)
79 - : GTK_SIGNAL_FUNC(find_direction_cb),
82 gtk_container_set_border_width(GTK_CONTAINER(vbox), 2);
90 - * The following are used to synchronize the direction setting
91 - * between the search and the replace dialog.
95 - find_direction_cb(GtkWidget * widget, gpointer data)
97 - gboolean direction_down = GTK_TOGGLE_BUTTON(widget)->active;
99 - if (repl_widgets.dialog)
102 - w = direction_down ? repl_widgets.down : repl_widgets.up;
104 - if (!GTK_TOGGLE_BUTTON(w)->active)
105 - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(w), TRUE);
111 - repl_dir_cb(GtkWidget *widget, gpointer data)
113 - gboolean direction_down = GTK_TOGGLE_BUTTON(widget)->active;
115 - if (find_widgets.dialog)
118 - w = direction_down ? find_widgets.down : find_widgets.up;
120 - if (!GTK_TOGGLE_BUTTON(w)->active)
121 - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(w), TRUE);
127 - wword_match_cb(GtkWidget * widget, gpointer data)
129 - gboolean active = GTK_TOGGLE_BUTTON(widget)->active;
131 - if (find_widgets.dialog)
132 - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(find_widgets.wword),
134 - if (repl_widgets.dialog)
135 - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(repl_widgets.wword),
141 - mcase_match_cb(GtkWidget * widget, gpointer data)
143 - gboolean active = GTK_TOGGLE_BUTTON(widget)->active;
145 - if (find_widgets.dialog)
146 - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(find_widgets.mcase),
148 - if (repl_widgets.dialog)
149 - gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(repl_widgets.mcase),
154 * Syncing the find/replace dialogs on the fly is utterly useless crack,
155 * and causes nothing but problems. Please tell me a use case for which
156 * you'd need both a find dialog and a find/replace one at the same time,
160 * particularly evil incarnation of braindeadness, whatever; I'd much rather
161 * see it extinguished from this planet. Thanks for listening. Sorry.
165 entry_changed_cb(GtkWidget * entry, GtkWidget * dialog)
170 if (dialog == find_widgets.dialog)
172 gtk_widget_set_sensitive(find_widgets.find, nonempty);
173 - if (repl_widgets.dialog)
175 - gtk_widget_set_sensitive(repl_widgets.find, nonempty);
176 - gtk_widget_set_sensitive(repl_widgets.replace, nonempty);
177 - gtk_widget_set_sensitive(repl_widgets.all, nonempty);
178 - if (strcmp(entry_text,
179 - gtk_entry_get_text(GTK_ENTRY(repl_widgets.what))))
180 - gtk_entry_set_text(GTK_ENTRY(repl_widgets.what), entry_text);
183 if (dialog == repl_widgets.dialog)
185 gtk_widget_set_sensitive(repl_widgets.find, nonempty);
186 gtk_widget_set_sensitive(repl_widgets.replace, nonempty);
187 gtk_widget_set_sensitive(repl_widgets.all, nonempty);
188 - if (find_widgets.dialog)
190 - gtk_widget_set_sensitive(find_widgets.find, nonempty);
191 - if (strcmp(entry_text,
192 - gtk_entry_get_text(GTK_ENTRY(find_widgets.what))))
193 - gtk_entry_set_text(GTK_ENTRY(find_widgets.what), entry_text);
202 if (dialog == find_widgets.dialog)
204 gtk_widget_set_sensitive(find_widgets.find, nonempty);
207 if (dialog == repl_widgets.dialog)
209 gtk_widget_set_sensitive(repl_widgets.find, nonempty);
210 gtk_widget_set_sensitive(repl_widgets.replace, nonempty);
211 gtk_widget_set_sensitive(repl_widgets.all, nonempty);
217 *** ../vim-6.2.240/src/version.c Fri Feb 6 19:22:46 2004
218 --- src/version.c Fri Feb 6 19:29:40 2004
222 { /* Add new patch number below this line */
228 hundred-and-one symptoms of being an internet addict:
229 65. The last time you looked at the clock it was 11:30pm, and in what
230 seems like only a few seconds later, your sister runs past you to
231 catch her 7am school bus.
233 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
234 /// Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
235 \\\ Project leader for A-A-P -- http://www.A-A-P.org ///
236 \\\ Help AIDS victims, buy here: http://ICCF-Holland.org/click1.html ///