Author: junrue Date: Wed Oct 11 16:25:54 2006 New Revision: 298
Added: trunk/docs/manual/gfw/event-pre-resize.html trunk/docs/manual/gfw/event-resize.html Modified: trunk/docs/manual/Graphic-FormsProgrammingReference.wcp trunk/src/uitoolkit/system/system-constants.lisp trunk/src/uitoolkit/widgets/event-generics.lisp trunk/src/uitoolkit/widgets/event.lisp trunk/src/uitoolkit/widgets/scrolling-event-dispatcher.lisp Log: implemented integral resizing (event-pre-resize)
Modified: trunk/docs/manual/Graphic-FormsProgrammingReference.wcp ============================================================================== --- trunk/docs/manual/Graphic-FormsProgrammingReference.wcp (original) +++ trunk/docs/manual/Graphic-FormsProgrammingReference.wcp Wed Oct 11 16:25:54 2006 @@ -92,7 +92,7 @@ DefaultTopic=Introduction.html
[TOPICS] -TitleList=70 +TitleList=72 TitleList.Title.0=Legal Information TitleList.Level.0=0 TitleList.Url.0=LegalInfo.html @@ -151,7 +151,7 @@ TitleList.Keywords.5=GFG`\graphic-forms.uitoolkit.graphics TitleList.ContextNumber.5= TitleList.ApplyTemp.5=0 -TitleList.Expanded.5=1 +TitleList.Expanded.5=0 TitleList.Kind.5=0 TitleList.Title.6=color TitleList.Level.6=2 @@ -251,7 +251,7 @@ TitleList.Keywords.15=GFS`\graphic-forms.uitoolkit.system TitleList.ContextNumber.15= TitleList.ApplyTemp.15=0 -TitleList.Expanded.15=1 +TitleList.Expanded.15=0 TitleList.Kind.15=0 TitleList.Title.16=code TitleList.Level.16=2 @@ -693,79 +693,79 @@ TitleList.ApplyTemp.59=0 TitleList.Expanded.59=0 TitleList.Kind.59=0 -TitleList.Title.60=event-select +TitleList.Title.60=event-pre-resize TitleList.Level.60=2 -TitleList.Url.60=gfw\event-select.html +TitleList.Url.60=gfw\event-pre-resize.html TitleList.Icon.60=0 TitleList.Status.60=0 -TitleList.Keywords.60=event-select +TitleList.Keywords.60=event-pre-resize TitleList.ContextNumber.60= TitleList.ApplyTemp.60=0 TitleList.Expanded.60=0 TitleList.Kind.60=0 -TitleList.Title.61=event-source +TitleList.Title.61=event-resize TitleList.Level.61=2 -TitleList.Url.61=gfw\event-source.html +TitleList.Url.61=gfw\event-resize.html TitleList.Icon.61=0 TitleList.Status.61=0 -TitleList.Keywords.61=event-source +TitleList.Keywords.61=event-resize TitleList.ContextNumber.61= TitleList.ApplyTemp.61=0 TitleList.Expanded.61=0 TitleList.Kind.61=0 -TitleList.Title.62=message-loop +TitleList.Title.62=event-select TitleList.Level.62=2 -TitleList.Url.62=gfw\message-loop.html +TitleList.Url.62=gfw\event-select.html TitleList.Icon.62=0 TitleList.Status.62=0 -TitleList.Keywords.62=message-loop +TitleList.Keywords.62=event-select TitleList.ContextNumber.62= TitleList.ApplyTemp.62=0 TitleList.Expanded.62=0 TitleList.Kind.62=0 -TitleList.Title.63=obtain-event-time +TitleList.Title.63=event-source TitleList.Level.63=2 -TitleList.Url.63=gfw\obtain-event-time.html +TitleList.Url.63=gfw\event-source.html TitleList.Icon.63=0 TitleList.Status.63=0 -TitleList.Keywords.63=obtain-event-time +TitleList.Keywords.63=event-source TitleList.ContextNumber.63= TitleList.ApplyTemp.63=0 TitleList.Expanded.63=0 TitleList.Kind.63=0 -TitleList.Title.64=with-graphics-context +TitleList.Title.64=message-loop TitleList.Level.64=2 -TitleList.Url.64=gfw\with-graphics-context.html +TitleList.Url.64=gfw\message-loop.html TitleList.Icon.64=0 TitleList.Status.64=0 -TitleList.Keywords.64=with-graphics-context +TitleList.Keywords.64=message-loop TitleList.ContextNumber.64= TitleList.ApplyTemp.64=0 TitleList.Expanded.64=0 TitleList.Kind.64=0 -TitleList.Title.65=Miscellaneous Topics -TitleList.Level.65=0 -TitleList.Url.65=MiscellaneousTopics.html +TitleList.Title.65=obtain-event-time +TitleList.Level.65=2 +TitleList.Url.65=gfw\obtain-event-time.html TitleList.Icon.65=0 TitleList.Status.65=0 -TitleList.Keywords.65= +TitleList.Keywords.65=obtain-event-time TitleList.ContextNumber.65= TitleList.ApplyTemp.65=0 TitleList.Expanded.65=0 TitleList.Kind.65=0 -TitleList.Title.66=Image Data Plugins -TitleList.Level.66=1 -TitleList.Url.66=ImageDataPlugins.html +TitleList.Title.66=with-graphics-context +TitleList.Level.66=2 +TitleList.Url.66=gfw\with-graphics-context.html TitleList.Icon.66=0 TitleList.Status.66=0 -TitleList.Keywords.66= +TitleList.Keywords.66=with-graphics-context TitleList.ContextNumber.66= TitleList.ApplyTemp.66=0 TitleList.Expanded.66=0 TitleList.Kind.66=0 -TitleList.Title.67=Terminology Conventions +TitleList.Title.67=Miscellaneous Topics TitleList.Level.67=0 -TitleList.Url.67=TerminologyConventions.html +TitleList.Url.67=MiscellaneousTopics.html TitleList.Icon.67=0 TitleList.Status.67=0 TitleList.Keywords.67= @@ -773,9 +773,9 @@ TitleList.ApplyTemp.67=0 TitleList.Expanded.67=0 TitleList.Kind.67=0 -TitleList.Title.68=Glossary -TitleList.Level.68=0 -TitleList.Url.68=Glossary.html +TitleList.Title.68=Image Data Plugins +TitleList.Level.68=1 +TitleList.Url.68=ImageDataPlugins.html TitleList.Icon.68=0 TitleList.Status.68=0 TitleList.Keywords.68= @@ -783,14 +783,34 @@ TitleList.ApplyTemp.68=0 TitleList.Expanded.68=0 TitleList.Kind.68=0 -TitleList.Title.69=Footnotes +TitleList.Title.69=Terminology Conventions TitleList.Level.69=0 -TitleList.Url.69=Footnotes.html +TitleList.Url.69=TerminologyConventions.html TitleList.Icon.69=0 TitleList.Status.69=0 TitleList.Keywords.69= TitleList.ContextNumber.69= TitleList.ApplyTemp.69=0 TitleList.Expanded.69=0 -TitleList.Kind.69=1 +TitleList.Kind.69=0 +TitleList.Title.70=Glossary +TitleList.Level.70=0 +TitleList.Url.70=Glossary.html +TitleList.Icon.70=0 +TitleList.Status.70=0 +TitleList.Keywords.70= +TitleList.ContextNumber.70= +TitleList.ApplyTemp.70=0 +TitleList.Expanded.70=0 +TitleList.Kind.70=0 +TitleList.Title.71=Footnotes +TitleList.Level.71=0 +TitleList.Url.71=Footnotes.html +TitleList.Icon.71=0 +TitleList.Status.71=0 +TitleList.Keywords.71= +TitleList.ContextNumber.71= +TitleList.ApplyTemp.71=0 +TitleList.Expanded.71=0 +TitleList.Kind.71=1
Added: trunk/docs/manual/gfw/event-pre-resize.html ============================================================================== --- (empty file) +++ trunk/docs/manual/gfw/event-pre-resize.html Wed Oct 11 16:25:54 2006 @@ -0,0 +1,99 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<title>event-pre-resize</title> +<meta name="GENERATOR" content="WinCHM"> +<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"> + +</head> + +<body><FONT face=Arial> +<H4> +<TABLE style="WIDTH: 100%; BORDER-COLLAPSE: collapse" +borderColor=#ffffff cellSpacing=0 cellPadding=2 width="100%" border=1> + + <TR> + <TD width="60%"><STRONG>event-pre-resize</STRONG></TD> + <TD> + <P><FONT size=2>[Generic Function]</FONT> </P></TD></TR></TABLE> +<HR></H4> +<P></FONT><FONT face=Arial><STRONG>syntax</STRONG></FONT></P> + <P dir=ltr style="MARGIN-RIGHT: 0px"><FONT +face=Arial size=2><FONT face=Arial size=2>(gfw:event-pre-resize <EM><A +href="event-dispatcher.html">event-dispatcher</A> widget <A +href="../gfs/rectangle.html" >rectangle</A> + type</EM>)</P> +<H4><FONT face=Arial>arguments +<P> +<TABLE style="WIDTH: 100%; BORDER-COLLAPSE: collapse" borderColor=#ffffff +cellSpacing=0 cellPadding=2 width="100%" border=1> + + <TR> + <TD width="20%"><EM><FONT size=2>event-dispatcher</FONT></EM></TD> + <TD><FONT size=2>The <A href="event-dispatcher.html" >event-dispatcher</A> that will + process the resize event.</FONT></TD></TR> + <TR> + <TD width="20%"><FONT size=2><EM>widget</EM></FONT></TD> + <TD><FONT size=2>The widget being +resized.</FONT></TD></TR> + <TR> + <TD width="20%"><FONT size=2><EM>rectangle</EM></FONT></TD> + <TD><FONT size=2>A <A + href="../gfs/rectangle.html">rectangle</A> object describing the resize drag + rectangle.</FONT></TD></TR> + <TR> + <TD width="20%"><FONT size=2><EM>type</EM></FONT></TD> + <TD> + <P><FONT size=2>Identifies which + of eight possible areas of <EM>widget</EM> 's frame + is being sized:<BR><FONT face=Courier size=3>:bottom</FONT> indicates the bottom + edge of <EM>widget</EM> + <BR><FONT face=Courier + size=3>:bottom-left</FONT> + indicates the bottom-left corner of <EM>widget</EM> + <BR><FONT face=Courier size=3>:bottom-right</FONT> indicates the + bottom-right corner of + <EM>widget</EM> <BR><FONT + face=Courier size=3>:left</FONT> indicates the left edge of + <EM>widget</EM><BR><FONT face=Courier size=3>:right</FONT> indicates the + right edge of <EM>widget</EM><BR><FONT face=Courier size=3>:top</FONT> + indicates the top edge of <EM>widget</EM><BR><FONT face=Courier + size=3>:top-left</FONT> indicates the top-left corner of + <EM>widget</EM><BR><FONT face=Courier size=3>:top-right</FONT> indicates + the top-right corner of +<EM>widget</EM> + +</FONT></P></TD></TR></TABLE></P>description</FONT></H4><FONT face=Arial size=2> +<P dir=ltr style="MARGIN-RIGHT: 0px"><FONT face=Arial size=2> Implement a method for this generic function to respond to +<EM>widget</EM> being resized. This event function gives the +application an opportunity to modify the resize drag outline. This is +accomplished by changing one or more of the coordinates of +<EM>rectangle.</EM> + + + + + + + + + </FONT></P></FONT></FONT></FONT> +<H4><FONT face=Arial>see also</FONT></H4><FONT face=Arial size=2><FONT +face=Arial size=2><FONT face=Arial size=2> +<P><A href="event-resize.html">event-resize</A></P> +<P> +<HR> + +<P></P> + +<P dir=ltr style="MARGIN-RIGHT: 0px"> </P> +<P dir=ltr style="MARGIN-RIGHT: 0px"> +<TABLE style="WIDTH: 100%; BORDER-COLLAPSE: collapse" borderColor=#ffffff +cellSpacing=0 cellPadding=2 width="100%" border=1> + + <TR> + <TD width="60%"> </TD> + <TD> + <P><FONT size=1>Copyright � 2006, Jack D. Unrue</FONT> +</P></TD></TR></TABLE></P></FONT></FONT></FONT></body> +</html>
Added: trunk/docs/manual/gfw/event-resize.html ============================================================================== --- (empty file) +++ trunk/docs/manual/gfw/event-resize.html Wed Oct 11 16:25:54 2006 @@ -0,0 +1,84 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<title>event-resize</title> +<meta name="GENERATOR" content="WinCHM"> +<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252"> + +</head> + +<body><FONT face=Arial> +<H4> +<TABLE style="WIDTH: 100%; BORDER-COLLAPSE: collapse" +borderColor=#ffffff cellSpacing=0 cellPadding=2 width="100%" border=1> + + <TR> + <TD width="60%"><STRONG>event-resize</STRONG></TD> + <TD> + <P><FONT size=2>[Generic Function]</FONT> </P></TD></TR></TABLE> +<HR></H4> +<P></FONT><FONT face=Arial><STRONG>syntax</STRONG></FONT></P> + <P dir=ltr style="MARGIN-RIGHT: 0px"><FONT +face=Arial size=2><FONT face=Arial size=2>(gfw:event-resize <EM><A +href="event-dispatcher.html">event-dispatcher</A> widget <A +href="../gfs/size.html">size</A> + type</EM>)</P> +<H4><FONT face=Arial>arguments +<P> +<TABLE style="WIDTH: 100%; BORDER-COLLAPSE: collapse" borderColor=#ffffff +cellSpacing=0 cellPadding=2 width="100%" border=1> + + <TR> + <TD width="20%"><EM><FONT size=2>event-dispatcher</FONT></EM></TD> + <TD><FONT size=2>The <A href="event-dispatcher.html" >event-dispatcher</A> that will + process the resize event.</FONT></TD></TR> + <TR> + <TD width="20%"><FONT size=2><EM>widget</EM></FONT></TD> + <TD><FONT size=2>The widget being +resized.</FONT></TD></TR> + <TR> + <TD width="20%"><FONT size=2><EM>size</EM></FONT></TD> + <TD><FONT size=2>A <A + href="../gfs/size.html">size</A> object describing widget's new + dimensions.</FONT></TD></TR> + <TR> + <TD width="20%"><FONT size=2><EM>type</EM></FONT></TD> + <TD> + <P><FONT size=2>Identifies which of three possible + resizing actions occurred:<BR><FONT face=Courier size=3>:maximized</FONT> + indicates that <EM>widget</EM> was expanded to its maximum <A + href="../gfs/size.html">size</A>, such as when the user clicks on the + maximize button of a window frame<BR><FONT face=Courier + size=3>:minimized</FONT> indicates that <EM>widget</EM> was minimized to + the taskbar<BR><FONT face=Courier size=3>:restored</FONT> indicates that + <EM>widget</EM> was either restored from a minimized state, or that + resizing occurred while <EM>widget</EM> was already in a visible, + non-maximized +state</FONT></P></TD></TR></TABLE></P>description</FONT></H4><FONT face=Arial size=2> +<P dir=ltr style="MARGIN-RIGHT: 0px"><FONT face=Arial size=2> Implement a method for this generic function to respond to +<EM>widget</EM> + + + + + + + + being + resized.</FONT></P> +<H4><FONT face=Arial>see also</FONT></H4><FONT face=Arial size=2><FONT +face=Arial size=2><FONT face=Arial size=2> +<P><A href="event-pre-resize.html">event-pre-resize</A></P></FONT></FONT></FONT> +<HR> + +<P dir=ltr style="MARGIN-RIGHT: 0px"> </P> +<P dir=ltr style="MARGIN-RIGHT: 0px"> +<TABLE style="WIDTH: 100%; BORDER-COLLAPSE: collapse" borderColor=#ffffff +cellSpacing=0 cellPadding=2 width="100%" border=1> + + <TR> + <TD width="60%"> </TD> + <TD> + <P><FONT size=1>Copyright � 2006, Jack D. Unrue</FONT> +</P></TD></TR></TABLE></P></FONT></FONT></FONT></body> +</html>
Modified: trunk/src/uitoolkit/system/system-constants.lisp ============================================================================== --- trunk/src/uitoolkit/system/system-constants.lisp (original) +++ trunk/src/uitoolkit/system/system-constants.lisp Wed Oct 11 16:25:54 2006 @@ -1331,6 +1331,15 @@ (defconstant +wm-appcommand+ #x0319) (defconstant +wm-themechanged+ #x031A)
+(defconstant +wmsz-left+ 1) +(defconstant +wmsz-right+ 2) +(defconstant +wmsz-top+ 3) +(defconstant +wmsz-topleft+ 4) +(defconstant +wmsz-topright+ 5) +(defconstant +wmsz-bottom+ 6) +(defconstant +wmsz-bottomleft+ 7) +(defconstant +wmsz-bottomright+ 8) + (defconstant +ws-overlapped+ #x00000000) (defconstant +ws-popup+ #x80000000) (defconstant +ws-child+ #x40000000)
Modified: trunk/src/uitoolkit/widgets/event-generics.lisp ============================================================================== --- trunk/src/uitoolkit/widgets/event-generics.lisp (original) +++ trunk/src/uitoolkit/widgets/event-generics.lisp Wed Oct 11 16:25:54 2006 @@ -168,10 +168,10 @@ (:method (dispatcher widget) (declare (ignorable dispatcher widget))))
-(defgeneric event-pre-resize (dispatcher widget) - (:documentation "Implement this to preempt resizing; return T if processed or nil if not.") - (:method (dispatcher widget) - (declare (ignorable dispatcher widget)))) +(defgeneric event-pre-resize (dispatcher widget rect type) + (:documentation "Implement this to modify widget's resize drag rectangle.") + (:method (dispatcher widget rect type) + (declare (ignorable dispatcher widget rect type))))
(defgeneric event-resize (dispatcher widget size type) (:documentation "Implement this to respond to widget being resized.")
Modified: trunk/src/uitoolkit/widgets/event.lisp ============================================================================== --- trunk/src/uitoolkit/widgets/event.lisp (original) +++ trunk/src/uitoolkit/widgets/event.lisp Wed Oct 11 16:25:54 2006 @@ -488,12 +488,27 @@ 0)
(defmethod process-message (hwnd (msg (eql gfs::+wm-sizing+)) wparam lparam) - (declare (ignore wparam lparam)) - (let* ((tc (thread-context)) - (w (get-widget tc hwnd))) - (if (and w (event-pre-resize (dispatcher w) w)) - 1 - 0))) + (let* ((w (get-widget (thread-context) hwnd)) + (ptr (cffi:make-pointer (logand #xFFFFFFFF lparam))) + (rect (cffi:convert-from-foreign ptr 'gfs::rect-pointer)) + (type (case wparam + (#.gfs::+wmsz-bottom+ :bottom) + (#.gfs::+wmsz-bottomleft+ :bottom-left) + (#.gfs::+wmsz-bottomright+ :bottom-right) + (#.gfs::+wmsz-left+ :left) + (#.gfs::+wmsz-right+ :right) + (#.gfs::+wmsz-top+ :top) + (#.gfs::+wmsz-topleft+ :top-left) + (#.gfs::+wmsz-topright+ :top-right)))) + (event-pre-resize (dispatcher w) w rect type) + (cffi:with-foreign-slots ((gfs::left gfs::top gfs::right gfs::bottom) ptr gfs::rect) + (let ((pnt (gfs:location rect)) + (size (gfs:size rect))) + (setf gfs::left (gfs:point-x pnt) + gfs::top (gfs:point-y pnt) + gfs::right (+ (gfs:point-x pnt) (gfs:size-width size)) + gfs::bottom (+ (gfs:point-y pnt) (gfs:size-height size)))))) + 1)
(defmethod process-message (hwnd (msg (eql gfs::+wm-timer+)) wparam lparam) (declare (ignore lparam))
Modified: trunk/src/uitoolkit/widgets/scrolling-event-dispatcher.lisp ============================================================================== --- trunk/src/uitoolkit/widgets/scrolling-event-dispatcher.lisp (original) +++ trunk/src/uitoolkit/widgets/scrolling-event-dispatcher.lisp Wed Oct 11 16:25:54 2006 @@ -135,6 +135,17 @@ ;;; methods ;;;
+(defmethod event-pre-resize ((disp scrolling-event-dispatcher) (window window) rect type) + (declare (ignore type)) + (let ((h-step (gfs:size-width (step-increments disp))) + (v-step (gfs:size-height (step-increments disp))) + (size (gfs:size rect))) + (if (/= h-step 1) + (setf (gfs:size-width size) (* (floor (gfs:size-width size) h-step) h-step))) + (if (/= v-step 1) + (setf (gfs:size-height size) (* (floor (gfs:size-height size) v-step) v-step))) + (setf (gfs:size rect) size))) + (defmethod event-resize ((disp scrolling-event-dispatcher) (window window) size type) (declare (ignore size type)) (call-next-method)