[graphic-forms-cvs] r118 - in trunk: docs/manual src src/uitoolkit/widgets
junrue at common-lisp.net
junrue at common-lisp.net
Fri May 5 01:08:49 UTC 2006
Author: junrue
Date: Thu May 4 21:08:48 2006
New Revision: 118
Modified:
trunk/docs/manual/api.texinfo
trunk/src/packages.lisp
trunk/src/uitoolkit/widgets/menu-language.lisp
trunk/src/uitoolkit/widgets/menu.lisp
trunk/src/uitoolkit/widgets/widget-generics.lisp
Log:
implemented append-separator method for programmatically adding separators to menus
Modified: trunk/docs/manual/api.texinfo
==============================================================================
--- trunk/docs/manual/api.texinfo (original)
+++ trunk/docs/manual/api.texinfo Thu May 4 21:08:48 2006
@@ -668,6 +668,11 @@
the newly-created item.
@end deffn
+ at deffn GenericFunction append-separator self
+Adds a separator item to the object, and returns the newly-created
+item.
+ at end deffn
+
@deffn GenericFunction append-submenu self text submenu dispatcher
Adds a submenu anchored to a parent menu and returns the corresponding item.
@end deffn
Modified: trunk/src/packages.lisp
==============================================================================
--- trunk/src/packages.lisp (original)
+++ trunk/src/packages.lisp Thu May 4 21:08:48 2006
@@ -310,6 +310,7 @@
#:alignment
#:ancestor-p
#:append-item
+ #:append-separator
#:append-submenu
#:background-color
#:background-pattern
Modified: trunk/src/uitoolkit/widgets/menu-language.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/menu-language.lisp (original)
+++ trunk/src/uitoolkit/widgets/menu-language.lisp Thu May 4 21:08:48 2006
@@ -202,13 +202,8 @@
(check item checked)))
(defmethod define-separator ((gen win32-menu-generator))
- (let* ((owner (first (menu-stack-of gen)))
- (it (make-instance 'menu-item))
- (hmenu (gfs:handle owner)))
- (put-menuitem (thread-context) it)
- (insert-separator hmenu)
- (setf (slot-value it 'gfs:handle) hmenu)
- (vector-push-extend it (items owner))))
+ (let ((owner (first (menu-stack-of gen))))
+ (append-separator owner)))
(defmethod define-submenu ((gen win32-menu-generator) label dispatcher disabled)
(let* ((submenu (make-instance 'menu :handle (gfs::create-popup-menu)))
Modified: trunk/src/uitoolkit/widgets/menu.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/menu.lisp (original)
+++ trunk/src/uitoolkit/widgets/menu.lisp Thu May 4 21:08:48 2006
@@ -87,7 +87,7 @@
(if (zerop (gfs::insert-menu-item hparent #x7FFFFFFF 1 mii-ptr))
(error 'gfs::win32-error :detail "insert-menu-item failed")))))
-(defun insert-separator (hmenu)
+(defun insert-separator (hmenu mid)
(cffi:with-foreign-object (mii-ptr 'gfs::menuiteminfo)
(cffi:with-foreign-slots ((gfs::cbsize gfs::mask gfs::type
gfs::state gfs::id gfs::hsubmenu
@@ -96,10 +96,10 @@
gfs::hbmpitem)
mii-ptr gfs::menuiteminfo)
(setf gfs::cbsize (cffi:foreign-type-size 'gfs::menuiteminfo))
- (setf gfs::mask gfs::+miim-ftype+)
+ (setf gfs::mask (logior gfs::+miim-id+ gfs::+miim-ftype+))
(setf gfs::type gfs::+mft-separator+)
(setf gfs::state 0)
- (setf gfs::id 0)
+ (setf gfs::id mid)
(setf gfs::hsubmenu (cffi:null-pointer))
(setf gfs::hbmpchecked (cffi:null-pointer))
(setf gfs::hbmpunchecked (cffi:null-pointer))
@@ -142,6 +142,19 @@
(vector-push-extend item (items owner))
item))
+(defmethod append-separator ((owner menu))
+ (if (gfs:disposed-p owner)
+ (error 'gfs:disposed-error))
+ (let* ((tc (thread-context))
+ (id (increment-menuitem-id tc))
+ (howner (gfs:handle owner))
+ (item (make-instance 'menu-item :handle howner)))
+ (insert-separator howner id)
+ (setf (item-id item) id)
+ (put-menuitem tc item)
+ (vector-push-extend item (items owner))
+ item))
+
(defmethod append-submenu ((parent menu) text (submenu menu) disp)
(if (or (gfs:disposed-p parent) (gfs:disposed-p submenu))
(error 'gfs:disposed-error))
Modified: trunk/src/uitoolkit/widgets/widget-generics.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/widget-generics.lisp (original)
+++ trunk/src/uitoolkit/widgets/widget-generics.lisp Thu May 4 21:08:48 2006
@@ -48,6 +48,9 @@
(defgeneric append-item (self text image dispatcher)
(:documentation "Adds the new item with the specified text to the object, and returns the newly-created item."))
+(defgeneric append-separator (self)
+ (:documentation "Add a separator item to the object, and returns the newly-created item."))
+
(defgeneric append-submenu (self text submenu dispatcher)
(:documentation "Adds a submenu anchored to a parent menu and returns the corresponding item."))
More information about the Graphic-forms-cvs
mailing list