gnome-utils r8319 - trunk/logview



Author: cosimoc
Date: Tue Dec 23 13:28:19 2008
New Revision: 8319
URL: http://svn.gnome.org/viewvc/gnome-utils?rev=8319&view=rev

Log:
Clear the invisible selection if we select back the full log.

Modified:
   trunk/logview/logview-loglist.c
   trunk/logview/logview-loglist.h
   trunk/logview/logview-window.c

Modified: trunk/logview/logview-loglist.c
==============================================================================
--- trunk/logview/logview-loglist.c	(original)
+++ trunk/logview/logview-loglist.c	Tue Dec 23 13:28:19 2008
@@ -31,6 +31,7 @@
   GtkTreeStore *model;
   LogviewManager *manager;
   GtkTreePath *selection;
+  gboolean has_day_selection;
 };
 
 G_DEFINE_TYPE (LogviewLoglist, logview_loglist, GTK_TYPE_TREE_VIEW);
@@ -48,6 +49,7 @@
 
 enum {
   DAY_SELECTED,
+  DAY_CLEARED,
   LAST_SIGNAL
 };
 
@@ -172,7 +174,7 @@
   GtkTreeModel *model;
   GtkTreeIter iter, parent;
   LogviewLog *log;
-  gboolean is_bold;
+  gboolean is_bold, is_active;
   Day *day;
 
   if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
@@ -183,10 +185,16 @@
                       LOG_WEIGHT_SET, &is_bold,
                       LOG_DAY, &day, -1);
   if (log) {
-    if (!logview_manager_log_is_active (list->priv->manager, log)) {
+    is_active = logview_manager_log_is_active (list->priv->manager, log);
+
+    if (is_active && list->priv->has_day_selection) {
+      list->priv->has_day_selection = FALSE;
+      g_signal_emit (list, signals[DAY_CLEARED], 0, NULL);
+    } else if (!is_active) {
       logview_manager_set_active_log (list->priv->manager, log);
     }
   } else {
+    list->priv->has_day_selection = TRUE;
     gtk_tree_model_iter_parent (model, &parent, &iter);
     gtk_tree_model_get (model, &parent, LOG_OBJECT, &log, -1);
 
@@ -384,7 +392,9 @@
   GtkTreeSelection *selection;
   GtkCellRenderer *cell;
 
-  list->priv = GET_PRIVATE (list); 
+  list->priv = GET_PRIVATE (list);
+  list->priv->has_day_selection = FALSE;
+  list->priv->selection = NULL;
 
   model = gtk_tree_store_new (5, LOGVIEW_TYPE_LOG, G_TYPE_STRING, G_TYPE_INT,
                               G_TYPE_BOOLEAN, G_TYPE_POINTER);
@@ -441,6 +451,14 @@
                                         G_TYPE_NONE, 1,
                                         G_TYPE_POINTER);
 
+  signals[DAY_CLEARED] = g_signal_new ("day-cleared",
+                                       G_OBJECT_CLASS_TYPE (oclass),
+                                       G_SIGNAL_RUN_LAST,
+                                       G_STRUCT_OFFSET (LogviewLoglistClass, day_cleared),
+                                       NULL, NULL,
+                                       g_cclosure_marshal_VOID__VOID,
+                                       G_TYPE_NONE, 0);
+
   g_type_class_add_private (klass, sizeof (LogviewLoglistPrivate));
 }
 

Modified: trunk/logview/logview-loglist.h
==============================================================================
--- trunk/logview/logview-loglist.h	(original)
+++ trunk/logview/logview-loglist.h	Tue Dec 23 13:28:19 2008
@@ -53,6 +53,7 @@
 
   void (* day_selected) (LogviewLoglist *loglist,
                          Day *day);
+  void (* day_cleared) (LogviewLoglist *loglist);
 };
 
 GType logview_loglist_get_type (void);

Modified: trunk/logview/logview-window.c
==============================================================================
--- trunk/logview/logview-window.c	(original)
+++ trunk/logview/logview-window.c	Tue Dec 23 13:28:19 2008
@@ -730,6 +730,23 @@
 }
 
 static void
+loglist_day_cleared_cb (LogviewLoglist *loglist,
+                        gpointer user_data)
+{
+  LogviewWindow *logview = user_data;
+  GtkTextBuffer *buffer;
+  GtkTextIter start, end;
+
+  buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (logview->priv->text_view));
+  gtk_text_buffer_get_start_iter (buffer, &start);
+  gtk_text_buffer_get_end_iter (buffer, &end);
+
+  /* clear all previous invisible tags */
+  gtk_text_buffer_remove_tag_by_name (buffer, "invisible",
+                                      &start, &end);
+}
+
+static void
 logview_window_select_date (LogviewWindow *logview, GDate *date)
 {
   LogviewLog *log;
@@ -1012,6 +1029,8 @@
 
   g_signal_connect (priv->loglist, "day_selected",
                     G_CALLBACK (loglist_day_selected_cb), logview);
+  g_signal_connect (priv->loglist, "day_cleared",
+                    G_CALLBACK (loglist_day_cleared_cb), logview);
 
   /* second pane : log */
   main_view = gtk_vbox_new (FALSE, 0);



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