changeset 69337:55665aaac72b

* gnus-util.el (gnus-tool-bar-update): New function. * gnus-group.el (gnus-group-update-tool-bar): New variable. (gnus-group-insert-group-line): Add gnus-tool-bar-update. * gnus-topic.el (gnus-topic-prepare-topic): Add gnus-tool-bar-update.
author Reiner Steib <Reiner.Steib@gmx.de>
date Wed, 08 Mar 2006 14:27:20 +0000
parents bb8e1e07b59b
children 3b476a22dc6a
files lisp/gnus/ChangeLog lisp/gnus/gnus-group.el lisp/gnus/gnus-topic.el lisp/gnus/gnus-util.el
diffstat 4 files changed, 51 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Wed Mar 08 10:24:28 2006 +0000
+++ b/lisp/gnus/ChangeLog	Wed Mar 08 14:27:20 2006 +0000
@@ -1,3 +1,12 @@
+2006-03-08  Reiner Steib  <Reiner.Steib@gmx.de>
+
+	* gnus-util.el (gnus-tool-bar-update): New function.
+
+	* gnus-group.el (gnus-group-update-tool-bar): New variable.
+	(gnus-group-insert-group-line): Add gnus-tool-bar-update.
+
+	* gnus-topic.el (gnus-topic-prepare-topic): Add gnus-tool-bar-update.
+
 2006-03-06  Katsumi Yamaoka  <yamaoka@jpl.org>
 
 	* mm-view.el (mm-w3m-cid-retrieve-1): Check carefully whether
--- a/lisp/gnus/gnus-group.el	Wed Mar 08 10:24:28 2006 +0000
+++ b/lisp/gnus/gnus-group.el	Wed Mar 08 14:27:20 2006 +0000
@@ -1379,6 +1379,18 @@
 		(gnus-range-difference (list active) (gnus-info-read info))
 		seen))))))
 
+(defcustom gnus-group-update-tool-bar
+  (and (not (featurep 'xemacs))
+       (boundp 'tool-bar-mode)
+       tool-bar-mode
+       ;; Using `redraw-frame' (see `gnus-tool-bar-update') in Emacs 21 might
+       ;; be confusing, so maybe we shouldn't call it by default.
+       (fboundp 'force-window-update))
+  "Force updating the group buffer tool bar."
+  :group 'gnus-group
+  :version "22.1"
+  :type 'boolean)
+
 (defun gnus-group-insert-group-line (gnus-tmp-group gnus-tmp-level
 						    gnus-tmp-marked number
 						    gnus-tmp-method)
@@ -1447,8 +1459,10 @@
 		   (bbb-grouplens-group-p gnus-tmp-group))
 	      ""))
 	 (buffer-read-only nil)
+	 beg end
 	 header gnus-tmp-header)	; passed as parameter to user-funcs.
     (beginning-of-line)
+    (setq beg (point))
     (gnus-add-text-properties
      (point)
      (prog1 (1+ (point))
@@ -1463,6 +1477,12 @@
 		  gnus-marked ,gnus-tmp-marked-mark
 		  gnus-indentation ,gnus-group-indentation
 		  gnus-level ,gnus-tmp-level))
+    (setq end (point))
+    (when gnus-group-update-tool-bar
+      (gnus-put-text-property beg end 'point-entered
+			      'gnus-tool-bar-update)
+      (gnus-put-text-property beg end 'point-left
+			      'gnus-tool-bar-update))
     (forward-line -1)
     (when (inline (gnus-visual-p 'group-highlight 'highlight))
       (gnus-run-hooks 'gnus-group-update-hook))
--- a/lisp/gnus/gnus-topic.el	Wed Mar 08 10:24:28 2006 +0000
+++ b/lisp/gnus/gnus-topic.el	Wed Mar 08 14:27:20 2006 +0000
@@ -585,6 +585,11 @@
        (not (eq (nth 2 type) 'hidden))
        level all-entries unread))
     (gnus-topic-update-unreads (car type) unread)
+    (when gnus-group-update-tool-bar
+      (gnus-put-text-property beg end 'point-entered
+			      'gnus-tool-bar-update)
+      (gnus-put-text-property beg end 'point-left
+			      'gnus-tool-bar-update))
     (goto-char end)
     unread))
 
--- a/lisp/gnus/gnus-util.el	Wed Mar 08 10:24:28 2006 +0000
+++ b/lisp/gnus/gnus-util.el	Wed Mar 08 14:27:20 2006 +0000
@@ -1459,6 +1459,23 @@
 				 display))
 	      display)))))
 
+(defun gnus-tool-bar-update (&rest ignore)
+  "Update the tool bar."
+  (when (and (boundp 'tool-bar-mode)
+	     tool-bar-mode)
+    (let* ((args nil)
+	   (func (cond ((featurep 'xemacs)
+			'ignore)
+		       ((fboundp 'tool-bar-update)
+			'tool-bar-update)
+		       ((fboundp 'force-window-update)
+			'force-window-update)
+		       ((fboundp 'redraw-frame)
+			(setq args (list (selected-frame)))
+			'redraw-frame)
+		       (t 'ignore))))
+      (apply func args))))
+
 ;; Fixme: This has only one use (in gnus-agent), which isn't worthwhile.
 (defmacro gnus-mapcar (function seq1 &rest seqs2_n)
   "Apply FUNCTION to each element of the sequences, and make a list of the results.