From 1401cf5f828548821106c5767f9a527e04c62241 Mon Sep 17 00:00:00 2001 From: Sergey Vlasov Date: Wed, 2 May 2001 09:50:59 +0000 Subject: [PATCH] Fixed a bug with disabled username/password boxes when editing POP3 account after NNTP with authentication; some layout tweaks in the account preferences window. --- ChangeLog.claws | 16 +++++++ src/prefs_account.c | 113 ++++++++++++++++++++++++++++---------------- 2 files changed, 88 insertions(+), 41 deletions(-) diff --git a/ChangeLog.claws b/ChangeLog.claws index f7a97039a..d2446f35d 100644 --- a/ChangeLog.claws +++ b/ChangeLog.claws @@ -1,3 +1,19 @@ +2001-05-02 [sergey] + + * src/prefs_account.c (prefs_account_fix_size): new function. + (prefs_account_create): call prefs_account_fix_size(); use + gtk_widget_show instead of gtk_widget_show_all (fixes too large + size when the window is shown for the first time). + (prefs_account_basic_create): changed layout of serv_table; moved + localmbox_entry above smtpserv_entry (logically it replaces + POP3/IMAP server). + (prefs_account_protocol_activated): set sensitivity of + nntpauth_chkbtn according to the protocol (in addition to + hide/show); commented out gtk_table_set_row_spacing() calls. + (prefs_account_nntpauth_toggled): do nothing if nntpauth_chkbtn is + not sensitive (fixes a bug with disabled username/password boxes + when editing POP3 account after NNTP with authentication). + 2001-05-02 [hoa] * src/account.c diff --git a/src/prefs_account.c b/src/prefs_account.c index d1aa82319..59641e06f 100644 --- a/src/prefs_account.c +++ b/src/prefs_account.c @@ -128,6 +128,8 @@ static struct Advanced { GtkWidget *domain_entry; } advanced; +static void prefs_account_fix_size (void); + static void prefs_account_protocol_set_data_from_optmenu(PrefParam *pparam); static void prefs_account_protocol_set_optmenu (PrefParam *pparam); static void prefs_account_protocol_activated (GtkMenuItem *menuitem); @@ -523,7 +525,27 @@ static void prefs_account_create(void) prefs_account_advanced_create(); SET_NOTEBOOK_LABEL(dialog.notebook, _("Advanced"), page++); - gtk_widget_show_all(dialog.window); + prefs_account_fix_size(); + gtk_widget_show(dialog.window); +} + +/** + * prefs_account_fix_size: + * + * Fix the window size after creating widgets by selecting "Local" + * protocol (currently it has the largest size of parameter widgets). + * Without this the window gets too large. + **/ +static void prefs_account_fix_size(void) +{ + GtkOptionMenu *optmenu = GTK_OPTION_MENU (basic.protocol_optmenu); + GtkWidget *menu; + GtkWidget *menuitem; + + gtk_option_menu_set_history (optmenu, 4); /* local */ + menu = gtk_option_menu_get_menu (optmenu); + menuitem = gtk_menu_get_active (GTK_MENU (menu)); + gtk_menu_item_activate (GTK_MENU_ITEM (menuitem)); } #define SET_ACTIVATE(menuitem) \ @@ -533,6 +555,8 @@ static void prefs_account_create(void) NULL); \ } +#define TABLE_YPAD 2 + static void prefs_account_basic_create(void) { GtkWidget *vbox1; @@ -688,46 +712,46 @@ static void prefs_account_basic_create(void) serv_table = gtk_table_new (8, 4, FALSE); gtk_widget_show (serv_table); gtk_box_pack_start (GTK_BOX (vbox2), serv_table, FALSE, FALSE, 0); - gtk_table_set_row_spacings (GTK_TABLE (serv_table), VSPACING_NARROW); + gtk_table_set_row_spacings (GTK_TABLE (serv_table), 0); gtk_table_set_col_spacings (GTK_TABLE (serv_table), 8); nntpserv_entry = gtk_entry_new (); gtk_widget_show (nntpserv_entry); gtk_table_attach (GTK_TABLE (serv_table), nntpserv_entry, 1, 4, 0, 1, GTK_EXPAND | GTK_SHRINK | GTK_FILL, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); - gtk_table_set_row_spacing (GTK_TABLE (serv_table), 0, 0); + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD); +/* gtk_table_set_row_spacing (GTK_TABLE (serv_table), 0, 0); */ recvserv_entry = gtk_entry_new (); gtk_widget_show (recvserv_entry); gtk_table_attach (GTK_TABLE (serv_table), recvserv_entry, 1, 4, 1, 2, GTK_EXPAND | GTK_SHRINK | GTK_FILL, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); - - smtpserv_entry = gtk_entry_new (); - gtk_widget_show (smtpserv_entry); - gtk_table_attach (GTK_TABLE (serv_table), smtpserv_entry, 1, 4, 2, 3, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD); localmbox_entry = gtk_entry_new (); gtk_widget_show (localmbox_entry); - gtk_table_attach (GTK_TABLE (serv_table), localmbox_entry, 1, 4, 3, 4, + gtk_table_attach (GTK_TABLE (serv_table), localmbox_entry, 1, 4, 2, 3, GTK_EXPAND | GTK_SHRINK | GTK_FILL, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD); + + smtpserv_entry = gtk_entry_new (); + gtk_widget_show (smtpserv_entry); + gtk_table_attach (GTK_TABLE (serv_table), smtpserv_entry, 1, 4, 3, 4, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD); mailcmd_entry = gtk_entry_new (); gtk_widget_show (mailcmd_entry); gtk_table_attach (GTK_TABLE (serv_table), mailcmd_entry, 1, 4, 5, 6, GTK_EXPAND | GTK_SHRINK | GTK_FILL, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD); nntpauth_chkbtn = gtk_check_button_new_with_label (_("NNTP server requires authentication")); gtk_widget_show (nntpauth_chkbtn); gtk_table_attach (GTK_TABLE (serv_table), nntpauth_chkbtn, 0, 4, 6, 7, GTK_EXPAND | GTK_FILL, - 0, 0, 0); + 0, 0, TABLE_YPAD); gtk_signal_connect(GTK_OBJECT(nntpauth_chkbtn), "toggled", GTK_SIGNAL_FUNC(prefs_account_nntpauth_toggled), NULL); @@ -737,48 +761,48 @@ static void prefs_account_basic_create(void) gtk_widget_set_usize (uid_entry, DEFAULT_ENTRY_WIDTH, -1); gtk_table_attach (GTK_TABLE (serv_table), uid_entry, 1, 2, 7, 8, GTK_EXPAND | GTK_SHRINK | GTK_FILL, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD); pass_entry = gtk_entry_new (); gtk_widget_show (pass_entry); gtk_widget_set_usize (pass_entry, DEFAULT_ENTRY_WIDTH, -1); gtk_table_attach (GTK_TABLE (serv_table), pass_entry, 3, 4, 7, 8, GTK_EXPAND | GTK_SHRINK | GTK_FILL, - GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0); + GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, TABLE_YPAD); gtk_entry_set_visibility (GTK_ENTRY (pass_entry), FALSE); nntpserv_label = gtk_label_new (_("News server")); gtk_widget_show (nntpserv_label); gtk_table_attach (GTK_TABLE (serv_table), nntpserv_label, 0, 1, 0, 1, - GTK_FILL, 0, 0, 0); + GTK_FILL, 0, 0, TABLE_YPAD); gtk_misc_set_alignment (GTK_MISC (nntpserv_label), 1, 0.5); recvserv_label = gtk_label_new (_("Server for receiving")); gtk_widget_show (recvserv_label); gtk_table_attach (GTK_TABLE (serv_table), recvserv_label, 0, 1, 1, 2, - GTK_FILL, 0, 0, 0); + GTK_FILL, 0, 0, TABLE_YPAD); gtk_misc_set_alignment (GTK_MISC (recvserv_label), 1, 0.5); + localmbox_label = gtk_label_new (_("Local mailbox file")); + gtk_widget_show (localmbox_label); + gtk_table_attach (GTK_TABLE (serv_table), localmbox_label, 0, 1, 2, 3, + GTK_FILL, 0, 0, TABLE_YPAD); + gtk_misc_set_alignment (GTK_MISC (localmbox_label), 1, 0.5); +/* gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); */ + smtpserv_label = gtk_label_new (_("SMTP server (send)")); gtk_widget_show (smtpserv_label); - gtk_table_attach (GTK_TABLE (serv_table), smtpserv_label, 0, 1, 2, 3, - GTK_FILL, 0, 0, 0); + gtk_table_attach (GTK_TABLE (serv_table), smtpserv_label, 0, 1, 3, 4, + GTK_FILL, 0, 0, TABLE_YPAD); gtk_misc_set_alignment (GTK_MISC (smtpserv_label), 1, 0.5); - gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); - - localmbox_label = gtk_label_new (_("mailbox of the user")); - gtk_widget_show (localmbox_label); - gtk_table_attach (GTK_TABLE (serv_table), localmbox_label, 0, 1, 3, 4, - GTK_FILL, 0, 0, 0); - gtk_misc_set_alignment (GTK_MISC (localmbox_label), 1, 0.5); - gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); +/* gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); */ mailcmd_chkbtn = gtk_check_button_new_with_label (_("Use mail command rather than SMTP server")); gtk_widget_show (mailcmd_chkbtn); gtk_table_attach (GTK_TABLE (serv_table), mailcmd_chkbtn, 0, 4, 4, 5, GTK_EXPAND | GTK_FILL, - 0, 0, 0); + 0, 0, TABLE_YPAD); gtk_signal_connect(GTK_OBJECT(mailcmd_chkbtn), "toggled", GTK_SIGNAL_FUNC(prefs_account_mailcmd_toggled), NULL); @@ -786,20 +810,20 @@ static void prefs_account_basic_create(void) mailcmd_label = gtk_label_new (_("command to send mails")); gtk_widget_show (mailcmd_label); gtk_table_attach (GTK_TABLE (serv_table), mailcmd_label, 0, 1, 5, 6, - GTK_FILL, 0, 0, 0); + GTK_FILL, 0, 0, TABLE_YPAD); gtk_misc_set_alignment (GTK_MISC (mailcmd_label), 1, 0.5); - gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); +/* gtk_table_set_row_spacing (GTK_TABLE (serv_table), 2, 0); */ uid_label = gtk_label_new (_("User ID")); gtk_widget_show (uid_label); gtk_table_attach (GTK_TABLE (serv_table), uid_label, 0, 1, 7, 8, - GTK_FILL, 0, 0, 0); + GTK_FILL, 0, 0, TABLE_YPAD); gtk_misc_set_alignment (GTK_MISC (uid_label), 1, 0.5); pass_label = gtk_label_new (_("Password")); gtk_widget_show (pass_label); gtk_table_attach (GTK_TABLE (serv_table), pass_label, 2, 3, 7, 8, - 0, 0, 0, 0); + 0, 0, 0, TABLE_YPAD); basic.acname_entry = acname_entry; basic.default_chkbtn = default_chkbtn; @@ -1359,6 +1383,7 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem) gtk_widget_set_sensitive(basic.inbox_entry, FALSE); gtk_widget_show(basic.nntpserv_label); gtk_widget_show(basic.nntpserv_entry); + gtk_widget_set_sensitive(basic.nntpauth_chkbtn, TRUE); gtk_widget_show(basic.nntpauth_chkbtn); gtk_widget_hide(basic.recvserv_label); gtk_widget_hide(basic.recvserv_entry); @@ -1369,7 +1394,7 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem) gtk_widget_hide(basic.mailcmd_label); gtk_widget_hide(basic.mailcmd_entry); gtk_widget_hide(basic.mailcmd_chkbtn); - gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table), 3, 0); +/* gtk_table_set_row_spacing (GTK_TABLE (basic.serv_table), 3, 0); */ /* update userid/passwd sensitive state */ prefs_account_nntpauth_toggled (GTK_TOGGLE_BUTTON(basic.nntpauth_chkbtn), NULL); @@ -1380,6 +1405,7 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem) gtk_widget_set_sensitive(basic.inbox_entry, TRUE); gtk_widget_hide(basic.nntpserv_label); gtk_widget_hide(basic.nntpserv_entry); + gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE); gtk_widget_hide(basic.nntpauth_chkbtn); gtk_widget_set_sensitive(basic.recvserv_label, FALSE); gtk_widget_set_sensitive(basic.recvserv_entry, FALSE); @@ -1392,8 +1418,8 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem) gtk_widget_show(basic.mailcmd_label); gtk_widget_show(basic.mailcmd_entry); gtk_widget_show(basic.mailcmd_chkbtn); - gtk_table_set_row_spacing - (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); +/* gtk_table_set_row_spacing */ +/* (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */ gtk_widget_set_sensitive(basic.uid_label, FALSE); gtk_widget_set_sensitive(basic.pass_label, FALSE); gtk_widget_set_sensitive(basic.uid_entry, FALSE); @@ -1434,6 +1460,7 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem) gtk_widget_set_sensitive(basic.inbox_entry, TRUE); gtk_widget_hide(basic.nntpserv_label); gtk_widget_hide(basic.nntpserv_entry); + gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE); gtk_widget_hide(basic.nntpauth_chkbtn); gtk_widget_set_sensitive(basic.recvserv_label, TRUE); gtk_widget_set_sensitive(basic.recvserv_entry, TRUE); @@ -1446,8 +1473,8 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem) gtk_widget_hide(basic.mailcmd_label); gtk_widget_hide(basic.mailcmd_entry); gtk_widget_hide(basic.mailcmd_chkbtn); - gtk_table_set_row_spacing - (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); +/* gtk_table_set_row_spacing */ +/* (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */ gtk_widget_set_sensitive(basic.uid_label, TRUE); gtk_widget_set_sensitive(basic.pass_label, TRUE); gtk_widget_set_sensitive(basic.uid_entry, TRUE); @@ -1459,8 +1486,10 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem) default: // POP3 gtk_widget_set_sensitive(basic.inbox_label, TRUE); gtk_widget_set_sensitive(basic.inbox_entry, TRUE); + gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE); gtk_widget_hide(basic.nntpserv_label); gtk_widget_hide(basic.nntpserv_entry); + gtk_widget_set_sensitive(basic.nntpauth_chkbtn, FALSE); gtk_widget_hide(basic.nntpauth_chkbtn); gtk_widget_set_sensitive(basic.recvserv_label, TRUE); gtk_widget_set_sensitive(basic.recvserv_entry, TRUE); @@ -1473,8 +1502,8 @@ static void prefs_account_protocol_activated(GtkMenuItem *menuitem) gtk_widget_hide(basic.mailcmd_label); gtk_widget_hide(basic.mailcmd_entry); gtk_widget_hide(basic.mailcmd_chkbtn); - gtk_table_set_row_spacing - (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); +/* gtk_table_set_row_spacing */ +/* (GTK_TABLE (basic.serv_table), 3, VSPACING_NARROW); */ gtk_widget_set_sensitive(basic.uid_label, TRUE); gtk_widget_set_sensitive(basic.pass_label, TRUE); gtk_widget_set_sensitive(basic.uid_entry, TRUE); @@ -1493,6 +1522,8 @@ static void prefs_account_nntpauth_toggled(GtkToggleButton *button, { gboolean auth; + if (!GTK_WIDGET_SENSITIVE (GTK_WIDGET (button))) + return; auth = gtk_toggle_button_get_active (button); gtk_widget_set_sensitive(basic.uid_label, auth); gtk_widget_set_sensitive(basic.pass_label, auth); -- 2.25.1