avoid 'reload' to show local fs
[prss.git] / src / main.c
index b20297b..b9e6860 100644 (file)
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
 
+#include <config.h>
 #include "http.h"
-#include "log.h"
+#include <plog.h>
+#include <pstr.h>
 #include "ttrss.h"
 #include "ttrss_ws.h"
 #include "webbrowser.h"
@@ -281,12 +283,25 @@ static struct headline *get_selected_headline(GtkTreeIter *iter)
        return NULL;
 }
 
+static char *headline_to_markup(struct headline *h)
+{
+       return strrepg(h->title, "&", "&amp;");
+}
+
 static char *headline_get_formated_headline(struct headline *h)
 {
+       char *tmp, *res;
+
+       tmp = headline_to_markup(h);
+
        if (h->unread)
-               return g_strdup_printf("<b>%s</b>", h->title);
+               res = g_strdup_printf("<b>%s</b>", tmp);
        else
-               return strdup(h->title);
+               res = strdup(tmp);
+
+       free(tmp);
+
+       return res;
 }
 
 static char *headline_get_date(struct headline *h)
@@ -366,7 +381,7 @@ int headline_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
        GtkTreeIter iter;
        GtkTreeModel *model;
        struct headline *headline;
-       char *str, *date;
+       char *str, *date, *title;
 
        log_debug("headline_cursor_changed_cbk()");
 
@@ -376,7 +391,9 @@ int headline_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
        headline = get_selected_headline(&iter);
 
        if (headline) {
-               gtk_label_set_text(w_headline_title, headline->title);
+               title = headline_to_markup(headline);
+               gtk_label_set_markup(w_headline_title, title);
+
                gtk_label_set_text(w_headline_date, ctime(&headline->date));
 
                str = ttrss_get_headline_content(headline);
@@ -397,11 +414,12 @@ int headline_cursor_changed_cbk(GtkTreeView *treeview, gpointer data)
                date = headline_get_date(headline);
                gtk_list_store_set(GTK_LIST_STORE(model),
                                   &iter,
-                                  COL_HEADLINE_TITLE, headline->title,
+                                  COL_HEADLINE_TITLE, title,
                                   COL_HEADLINE_DATE, date,
                                   COL_HEADLINE_EPOCH_TIME, headline->date,
                                   -1);
                free(date);
+               free(title);
        } else {
                log_debug("headline not found");
        }
@@ -451,12 +469,14 @@ static void save_settings()
        gtk_window_get_size(window, &w, &h);
        gtk_window_get_position(window, &x, &y);
 
-       log_debug("save_settings(): x=%d, y=%d", x, y);
+       log_debug("save_settings(): x=%d, y=%d, w=%d, h=%d", x, y, w, h);
 
        g_settings_set_int(settings, "window-x", x);
        g_settings_set_int(settings, "window-y", y);
        g_settings_set_int(settings, "window-width", w);
        g_settings_set_int(settings, "window-height", h);
+
+       g_settings_sync();
 }
 
 gboolean
@@ -579,9 +599,10 @@ int main(int argc, char **argv)
                 NULL);
        window = GTK_WINDOW(gtk_builder_get_object(builder, "window"));
 
-       gtk_window_set_default_size(window,
-                                   g_settings_get_int(settings, "window-width"),
-                                   g_settings_get_int(settings, "window-height"));
+       gtk_window_set_default_size
+               (window,
+                g_settings_get_int(settings, "window-width"),
+                g_settings_get_int(settings, "window-height"));
        gtk_window_move(window,
                        g_settings_get_int(settings, "window-x"),
                        g_settings_get_int(settings, "window-y"));
@@ -601,6 +622,9 @@ int main(int argc, char **argv)
 
        panh = GTK_WIDGET(gtk_builder_get_object(builder, "webkit_window"));
 
+       webbrowser_init(GTK_STATUSBAR(gtk_builder_get_object
+                                     (builder, "statusbar")));
+
        gtk_container_add(GTK_CONTAINER(panh), web_get_widget());
 
        g_object_unref(G_OBJECT(builder));