[graphic-forms-cvs] r299 - in trunk: . docs/manual docs/manual/gfw src/uitoolkit/widgets
junrue at common-lisp.net
junrue at common-lisp.net
Wed Oct 11 20:50:25 UTC 2006
Author: junrue
Date: Wed Oct 11 16:50:24 2006
New Revision: 299
Added:
trunk/docs/manual/gfw/event-move.html
trunk/docs/manual/gfw/event-pre-move.html
Modified:
trunk/NEWS.txt
trunk/docs/manual/Graphic-FormsProgrammingReference.wcp
trunk/docs/manual/gfw/event-pre-resize.html
trunk/src/uitoolkit/widgets/event-generics.lisp
trunk/src/uitoolkit/widgets/event.lisp
Log:
implemented event-pre-move
Modified: trunk/NEWS.txt
==============================================================================
--- trunk/NEWS.txt (original)
+++ trunk/NEWS.txt Wed Oct 11 16:50:24 2006
@@ -27,6 +27,12 @@
* scrolling-event-dispatcher for automatic management of a scrollable
child panel and window scrollbars
+. Implemented GFW:EVENT-PRE-RESIZE function so that applications can customize
+ the behavior of a window's size drag rectangle.
+
+. Implemented GFW:EVENT-PRE-MOVE function so that applications can customize
+ the behavior of a window's move drag rectangle.
+
. Improved GFW:HEAP-LAYOUT such that it obeys the top child's minimum and
maximum sizes, if any such sizes are set.
@@ -38,12 +44,12 @@
. Implemented GFW:ENABLE-REDRAW to enable applications to temporarily
disable (and later re-enable) drawing of widget content.
-. Fixed a silly bug in GFW:CHECKED-P (and GFW:SELECTED-P) for checkbox and
+. Fixed a bug in GFW:CHECKED-P (and GFW:SELECTED-P) for checkbox and
radio button -style buttons.
-. Fixed another silly bug, this one in the initialization of the paint
- rectangle in the WM_PAINT message handling method; the correct rectangle
- is now passed to GFW:EVENT-PAINT
+. Fixed a bug in the initialization of the paint rectangle in the WM_PAINT
+ message handling method; the correct rectangle is now passed to
+ GFW:EVENT-PAINT
. Fixed a bug in the SETF methods for GFW:MAXIMUM-SIZE and GFW:MINIMUM-SIZE
for windows whereby the size value was not being set in the appropriate
Modified: trunk/docs/manual/Graphic-FormsProgrammingReference.wcp
==============================================================================
--- trunk/docs/manual/Graphic-FormsProgrammingReference.wcp (original)
+++ trunk/docs/manual/Graphic-FormsProgrammingReference.wcp Wed Oct 11 16:50:24 2006
@@ -92,7 +92,7 @@
DefaultTopic=Introduction.html
[TOPICS]
-TitleList=72
+TitleList=74
TitleList.Title.0=Legal Information
TitleList.Level.0=0
TitleList.Url.0=LegalInfo.html
@@ -693,99 +693,99 @@
TitleList.ApplyTemp.59=0
TitleList.Expanded.59=0
TitleList.Kind.59=0
-TitleList.Title.60=event-pre-resize
+TitleList.Title.60=event-move
TitleList.Level.60=2
-TitleList.Url.60=gfw\event-pre-resize.html
+TitleList.Url.60=gfw\event-move.html
TitleList.Icon.60=0
TitleList.Status.60=0
-TitleList.Keywords.60=event-pre-resize
+TitleList.Keywords.60=event-move
TitleList.ContextNumber.60=
TitleList.ApplyTemp.60=0
TitleList.Expanded.60=0
TitleList.Kind.60=0
-TitleList.Title.61=event-resize
+TitleList.Title.61=event-pre-move
TitleList.Level.61=2
-TitleList.Url.61=gfw\event-resize.html
+TitleList.Url.61=gfw\event-pre-move.html
TitleList.Icon.61=0
TitleList.Status.61=0
-TitleList.Keywords.61=event-resize
+TitleList.Keywords.61=event-pre-move
TitleList.ContextNumber.61=
TitleList.ApplyTemp.61=0
TitleList.Expanded.61=0
TitleList.Kind.61=0
-TitleList.Title.62=event-select
+TitleList.Title.62=event-pre-resize
TitleList.Level.62=2
-TitleList.Url.62=gfw\event-select.html
+TitleList.Url.62=gfw\event-pre-resize.html
TitleList.Icon.62=0
TitleList.Status.62=0
-TitleList.Keywords.62=event-select
+TitleList.Keywords.62=event-pre-resize
TitleList.ContextNumber.62=
TitleList.ApplyTemp.62=0
TitleList.Expanded.62=0
TitleList.Kind.62=0
-TitleList.Title.63=event-source
+TitleList.Title.63=event-resize
TitleList.Level.63=2
-TitleList.Url.63=gfw\event-source.html
+TitleList.Url.63=gfw\event-resize.html
TitleList.Icon.63=0
TitleList.Status.63=0
-TitleList.Keywords.63=event-source
+TitleList.Keywords.63=event-resize
TitleList.ContextNumber.63=
TitleList.ApplyTemp.63=0
TitleList.Expanded.63=0
TitleList.Kind.63=0
-TitleList.Title.64=message-loop
+TitleList.Title.64=event-select
TitleList.Level.64=2
-TitleList.Url.64=gfw\message-loop.html
+TitleList.Url.64=gfw\event-select.html
TitleList.Icon.64=0
TitleList.Status.64=0
-TitleList.Keywords.64=message-loop
+TitleList.Keywords.64=event-select
TitleList.ContextNumber.64=
TitleList.ApplyTemp.64=0
TitleList.Expanded.64=0
TitleList.Kind.64=0
-TitleList.Title.65=obtain-event-time
+TitleList.Title.65=event-source
TitleList.Level.65=2
-TitleList.Url.65=gfw\obtain-event-time.html
+TitleList.Url.65=gfw\event-source.html
TitleList.Icon.65=0
TitleList.Status.65=0
-TitleList.Keywords.65=obtain-event-time
+TitleList.Keywords.65=event-source
TitleList.ContextNumber.65=
TitleList.ApplyTemp.65=0
TitleList.Expanded.65=0
TitleList.Kind.65=0
-TitleList.Title.66=with-graphics-context
+TitleList.Title.66=message-loop
TitleList.Level.66=2
-TitleList.Url.66=gfw\with-graphics-context.html
+TitleList.Url.66=gfw\message-loop.html
TitleList.Icon.66=0
TitleList.Status.66=0
-TitleList.Keywords.66=with-graphics-context
+TitleList.Keywords.66=message-loop
TitleList.ContextNumber.66=
TitleList.ApplyTemp.66=0
TitleList.Expanded.66=0
TitleList.Kind.66=0
-TitleList.Title.67=Miscellaneous Topics
-TitleList.Level.67=0
-TitleList.Url.67=MiscellaneousTopics.html
+TitleList.Title.67=obtain-event-time
+TitleList.Level.67=2
+TitleList.Url.67=gfw\obtain-event-time.html
TitleList.Icon.67=0
TitleList.Status.67=0
-TitleList.Keywords.67=
+TitleList.Keywords.67=obtain-event-time
TitleList.ContextNumber.67=
TitleList.ApplyTemp.67=0
TitleList.Expanded.67=0
TitleList.Kind.67=0
-TitleList.Title.68=Image Data Plugins
-TitleList.Level.68=1
-TitleList.Url.68=ImageDataPlugins.html
+TitleList.Title.68=with-graphics-context
+TitleList.Level.68=2
+TitleList.Url.68=gfw\with-graphics-context.html
TitleList.Icon.68=0
TitleList.Status.68=0
-TitleList.Keywords.68=
+TitleList.Keywords.68=with-graphics-context
TitleList.ContextNumber.68=
TitleList.ApplyTemp.68=0
TitleList.Expanded.68=0
TitleList.Kind.68=0
-TitleList.Title.69=Terminology Conventions
+TitleList.Title.69=Miscellaneous Topics
TitleList.Level.69=0
-TitleList.Url.69=TerminologyConventions.html
+TitleList.Url.69=MiscellaneousTopics.html
TitleList.Icon.69=0
TitleList.Status.69=0
TitleList.Keywords.69=
@@ -793,9 +793,9 @@
TitleList.ApplyTemp.69=0
TitleList.Expanded.69=0
TitleList.Kind.69=0
-TitleList.Title.70=Glossary
-TitleList.Level.70=0
-TitleList.Url.70=Glossary.html
+TitleList.Title.70=Image Data Plugins
+TitleList.Level.70=1
+TitleList.Url.70=ImageDataPlugins.html
TitleList.Icon.70=0
TitleList.Status.70=0
TitleList.Keywords.70=
@@ -803,14 +803,34 @@
TitleList.ApplyTemp.70=0
TitleList.Expanded.70=0
TitleList.Kind.70=0
-TitleList.Title.71=Footnotes
+TitleList.Title.71=Terminology Conventions
TitleList.Level.71=0
-TitleList.Url.71=Footnotes.html
+TitleList.Url.71=TerminologyConventions.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
+TitleList.Kind.71=0
+TitleList.Title.72=Glossary
+TitleList.Level.72=0
+TitleList.Url.72=Glossary.html
+TitleList.Icon.72=0
+TitleList.Status.72=0
+TitleList.Keywords.72=
+TitleList.ContextNumber.72=
+TitleList.ApplyTemp.72=0
+TitleList.Expanded.72=0
+TitleList.Kind.72=0
+TitleList.Title.73=Footnotes
+TitleList.Level.73=0
+TitleList.Url.73=Footnotes.html
+TitleList.Icon.73=0
+TitleList.Status.73=0
+TitleList.Keywords.73=
+TitleList.ContextNumber.73=
+TitleList.ApplyTemp.73=0
+TitleList.Expanded.73=0
+TitleList.Kind.73=1
Added: trunk/docs/manual/gfw/event-move.html
==============================================================================
--- (empty file)
+++ trunk/docs/manual/gfw/event-move.html Wed Oct 11 16:50:24 2006
@@ -0,0 +1,70 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>event-move</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-move</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-move <A
+href="event-dispatcher.html"><EM>event-dispatcher</EM></A><EM> widget
+</EM> <A
+href="../gfs/point.html"><EM>point</EM></A>)<EM> </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 move event.</FONT></TD></TR>
+ <TR>
+ <TD width="20%"><FONT size=2><EM>widget</EM></FONT></TD>
+ <TD><FONT size=2>The widget being
+moved.</FONT></TD></TR>
+ <TR>
+ <TD width="20%"><FONT size=2><EM>point</EM></FONT></TD>
+ <TD><FONT size=2>A <A
+ href="../gfs/point.html">point</A> object describing widget's new
+ location.</FONT></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
+ moved.</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-move.html">event-pre-move</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>
Added: trunk/docs/manual/gfw/event-pre-move.html
==============================================================================
--- (empty file)
+++ trunk/docs/manual/gfw/event-pre-move.html Wed Oct 11 16:50:24 2006
@@ -0,0 +1,77 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>event-pre-move</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-move</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-move <EM><A
+href="event-dispatcher.html">event-dispatcher</A> widget <A
+href="../gfs/rectangle.html" >rectangle</A>)
+ </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 move event.</FONT></TD></TR>
+ <TR>
+ <TD width="20%"><FONT size=2><EM>widget</EM></FONT></TD>
+ <TD><FONT size=2>The widget being
+moved.</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 move drag rectangle, which may be modified by the
+ application.</FONT></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 moved. This event function gives the
+application an opportunity to modify the move drag outline prior to the move
+event being delivered, thus controlling the resulting
+location.
+
+
+
+
+
+
+
+
+ </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-move.html">event-move</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>
Modified: trunk/docs/manual/gfw/event-pre-resize.html
==============================================================================
--- trunk/docs/manual/gfw/event-pre-resize.html (original)
+++ trunk/docs/manual/gfw/event-pre-resize.html Wed Oct 11 16:50:24 2006
@@ -39,8 +39,9 @@
<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>
+ href="../gfs/rectangle.html">rectangle</A> object describing the
+ resize drag rectangle, which may be modified by the
+ application.</FONT></TD></TR>
<TR>
<TD width="20%"><FONT size=2><EM>type</EM></FONT></TD>
<TD>
@@ -66,9 +67,9 @@
</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>
+application an opportunity to modify the resize drag outline prior to the resize
+event being delivered, thus controlling the resulting
+dimensions.
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:50:24 2006
@@ -163,10 +163,10 @@
(:method (dispatcher widget keycode char span new-content)
(declare (ignorable dispatcher widget keycode char span new-content))))
-(defgeneric event-pre-move (dispatcher widget)
- (:documentation "Implement this to preempt moving; return T if processed or nil if not.")
- (:method (dispatcher widget)
- (declare (ignorable dispatcher widget))))
+(defgeneric event-pre-move (dispatcher widget rect)
+ (:documentation "Implement this to modify widget's move drag rectangle.")
+ (:method (dispatcher widget rect)
+ (declare (ignorable dispatcher widget rect))))
(defgeneric event-pre-resize (dispatcher widget rect type)
(:documentation "Implement this to modify widget's resize drag rectangle.")
Modified: trunk/src/uitoolkit/widgets/event.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/event.lisp (original)
+++ trunk/src/uitoolkit/widgets/event.lisp Wed Oct 11 16:50:24 2006
@@ -345,12 +345,19 @@
0)
(defmethod process-message (hwnd (msg (eql gfs::+wm-moving+)) wparam lparam)
- (declare (ignore wparam lparam))
- (let* ((tc (thread-context))
- (w (get-widget tc hwnd)))
- (if (and w (event-pre-move (dispatcher w) w))
- 1
- 0)))
+ (declare (ignore wparam))
+ (let* ((w (get-widget (thread-context) hwnd))
+ (ptr (cffi:make-pointer (logand #xFFFFFFFF lparam)))
+ (rect (cffi:convert-from-foreign ptr 'gfs::rect-pointer)))
+ (event-pre-move (dispatcher w) w rect)
+ (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-hscroll+)) wparam lparam)
(let ((widget (get-widget (thread-context)
More information about the Graphic-forms-cvs
mailing list