[evolution-patches] patch for #49702
- From: Bill Zhu <bill zhu sun com>
- To: evolution-patches lists ximian com
- Subject: [evolution-patches] patch for #49702
- Date: Thu, 29 Jan 2004 21:19:15 +0800
This patch fix the bug of "Find window lacks error messages"
Also see:
http://bugzilla.ximian.com/show_bug.cgi?id=49702
Comments:
I use the existing dialog each time.
And maintain one dialog till the composer is destroyed.
? components/html-editor/GNOME_GtkHTML_Editor-emacs.xml
? components/html-editor/test_editor
Index: components/html-editor/ChangeLog
===================================================================
RCS file: /cvs/gnome/gtkhtml/components/html-editor/ChangeLog,v
retrieving revision 1.410.2.12
diff -u -p -r1.410.2.12 ChangeLog
--- components/html-editor/ChangeLog 10 Dec 2003 03:35:55 -0000 1.410.2.12
+++ components/html-editor/ChangeLog 22 Dec 2003 11:05:02 -0000
@@ -0,0 +0,8 @@
+2003-12-12 Charles Zhang <charles zhang sun com>
+
+ * search.c (search): use existing find dialog, not new one blindly.
+ (search_dialog_response): if not found, disable the Find button
+ and leave dialog visible to indicate the user.
+ (entry_changed): enable the Find button when entry changed.
+ Fixes bug #49702
+
Index: components/html-editor/search.c
===================================================================
RCS file: /cvs/gnome/gtkhtml/components/html-editor/search.c,v
retrieving revision 1.22
diff -u -p -r1.22 search.c
--- components/html-editor/search.c 12 May 2003 20:46:48 -0000 1.22
+++ components/html-editor/search.c 22 Dec 2003 11:05:02 -0000
@@ -44,6 +44,8 @@ entry_changed (GtkWidget *entry, GtkHTML
if (d->cd->search_text)
g_free (d->cd->search_text);
d->cd->search_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (d->entry)));
+
+ gtk_dialog_set_response_sensitive (d->dialog, 0, TRUE);
}
static void
@@ -55,12 +57,22 @@ entry_activate (GtkWidget *entry, GtkHTM
static void
search_dialog_response (GtkDialog *dialog, gint response_id, GtkHTMLSearchDialog *d)
{
+ g_assert (d && d->dialog );
+
switch (response_id) {
case 0: /* Search */
- gtk_widget_hide (GTK_WIDGET (d->dialog));
- html_engine_search (d->html->engine, gtk_entry_get_text (GTK_ENTRY (d->entry)),
- GTK_TOGGLE_BUTTON (d->case_sensitive)->active,
- GTK_TOGGLE_BUTTON (d->backward)->active == 0, d->cd->regular);
+ if (!html_engine_search (d->html->engine, gtk_entry_get_text (GTK_ENTRY (d->entry)),
+ GTK_TOGGLE_BUTTON (d->case_sensitive)->active,
+ GTK_TOGGLE_BUTTON (d->backward)->active == 0, d->cd->regular))
+ gtk_dialog_set_response_sensitive (d->dialog, 0, FALSE);
+ else
+ gtk_widget_hide (d->dialog);
+ break;
+
+ case GTK_RESPONSE_DELETE_EVENT:
+ case GTK_RESPONSE_CLOSE:
+ gtk_dialog_set_response_sensitive (d->dialog, 0, TRUE);
+ gtk_widget_hide (d->dialog);
break;
}
}
@@ -115,6 +127,8 @@ gtk_html_search_dialog_new (GtkHTML *htm
void
gtk_html_search_dialog_destroy (GtkHTMLSearchDialog *d)
{
+ g_assert (d && d->dialog);
+
gtk_widget_destroy (GTK_WIDGET (d->dialog));
g_free (d);
}
@@ -124,8 +138,13 @@ search (GtkHTMLControlData *cd, gboolean
{
cd->regular = regular;
RUN_DIALOG (search, regular ? _("Find Regular Expression") : _("Find"));
- gtk_html_search_dialog_destroy (cd->search_dialog);
- cd->search_dialog = NULL;
+
+ g_assert (cd->search_dialog && cd->search_dialog->dialog);
+
+ if (!GTK_WIDGET_VISIBLE (cd->search_dialog->dialog)) {
+ gtk_html_search_dialog_destroy (cd->search_dialog);
+ cd->search_dialog = NULL;
+ }
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]