[pan2] - a few gui fixes - downgrade gnome-keyring version (please report any errors)



commit 2421b6902b9c7c3de16e6fbd9470aba1390eca4c
Author: Heinrich MÃller <henmull src gnome org>
Date:   Fri Jan 27 21:15:30 2012 +0100

    - a few gui fixes
    - downgrade gnome-keyring version (please report any errors)

 ChangeLog                  |    9 +++-
 configure.in               |    2 +-
 pan/gui/body-pane.cc       |  105 ++++++++++++++++++++++++++++---------------
 pan/gui/body-pane.h        |   21 ++-------
 pan/gui/pan.cc             |   16 +------
 pan/gui/prefs-ui.cc        |   82 +++++++++++++++++++++++++++-------
 pan/gui/profiles-dialog.cc |    3 +-
 7 files changed, 149 insertions(+), 89 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index aaa52a3..5dd2f47 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,13 +1,16 @@
 1.0 "Asieoniezi"
 
-0.136 "TBD"
+0.136 "Far too busy being delicious..."
 * Support for uploading attachments (with NZB creation) to Usenet. (Heinrich MÃller)
 * Selectable Content-Transfer-Encoding (Heinrich MÃller)
 * Selectable GtkSpell default language (Heinrich MÃller)
 * Support for encrypting and signing articles with a public/private PGP key. (Heinrich MÃller)
-* Connections can now be encrypted with SSL 3.0. (Heinrich MÃller)
+* Connections can now be encrypted with TLS 1.0. (Heinrich MÃller)
 * Various bugfixes/enhancements from bugzilla
-* Auto-Cache/-Download/-Delete based on Scores (Heinrich MÃller)
+* Auto-Cache/-Download/-Delete/-Mark read based on Scores (Heinrich MÃller)
+* DBUS support for automatic batch addition of new files to the Download Queue (Heinrich MÃller)
+* Status Icon support (Heinrich MÃller)
+* Gnome Keyring support for safely storing server passwords (Heinrich MÃller)
 * Updated translations and help: Spanish (Daniel Mustieles, NicolÃs Satragno), Slovenian
   (Andrej ÅnidarÅiÄ, Matej UrbanÄiÄ), German (Christian Kirbach, Mario
   BlÃttermann), Czech (Marek ÄernockÃ), Esperanto (Kristjan SCHMIDT), Danish
diff --git a/configure.in b/configure.in
index 13999ae..4544f4f 100644
--- a/configure.in
+++ b/configure.in
@@ -56,7 +56,7 @@ GTKSPELL_REQUIRED=2.0.7
 ENCHANT_REQUIRED=1.6.0
 GNUTLS_REQUIRED=2.12.10
 LIBNOTIFY_REQUIRED=0.4.1
-LIBGKR_REQUIRED=3.2.2
+LIBGKR_REQUIRED=3.2.0
 AC_SUBST(GLIB_REQUIRED)
 AC_SUBST(GMIME_REQUIRED)
 AC_SUBST(GTK_REQUIRED)
diff --git a/pan/gui/body-pane.cc b/pan/gui/body-pane.cc
index 5ecfc2a..db94689 100644
--- a/pan/gui/body-pane.cc
+++ b/pan/gui/body-pane.cc
@@ -1239,14 +1239,11 @@ namespace
 
 #ifdef HAVE_GMIME_CRYPTO
 gboolean
-BodyPane:: on_tooltip_query(GtkWidget  *widget,
-                            gint        x,
-                            gint        y,
-                            gboolean    keyboard_tip,
-                            GtkTooltip *tooltip,
-                            gpointer    data)
+BodyPane :: sig_status_clicked_cb(GtkWidget  *widget,
+                               GdkEvent  *event,
+                               gpointer   user_data)
 {
-  BodyPane* pane = static_cast<BodyPane*>(data);
+  BodyPane* pane = static_cast<BodyPane*>(user_data);
   GPGDecErr& err = pane->_gpgerr;
   GPGSignersInfo& info = err.signers;
 
@@ -1267,8 +1264,27 @@ BodyPane:: on_tooltip_query(GtkWidget  *widget,
              ed.get_date_string(info.signers[0].created)
              );
 
-  gtk_tooltip_set_icon_from_stock (tooltip, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG);
-  gtk_tooltip_set_markup (tooltip, buf);
+  // FIXME : GLib-GObject-WARNING **: invalid cast from `GtkVBox' to `GtkWindow'
+  GtkWidget* dialog = gtk_dialog_new_with_buttons(_("PGP Signature Information"), GTK_WINDOW(pane->root()),
+      GtkDialogFlags(GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT),
+      GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL);
+
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
+		      gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_DIALOG),
+		      FALSE, FALSE,
+		      2);
+
+  GtkWidget* label = gtk_label_new(NULL);
+  gtk_label_set_markup(GTK_LABEL(label), buf);
+
+  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
+		      label,
+		      FALSE, FALSE,
+		      2);
+
+  g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
+
+  gtk_widget_show_all(dialog);
 
   return true;
 }
@@ -1279,17 +1295,21 @@ void
 BodyPane :: update_sig_valid(int i)
 {
 
-  gtk_image_clear(GTK_IMAGE(_sig_icon));
-
   switch (i)
   {
-    case 0:
-      gtk_image_set_from_pixbuf (GTK_IMAGE(_sig_icon), icons[ICON_SIG_FAIL].pixbuf);
-      break;
+      case 0:
+        gtk_button_set_label (GTK_BUTTON(_sig_status),  _("no Signature found."));
+        gtk_widget_show_all(_sig_status_hbox);
+        break;
 
-    case 1:
-      gtk_image_set_from_pixbuf (GTK_IMAGE(_sig_icon), icons[ICON_SIG_OK].pixbuf);
-      break;
+      case 1:
+        gtk_button_set_label (GTK_BUTTON(_sig_status), _("Signature verified."));
+        gtk_widget_show_all(_sig_status_hbox);
+        break;
+
+      case -1:
+        gtk_widget_hide(_sig_status_hbox);
+        break;
   }
 }
 
@@ -1590,7 +1610,7 @@ BodyPane :: new_attachment (const char* filename)
   GtkWidget * image = gtk_image_new_from_stock(GTK_STOCK_FILE, GTK_ICON_SIZE_MENU);
 
   gtk_label_set_selectable (GTK_LABEL(attachment), true);
-  gtk_label_set_ellipsize (GTK_LABEL(attachment), PANGO_ELLIPSIZE_MIDDLE);
+//  gtk_label_set_ellipsize (GTK_LABEL(attachment), PANGO_ELLIPSIZE_MIDDLE);
 
   GtkWidget *event_box = gtk_event_box_new ();
   gtk_container_add (GTK_CONTAINER (event_box), image);
@@ -1632,16 +1652,17 @@ BodyPane :: add_attachment_to_toolbar (const char* fn)
   if (!fn) return;
 
   GtkWidget* w = new_attachment(fn);
+  gtk_widget_set_size_request(w, -1, 32);
+
   ++_attachments;
 #if !GTK_CHECK_VERSION(3,0,0)
 
-  guint cols(4), rows(0);
-  rows = _cur_row;
+  const guint cols(4);
 
   if (_attachments % 4 == 0 && _attachments != 0)
   {
-    gtk_table_resize (GTK_TABLE(_att_toolbar), rows+1, cols);
     ++_cur_row;
+    gtk_table_resize (GTK_TABLE(_att_toolbar), _cur_row, cols);
     _cur_col = 0;
   }
 
@@ -1670,16 +1691,13 @@ BodyPane :: create_attachments_toolbar (GtkWidget* frame)
   _cur_col = 0;
   _cur_row = 0;
 
+  GtkWidget * w;
 #if !GTK_CHECK_VERSION(3,0,0)
-  GtkWidget * w = _att_toolbar = gtk_table_new(4,1,TRUE);
+  w = _att_toolbar = gtk_table_new(1,4,TRUE);
   gtk_table_set_col_spacings (GTK_TABLE(w), PAD);
   gtk_table_set_row_spacings (GTK_TABLE(w), PAD);
-  TablePrivate p;
-  p.ncols = 0;
-  p.nrows = 0;
-  g_object_set_data (G_OBJECT(w), "priv", (gpointer)&p);
 #else
-  GtkWidget * w = _att_toolbar = gtk_grid_new();
+  w = _att_toolbar = gtk_grid_new();
   gtk_grid_insert_row (GTK_GRID(w), 0);
   gtk_grid_set_column_spacing (GTK_GRID(w), 3);
   gtk_grid_set_row_spacing (GTK_GRID (w), 4);
@@ -1711,15 +1729,17 @@ BodyPane :: BodyPane (Data& data, ArticleCache& cache, Prefs& prefs, GroupPrefs
   _current_attachment(0)
 {
 
+  GtkWidget * w, * l, * hbox;
+
   for (guint i=0; i<NUM_ICONS; ++i)
     icons[i].pixbuf = gdk_pixbuf_new_from_inline (-1, icons[i].pixbuf_txt, FALSE, 0);
 
   // signature pgp valid/invalid icon
-  _sig_icon = gtk_image_new();
+//  _sig_icon = gtk_image_new();
 
   // menu for popup menu for attachments
   _menu = gtk_menu_new ();
-  GtkWidget* l = gtk_menu_item_new_with_label(_("Save attachment as ...."));
+  l = gtk_menu_item_new_with_label(_("Save attachment as ...."));
   g_signal_connect (l, "activate", G_CALLBACK(menu_clicked_as_cb), this);
   gtk_menu_shell_append (GTK_MENU_SHELL(_menu), l);
   l =  gtk_menu_item_new_with_label(_("Save all attachments"));
@@ -1739,7 +1759,7 @@ BodyPane :: BodyPane (Data& data, ArticleCache& cache, Prefs& prefs, GroupPrefs
   // tell the expander that it _wants_ to be very small, then it will still take
   // extra space given to it by its parent without asking for enough size to
   // fit the entire label.
-  GtkWidget * w = _expander = gtk_expander_new (NULL);
+  w = _expander = gtk_expander_new (NULL);
   gtk_widget_set_size_request (w, 50, -1);
   g_signal_connect (w, "activate", G_CALLBACK(expander_activated_cb), this);
   gtk_box_pack_start (GTK_BOX(vbox), w, false, false, 0);
@@ -1753,7 +1773,7 @@ BodyPane :: BodyPane (Data& data, ArticleCache& cache, Prefs& prefs, GroupPrefs
   gtk_widget_show (_terse);
   g_signal_connect (_terse, "button-press-event", G_CALLBACK(verbose_clicked_cb), this);
 
-  GtkWidget * hbox = _verbose = gtk_hbox_new (false, 0);
+  hbox = _verbose = gtk_hbox_new (false, 0);
   g_object_ref_sink (G_OBJECT(_verbose));
   w = _headers = gtk_label_new ("Headers");
   gtk_label_set_selectable (GTK_LABEL(_headers), TRUE);
@@ -1761,11 +1781,19 @@ BodyPane :: BodyPane (Data& data, ArticleCache& cache, Prefs& prefs, GroupPrefs
   gtk_label_set_ellipsize (GTK_LABEL(w), PANGO_ELLIPSIZE_MIDDLE);
   gtk_label_set_use_markup (GTK_LABEL(w), true);
   gtk_box_pack_start (GTK_BOX(hbox), w, true, true, PAD_SMALL);
+
 #ifdef HAVE_GMIME_CRYPTO
-  gtk_widget_set_size_request (_sig_icon, 32, 32);
-  gtk_box_pack_start (GTK_BOX(hbox), _sig_icon, true, true, PAD_SMALL);
-  gtk_widget_set_has_tooltip (_sig_icon, true);
-  g_signal_connect(_sig_icon,"query-tooltip",G_CALLBACK(on_tooltip_query), this);
+  //line for signature status
+  l = gtk_label_new(_("PGP Signature : "));
+  w = _sig_status = gtk_button_new_with_label (_("no signature found."));
+  hbox = _sig_status_hbox = gtk_hbox_new (false, 0);
+
+  gtk_box_pack_start (GTK_BOX(hbox), l, false, false, PAD_SMALL);
+  gtk_box_pack_start (GTK_BOX(hbox), w, false, false, PAD_SMALL);
+  gtk_box_pack_start (GTK_BOX(vbox), hbox, false, false, PAD_SMALL);
+
+  g_signal_connect(w,"button-press-event",G_CALLBACK(sig_status_clicked_cb), this);
+
 #endif
   w = _xface = gtk_image_new();
   gtk_widget_set_size_request (w, 48, 48);
@@ -1794,7 +1822,7 @@ BodyPane :: BodyPane (Data& data, ArticleCache& cache, Prefs& prefs, GroupPrefs
 
   // add a toolbar for attachments
   GtkWidget * frame = _att_frame = gtk_frame_new (_("Attachments"));
-  gtk_widget_set_size_request (frame, -1, 40);
+//  gtk_widget_set_size_request (frame, -1, 40);
   gtk_box_pack_start (GTK_BOX(vbox), create_attachments_toolbar(frame), false, false, 0);
 
   // set up the buffer tags
@@ -1818,6 +1846,9 @@ BodyPane :: BodyPane (Data& data, ArticleCache& cache, Prefs& prefs, GroupPrefs
   g_signal_connect (_root, "show", G_CALLBACK(show_cb), this);
 
   gtk_widget_show_all (_root);
+
+  // hide hbox for pgp at first
+  update_sig_valid(-1);
 }
 
 BodyPane :: ~BodyPane ()
diff --git a/pan/gui/body-pane.h b/pan/gui/body-pane.h
index 911fea0..0c6387a 100644
--- a/pan/gui/body-pane.h
+++ b/pan/gui/body-pane.h
@@ -39,15 +39,6 @@ namespace pan
    */
   class BodyPane: private Prefs::Listener
   {
-    //#if !GTK_CHECK_VERSION(2,22,0)
-    //define private struct for gtktable for older gtk versions
-    struct TablePrivate
-    {
-      guint16         ncols;
-      guint16         nrows;
-    };
-
-    //#endif
 
     private:
       Prefs& _prefs;
@@ -56,16 +47,14 @@ namespace pan
       HeaderPane* _header_pane;
       Data& _data;
       ArticleCache& _cache;
-      GtkWidget* _sig_icon;
+      GtkWidget* _sig_status;
+      GtkWidget* _sig_status_hbox;
 
       void update_sig_valid(int i);
 
-      static gboolean on_tooltip_query(GtkWidget  *widget,
-                                       gint        x,
-                                       gint        y,
-                                       gboolean    keyboard_tip,
-                                       GtkTooltip *tooltip,
-                                       gpointer    data);
+      static gboolean sig_status_clicked_cb(GtkWidget  *widget,
+                                            GdkEvent  *event,
+                                            gpointer   user_data);
 
     public:
       BodyPane (Data&, ArticleCache&, Prefs&, GroupPrefs&, Queue&, HeaderPane*);
diff --git a/pan/gui/pan.cc b/pan/gui/pan.cc
index 4eb10f9..48c9674 100644
--- a/pan/gui/pan.cc
+++ b/pan/gui/pan.cc
@@ -119,7 +119,7 @@ namespace
 #ifndef G_OS_WIN32
   void sighandler (int signum)
   {
-    std::cerr << "shutting down pan." << std::endl;
+    std::cerr << "Shutting down Pan." << std::endl;
     signal (signum, SIG_DFL);
     mainloop_quit ();
   }
@@ -756,8 +756,6 @@ _("General Options\n"
       NULL
     );
 
-    std::cerr<<"bus acquired\n";
-
   }
 
   static void
@@ -771,8 +769,6 @@ _("General Options\n"
 
     pan->name_valid = true;
     pan->lost_name = false;
-
-    std::cerr<<"name acquired "<<pan->name_valid<<"\n";
   }
 
   static void
@@ -786,8 +782,6 @@ _("General Options\n"
     pan->name_valid = false;
     pan->lost_name = true;
     pan->dbus_id= -1;
-
-    std::cerr<<"name lost\n";
   }
 
 
@@ -804,8 +798,6 @@ _("General Options\n"
         pan,NULL);
 
     dbus_connection = g_bus_get_sync  (G_BUS_TYPE_SESSION , NULL, NULL);
-
-    std::cerr<<"dbus id "<<pan->dbus_id<<" "<<dbus_connection<<"\n";
   }
 
   static void
@@ -934,16 +926,10 @@ main (int argc, char *argv[])
     GError* error(NULL);
     GVariant* var;
 
-    if (!dbus_connection) std::cerr<<"connection null\n";
-
     if (!dbus_connection) goto _fail;
 
-    std::cerr<<"dbg "<<pan.dbus_id<<" "<<pan.lost_name<<" "<<pan.name_valid<<"\n";
-
 //    if (pan.dbus_id == -1 || pan.lost_name)
     {
-
-      std::cerr<<"dbus id -1\n";
       g_dbus_connection_call_sync (dbus_connection,
                              PAN_DBUS_SERVICE_NAME,
                              PAN_DBUS_SERVICE_PATH,
diff --git a/pan/gui/prefs-ui.cc b/pan/gui/prefs-ui.cc
index 489c3ad..8c41d1b 100644
--- a/pan/gui/prefs-ui.cc
+++ b/pan/gui/prefs-ui.cc
@@ -403,14 +403,17 @@ namespace pan
 
   GtkWidget* new_label_with_icon(const char* mnemonic, const char* label, const guint8* line, Prefs& prefs)
   {
-    const bool show_text = !prefs.get_flag("show-only-icons-in-preftabs", "false");
+    std::string what = prefs.get_string("elements-show-tabs", "text");
+    const bool text  = "text"  == what;
+    const bool icons = "icons" == what;
+    const bool both  = "both"  == what;
 
     GtkWidget* hbox = gtk_hbox_new(false, 2);
     GdkPixbuf * pixbuf = gdk_pixbuf_new_from_inline (-1, line, false, 0);
     GtkWidget * image = gtk_image_new_from_pixbuf (pixbuf);
     g_object_unref (pixbuf);
-    if (line) gtk_box_pack_start (GTK_BOX(hbox), image, true, true, 0);
-    if (show_text) gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new_with_mnemonic(mnemonic), true, true, 0);
+    if (line && (icons || both)) gtk_box_pack_start (GTK_BOX(hbox), image, true, true, 0);
+    if (text || both) gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new_with_mnemonic(mnemonic), true, true, 0);
     gtk_widget_set_tooltip_text (hbox, label);
     gtk_widget_show_all(hbox);
     return hbox;
@@ -462,7 +465,10 @@ namespace pan
     GtkTreeModel * model = gtk_combo_box_get_model (c);
     const int n_rows (gtk_tree_model_iter_n_children (model, NULL));
     const bool do_show (gtk_combo_box_get_active(c) == (n_rows-1));
-    if (do_show && !w_parent) // add it
+
+    std::cerr<<"dbg  "<<do_show<<" "<<w_parent<<" "<<n_rows<<"\n";
+
+    if (do_show && !w_parent && c_parent) // add it
     {
       gtk_box_pack_start (GTK_BOX(c_parent), w, true, true, 0);
       gtk_widget_show (w);
@@ -473,6 +479,10 @@ namespace pan
       g_object_ref (G_OBJECT(w));
       gtk_container_remove (GTK_CONTAINER(w_parent), w);
     }
+    else if (!do_show && !w_parent && !c_parent)
+    {
+      gtk_widget_show_all (GTK_WIDGET(c));
+    }
   }
 
   void set_prefs_string_from_combo_box_entry (GtkComboBoxText * c, gpointer user_data)
@@ -504,7 +514,9 @@ namespace pan
   {
     Prefs * prefs (static_cast<Prefs*>(user_data));
     const char * key = (const char*) g_object_get_data (G_OBJECT(c), PREFS_KEY);
+
     prefs->_rules_changed = strcmp(key,"rules-");
+
     const int column = GPOINTER_TO_INT (g_object_get_data (G_OBJECT(c), "column"));
     const int row (gtk_combo_box_get_active (c));
     GtkTreeModel * m = gtk_combo_box_get_model (c);
@@ -517,6 +529,44 @@ namespace pan
     }
   }
 
+  /* TODO ! static array for now */
+  GtkWidget* new_tabs_combo_box (Prefs& prefs,
+                                 const char * mode_key)
+  {
+
+    const char* strings[3][2] =
+    {
+      {N_("Show only icons"), "icons"},
+      {N_("Show only text"), "text"},
+      {N_("Show icons and text"), "both"},
+    };
+
+    const std::string mode (prefs.get_string (mode_key, "text"));
+    GtkListStore * store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
+
+    int sel_index (0);
+    for (size_t i=0; i<G_N_ELEMENTS(strings); ++i) {
+      GtkTreeIter iter;
+      gtk_list_store_append (store, &iter);
+      gtk_list_store_set (store, &iter, 0, strings[i][0], 1, strings[i][1], -1);
+      if (mode == strings[i][1])
+        sel_index = i;
+    }
+
+    GtkWidget * c = gtk_combo_box_new_with_model (GTK_TREE_MODEL(store));
+    GtkCellRenderer * renderer (gtk_cell_renderer_text_new ());
+    gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (c), renderer, true);
+    gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (c), renderer, "text", 0, NULL);
+    gtk_combo_box_set_active (GTK_COMBO_BOX(c), sel_index);
+    g_object_set_data_full (G_OBJECT(c), PREFS_KEY, g_strdup(mode_key), g_free);
+    g_object_set_data (G_OBJECT(c), "column", GINT_TO_POINTER(1));
+    g_signal_connect (c, "changed", G_CALLBACK(set_prefs_string_from_combobox), &prefs);
+
+    gtk_widget_show_all(c);
+
+    return c;
+  }
+
   GtkWidget* url_handler_new (Prefs& prefs,
                               const char * mode_key,
                               const char * mode_fallback,
@@ -652,7 +702,7 @@ void
 PrefsDialog :: update_default_charset_label(const StringView& value)
 {
   char buf[256];
-  g_snprintf(buf, sizeof(buf),_("  Select default <u>global</u> charset. Current setting : <b>%s</b> ."),
+  g_snprintf(buf, sizeof(buf),_("Select default <u>global</u> charset. Current setting : <b>%s</b> ."),
              value.str);
   gtk_label_set_markup(GTK_LABEL(charset_label), buf);
   gtk_widget_show_all(charset_label);
@@ -912,18 +962,18 @@ PrefsDialog :: PrefsDialog (Prefs& prefs, GtkWindow* parent):
     w = new_check_button (_("Clear article cache on shutdown"), "clear-article-cache-on-shutdown", false, prefs);
     HIG :: workarea_add_wide_control (t, &row, w);
     w = new_spin_button ("cache-size-megs", 10, 1024*16, prefs);
-    l = gtk_label_new(_("Size of article cache (in MiB)"));
+    l = gtk_label_new(_("Size of article cache (in MiB) :"));
     gtk_misc_set_alignment (GTK_MISC(l), 0.0, 0.5);
     gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
-    HIG::workarea_add_row (t, &row, w, l);
+    HIG::workarea_add_row (t, &row, l, w);
     w = new_entry ("cache-file-extension", "msg", prefs);
-    l = gtk_label_new(_("File extension for Cached Articles"));
+    l = gtk_label_new(_("File extension for Cached Articles: "));
     gtk_misc_set_alignment (GTK_MISC(l), 0.0, 0.5);
-    HIG :: workarea_add_row (t, &row, w, l);
+    HIG :: workarea_add_row (t, &row, l, w);
 
     HIG::workarea_add_section_divider (t, &row);
     HIG :: workarea_add_section_title (t, &row, _("Tabs"));
-    w = new_check_button (_("Show only icons in Preferences tabs"), "show-only-icons-in-preftabs", false, prefs);
+    w = new_tabs_combo_box(prefs, "elements-show-tabs");
     HIG :: workarea_add_wide_control (t, &row, w);
 
   HIG :: workarea_finish (t, &row);
@@ -957,17 +1007,17 @@ PrefsDialog :: PrefsDialog (Prefs& prefs, GtkWindow* parent):
     HIG :: workarea_add_section_spacer (t, row, 2);
     HIG :: workarea_add_section_title (t, &row, _("Autosave Article Draft"));
     w = new_spin_button ("draft-autosave-timeout-min", 0, 60, prefs);
-    l = gtk_label_new(_("Minutes to autosave the current Article Draft."));
+    l = gtk_label_new(_("Minutes to autosave the current Article Draft: "));
     gtk_misc_set_alignment (GTK_MISC(l), 0.0, 0.5);
     gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
-    HIG::workarea_add_row (t, &row, w, l);
+    HIG::workarea_add_row (t, &row, l, w);
     HIG::workarea_add_section_divider (t, &row);
     HIG :: workarea_add_section_title (t, &row, _("Autosave Articles"));
     w = new_spin_button ("newsrc-autosave-timeout-min", 0, 60, prefs);
-    l = gtk_label_new(_("Minutes to autosave newsrc files"));
+    l = gtk_label_new(_("Minutes to autosave newsrc files: "));
     gtk_misc_set_alignment (GTK_MISC(l), 0.0, 0.5);
     gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
-    HIG::workarea_add_row (t, &row, w, l);
+    HIG::workarea_add_row (t, &row, l, w);
 
   HIG :: workarea_finish (t, &row);
   gtk_notebook_append_page (GTK_NOTEBOOK(notebook), t, new_label_with_icon(_("_Miscellaneous"), _("Miscellaneous"), icon_prefs_extras, prefs));
@@ -1140,9 +1190,9 @@ PrefsDialog :: PrefsDialog (Prefs& prefs, GtkWindow* parent):
   HIG :: workarea_add_section_spacer (t, row, 4);
   // 16 MiB blocks max, 512 kb min
   w = new_spin_button ("upload-option-bpf", 512*1024, 1024*1024*16, prefs);
-  l = gtk_label_new(_("Default bytes per file (for encoder)"));
+  l = gtk_label_new(_("Default bytes per file (for encoder): "));
   gtk_misc_set_alignment (GTK_MISC(l), 0.0, 0.5);
-  HIG::workarea_add_row (t, &row, w, l);
+  HIG::workarea_add_row (t, &row, l, w);
 
   HIG :: workarea_finish (t, &row);
   gtk_notebook_append_page (GTK_NOTEBOOK(notebook), t, new_label_with_icon(_("_Upload"), _("Upload"), icon_prefs_upload, prefs));
diff --git a/pan/gui/profiles-dialog.cc b/pan/gui/profiles-dialog.cc
index ec5c348..2fda5a9 100644
--- a/pan/gui/profiles-dialog.cc
+++ b/pan/gui/profiles-dialog.cc
@@ -262,7 +262,8 @@ ProfileDialog :: ProfileDialog (const Data         & data,
     std::string s;
     foreach_const (Profile::headers_t, profile.headers, it)
       s += it->first + ": " + it->second + "\n";
-    gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW(w)), s.c_str(), s.size());
+    if (!s.empty())
+      gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW(w)), s.c_str(), s.size());
     GtkWidget * eventbox = gtk_event_box_new ();
     gtk_widget_set_tooltip_text (eventbox, _("Extra headers to be included in your posts, such as\nReply-To: \"Your Name\""
                                              "<yourname somewhere com>\nOrganization: Your Organization\n"));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]