Author: junrue
Date: Sat Sep 30 12:43:30 2006
New Revision: 278
Modified:
trunk/docs/manual/widget-functions.texinfo
trunk/docs/manual/widget-types.texinfo
trunk/src/packages.lisp
trunk/src/tests/uitoolkit/scroll-grid-panel.lisp
trunk/src/tests/uitoolkit/widget-tester.lisp
trunk/src/uitoolkit/system/system-utils.lisp
trunk/src/uitoolkit/widgets/control.lisp
trunk/src/uitoolkit/widgets/event.lisp
trunk/src/uitoolkit/widgets/scrollbar.lisp
trunk/src/uitoolkit/widgets/scrolling-event-dispatcher.lisp
trunk/src/uitoolkit/widgets/slider.lisp
trunk/src/uitoolkit/widgets/widget-classes.lisp
trunk/src/uitoolkit/widgets/widget-generics.lisp
Log:
slider controls now getting created, more work needed; renamed thumb-limits GF to outer-limits and added inner-limits
Modified: trunk/docs/manual/widget-functions.texinfo
==============================================================================
--- trunk/docs/manual/widget-functions.texinfo (original)
+++ trunk/docs/manual/widget-functions.texinfo Sat Sep 30 12:43:30 2006
@@ -283,6 +283,18 @@
an image or an icon-bundle.
@end deffn
+@anchor{inner-limits}
+@deffn GenericFunction inner-limits self => @ref{span}
+(setf (@strong{inner-limits} @var{self}) @var{span})@*
+
+Certain @ref{control}s having the concept of a range of values within
+which a selector may be positioned also allow the indicator to
+be further constrained to a narrower range, e.g., @ref{slider}.
+By default, this function returns the same span that @ref{outer-limits}
+does. If the @sc{setf} function is used to set a sub-range, @var{self}'s
+visual style will be updated and the indicator restricted appropriately.
+@end deffn
+
@anchor{item-count}
@deffn GenericFunction item-count self => integer
Returns the number of instances of @ref{item} subclasses contained within
@@ -419,6 +431,18 @@
being the primary.
@end defun
+@anchor{outer-limits}
+@deffn GenericFunction outer-limits self => @ref{span}
+(setf (@strong{outer-limits} @var{self}) @var{span})@*
+
+Returns a span representing the widest range of start and end
+positions to which the indicator within @var{self} may be set. The
+@sc{setf} function allows this span to be modified. Application code
+is responsible for synchronizing the range with its content model.
+Certain controls also allow the actual range of positions to be
+further constrained; @xref{inner-limits}.
+@end deffn
+
@anchor{owner}
@deffn GenericFunction owner self
Returns the @var{owner} of @var{self}, which may be different from
@@ -672,17 +696,6 @@
other cases there is no text component at all.
@end deffn
-@anchor{thumb-limits}
-@deffn GenericFunction thumb-limits self => @ref{span}
-(setf (@strong{thumb-limits} @var{self}) @var{span})@*
-
-Returns a span representing the start and end positions to which the
-scrollbar @var{self} may be set. The @sc{setf} function allows this
-span to be modified. Application code is responsible for managing the
-thumb limits in relation to the content model that will be scrolled
-within a @ref{window}. @xref{thumb-position}.
-@end deffn
-
@anchor{thumb-position}
@deffn GenericFunction thumb-position self => integer
(setf (@strong{thumb-position} @var{self}) @var{integer})@*
@@ -691,7 +704,7 @@
scroll thumb for @var{self}. The @sc{setf} function allows
the position to be modified. A @ref{scrolling-event-dispatcher}
instance will manage the thumb position for the @ref{window}
-to which it is assigned. @xref{thumb-limits}.
+to which it is assigned. @xref{outer-limits}.
@end deffn
@anchor{undo-available-p}
Modified: trunk/docs/manual/widget-types.texinfo
==============================================================================
--- trunk/docs/manual/widget-types.texinfo (original)
+++ trunk/docs/manual/widget-types.texinfo Sat Sep 30 12:43:30 2006
@@ -475,10 +475,20 @@
@end-control-subclass
@begin-control-subclass{slider,
-This class represents a @ref{control} having a slider component and optional
-tick marks.,
+This class represents a @ref{control} having a sliding-thumb component
+and optional tick marks.,
event-select}
@control-callback-initarg{slider,event-select}
+@deffn Initarg :outer-limits
+This initarg accepts a @ref{span} that describes the minimum and maximum
+possible slider positions.
+@end deffn
+@deffn Initarg :page-increment
+TODO
+@end deffn
+@deffn Initarg :step-increment
+TODO
+@end deffn
@deffn Initarg :style
@begin-primary-style-choices{By default\, sliders are oriented horizontally
with a tick mark below the control at the beginning and end of its range.}
@@ -494,9 +504,6 @@
This style keyword configures the slider to be oriented vertically.
@end-primary-style-choices
@begin-optional-style-choices
-@item :constrained-range
-Specifies that the slider restricts (and highlights) a subset of the
-total range; the subset is indicated with triangles instead of dashes.
@item :no-border
By default, a slider is drawn with a border; this style keyword
disables that feature.
Modified: trunk/src/packages.lisp
==============================================================================
--- trunk/src/packages.lisp (original)
+++ trunk/src/packages.lisp Sat Sep 30 12:43:30 2006
@@ -264,7 +264,9 @@
#:menu-item
#:panel
#:root-window
+ #:scrollbar
#:scrolling-event-dispatcher
+ #:slider
#:timer
#:top-level
#:widget
@@ -438,6 +440,7 @@
#:initial-delay-of
#:horizontal-policy-of
#:image
+ #:inner-limits
#:item-count
#:item-height
#:item-id
@@ -474,6 +477,7 @@
#:obtain-horizontal-scrollbar
#:obtain-primary-display
#:obtain-vertical-scrollbar
+ #:outer-limits
#:owner
#:pack
#:page-increment
@@ -516,7 +520,6 @@
#:text-height
#:text-limit
#:text-modified-p
- #:thumb-limits
#:thumb-position
#:thumb-track-position
#:tooltip-text
Modified: trunk/src/tests/uitoolkit/scroll-grid-panel.lisp
==============================================================================
--- trunk/src/tests/uitoolkit/scroll-grid-panel.lisp (original)
+++ trunk/src/tests/uitoolkit/scroll-grid-panel.lisp Sat Sep 30 12:43:30 2006
@@ -51,11 +51,11 @@
(gfw:minimum-size panel) panel-size)
(assert (gfs:equal-size-p panel-size (slot-value panel 'gfw::max-size)))
(let ((scrollbar (gfw:obtain-horizontal-scrollbar parent)))
- (setf (gfw:thumb-limits scrollbar) (gfs:make-span :end (gfs:size-width panel-size))
+ (setf (gfw:outer-limits scrollbar) (gfs:make-span :end (gfs:size-width panel-size))
(gfw:thumb-position scrollbar) 0)
(gfs:dispose scrollbar))
(let ((scrollbar (gfw:obtain-vertical-scrollbar parent)))
- (setf (gfw:thumb-limits scrollbar) (gfs:make-span :end (gfs:size-height panel-size))
+ (setf (gfw:outer-limits scrollbar) (gfs:make-span :end (gfs:size-height panel-size))
(gfw:thumb-position scrollbar) 0)
(gfs:dispose scrollbar))
#|
Modified: trunk/src/tests/uitoolkit/widget-tester.lisp
==============================================================================
--- trunk/src/tests/uitoolkit/widget-tester.lisp (original)
+++ trunk/src/tests/uitoolkit/widget-tester.lisp Sat Sep 30 12:43:30 2006
@@ -210,20 +210,41 @@
(gfw:delete-all lb2)
outer-panel))
+(defun populate-scrollbar-test-panel ()
+ (let* ((panel-disp (make-instance 'widget-tester-panel-events))
+ (outer-panel (make-instance 'gfw:panel :dispatcher panel-disp
+ :parent *widget-tester-win*
+ :layout (make-instance 'gfw:flow-layout :style '(:vertical) :spacing 4 :margins 4))))
+ (make-instance 'gfw:label :parent outer-panel :text "some nice slider label")
+ (make-instance 'gfw:slider :parent outer-panel :outer-limits (gfs:make-span :start 0 :end 10))
+ outer-panel))
+
(defun widget-tester-internal ()
(setf *default-pathname-defaults* (parse-namestring gfsys::*gf-tests-dir*))
- (let ((disp (make-instance 'widget-tester-events))
- (layout (make-instance 'gfw:heap-layout))
- (menubar (gfw:defmenu ((:item "&File"
- :submenu ((:item "E&xit" :callback #'widget-tester-exit)))))))
- (setf *widget-tester-win* (make-instance 'gfw:top-level :dispatcher disp
- :layout layout
- :style '(:frame)))
+ (setf *widget-tester-win* (make-instance 'gfw:top-level :dispatcher (make-instance 'widget-tester-events)
+ :layout (make-instance 'gfw:heap-layout)
+ :style '(:frame)))
+ (let* ((layout (gfw:layout-of *widget-tester-win*))
+ (test-panels (list (populate-list-box-test-panel)
+ (populate-scrollbar-test-panel)))
+ (select-lb-callback (lambda (disp item)
+ (declare (ignore disp item))
+ (setf (gfw:top-child-of layout) (first test-panels))
+ (gfw:layout *widget-tester-win*)))
+ (select-sb-callback (lambda (disp item)
+ (declare (ignore disp item))
+ (setf (gfw:top-child-of layout) (second test-panels))
+ (gfw:layout *widget-tester-win*)))
+ (menubar (gfw:defmenu ((:item "&File"
+ :submenu ((:item "E&xit" :callback #'widget-tester-exit)))
+ (:item "&Panels"
+ :submenu ((:item "&List Boxes" :callback select-lb-callback)
+ (:item "&Scrollbars" :callback select-sb-callback)))))))
(setf (gfw:menu-bar *widget-tester-win*) menubar
- (gfw:top-child-of layout) (populate-list-box-test-panel)
- (gfw:image *widget-tester-win*) (make-instance 'gfg:icon-bundle :file (merge-pathnames "default.ico")))
- (gfw:pack *widget-tester-win*)
- (gfw:show *widget-tester-win* t)))
+ (gfw:top-child-of layout) (first test-panels)
+ (gfw:image *widget-tester-win*) (make-instance 'gfg:icon-bundle :file (merge-pathnames "default.ico"))))
+ (gfw:pack *widget-tester-win*)
+ (gfw:show *widget-tester-win* t))
(defun widget-tester ()
(gfw:startup "Widget Tester" #'widget-tester-internal))
Modified: trunk/src/uitoolkit/system/system-utils.lisp
==============================================================================
--- trunk/src/uitoolkit/system/system-utils.lisp (original)
+++ trunk/src/uitoolkit/system/system-utils.lisp Sat Sep 30 12:43:30 2006
@@ -143,6 +143,18 @@
(if (typep obj 'gfs:native-object)
(gfs:dispose obj)))
+(declaim (inline lparam-high-word))
+(defun lparam-high-word (lparam)
+ (ash (logand #xFFFF0000 lparam) -16))
+
+(declaim (inline lparam-low-word))
+(defun lparam-low-word (lparam)
+ (logand #x0000FFFF lparam))
+
+(declaim (inline make-lparam))
+(defun make-lparam (hi lo)
+ (logior (ash (logand lo #xFFFF) 16) (logand hi #xFFFF)))
+
;;;
;;; convenience macros
;;;
Modified: trunk/src/uitoolkit/widgets/control.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/control.lisp (original)
+++ trunk/src/uitoolkit/widgets/control.lisp Sat Sep 30 12:43:30 2006
@@ -54,7 +54,7 @@
(gfs:handle parent)
std-style
ex-style
- (or id (increment-widget-id (thread-context))))))
+ id)))
(setf (slot-value ctrl 'gfs:handle) hwnd)
(subclass-wndproc hwnd)
(put-widget (thread-context) ctrl)
Modified: trunk/src/uitoolkit/widgets/event.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/event.lisp (original)
+++ trunk/src/uitoolkit/widgets/event.lisp Sat Sep 30 12:43:30 2006
@@ -81,12 +81,6 @@
(when (funcall msg-filter gm msg-ptr)
(return-from message-loop gfs::wparam)))))))
-(defmacro hi-word (lparam)
- `(ash (logand #xFFFF0000 ,lparam) -16))
-
-(defmacro lo-word (lparam)
- `(logand #x0000FFFF ,lparam))
-
(defun key-down-p (key-code)
"Return T if the key corresponding to key-code is currently down."
(= (logand (gfs::get-async-key-state key-code) #x8000) #x8000))
@@ -100,8 +94,8 @@
(w (get-widget tc hwnd))
(pnt (mouse-event-pnt tc)))
(when w
- (setf (gfs:point-x pnt) (lo-word lparam))
- (setf (gfs:point-y pnt) (hi-word lparam))
+ (setf (gfs:point-x pnt) (gfs::lparam-low-word lparam))
+ (setf (gfs:point-y pnt) (gfs::lparam-high-word lparam))
(funcall fn (dispatcher w) w pnt btn-symbol)))
0)
@@ -109,7 +103,7 @@
(let ((wndproc-val (gfs::get-class-long hwnd gfs::+gclp-wndproc+)))
(if (zerop wndproc-val)
(error 'gfs:win32-error :detail "get-class-long failed"))
- wndproc-val))
+ (logand wndproc-val #xFFFFFFFF)))
(defun subclass-wndproc (hwnd)
(if (zerop (gfs::set-window-long hwnd
@@ -197,8 +191,8 @@
(defmethod process-message (hwnd (msg (eql gfs::+wm-command+)) wparam lparam)
(let* ((tc (thread-context))
- (wparam-hi (hi-word wparam))
- (wparam-lo (lo-word wparam))
+ (wparam-hi (gfs::lparam-high-word wparam))
+ (wparam-lo (gfs::lparam-low-word wparam))
(owner (get-widget tc hwnd)))
; (format t "wparam-hi: ~x wparam-lo: ~x lparam: ~x~%" wparam-hi wparam-lo lparam)
(if owner
@@ -227,7 +221,7 @@
(defmethod process-message (hwnd (msg (eql gfs::+wm-menuselect+)) wparam lparam)
(declare (ignore hwnd lparam)) ; FIXME: handle system menus
(let* ((tc (thread-context))
- (item (get-item tc (lo-word wparam))))
+ (item (get-item tc (gfs::lparam-low-word wparam))))
(unless (null item)
(let ((d (dispatcher item)))
(unless (null d)
@@ -269,7 +263,7 @@
(declare (ignore lparam))
(let* ((tc (thread-context))
(widget (get-widget tc hwnd))
- (ch (code-char (lo-word wparam))))
+ (ch (code-char (gfs::lparam-low-word wparam))))
(when widget
(event-key-down (dispatcher widget) widget (virtual-key tc) ch)))
0)
@@ -277,7 +271,7 @@
(defmethod process-message (hwnd (msg (eql gfs::+wm-keydown+)) wparam lparam)
(declare (ignore lparam))
(let* ((tc (thread-context))
- (wparam-lo (lo-word wparam))
+ (wparam-lo (gfs::lparam-low-word wparam))
(ch (gfs::map-virtual-key wparam-lo 2))
(w (get-widget tc hwnd)))
(setf (virtual-key tc) wparam-lo)
@@ -288,7 +282,7 @@
(defmethod process-message (hwnd (msg (eql gfs::+wm-keyup+)) wparam lparam)
(declare (ignore lparam))
(let ((tc (thread-context)))
- (let* ((wparam-lo (lo-word wparam))
+ (let* ((wparam-lo (gfs::lparam-low-word wparam))
(ch (gfs::map-virtual-key wparam-lo 2))
(w (get-widget tc hwnd)))
(when w
@@ -352,14 +346,14 @@
(declare (ignore lparam))
(let ((widget (get-widget (thread-context) hwnd)))
(if widget
- (dispatch-scroll-notification widget :horizontal (lo-word wparam))))
+ (dispatch-scroll-notification widget :horizontal (gfs::lparam-low-word wparam))))
0)
(defmethod process-message (hwnd (msg (eql gfs::+wm-vscroll+)) wparam lparam)
(declare (ignore lparam))
(let ((widget (get-widget (thread-context) hwnd)))
(if widget
- (dispatch-scroll-notification widget :vertical (lo-word wparam))))
+ (dispatch-scroll-notification widget :vertical (gfs::lparam-low-word wparam))))
0)
(defmethod process-message (hwnd (msg (eql gfs::+wm-paint+)) wparam lparam)
Modified: trunk/src/uitoolkit/widgets/scrollbar.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/scrollbar.lisp (original)
+++ trunk/src/uitoolkit/widgets/scrollbar.lisp Sat Sep 30 12:43:30 2006
@@ -133,6 +133,19 @@
(error 'gfs:toolkit-error :detail "invalid standard scrollbar orientation")))
(setf (slot-value self 'dispatcher) nil)) ; standard scrollbars don't use dispatchers
+(defmethod outer-limits ((self standard-scrollbar))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (destructuring-bind (limits pagesize pos trackpos)
+ (sb-get-info self (orientation-of self))
+ (declare (ignore pagesize pos trackpos))
+ limits))
+
+(defmethod (setf outer-limits) (span (self standard-scrollbar))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (sb-set-thumb-limits self (orientation-of self) span))
+
(defmethod owner ((self standard-scrollbar))
(parent self))
@@ -184,19 +197,6 @@
(t
(warn 'gfs:toolkit-warning :detail "parent dispatcher is wrong type")))))
-(defmethod thumb-limits ((self standard-scrollbar))
- (if (gfs:disposed-p self)
- (error 'gfs:disposed-error))
- (destructuring-bind (limits pagesize pos trackpos)
- (sb-get-info self (orientation-of self))
- (declare (ignore pagesize pos trackpos))
- limits))
-
-(defmethod (setf thumb-limits) (span (self standard-scrollbar))
- (if (gfs:disposed-p self)
- (error 'gfs:disposed-error))
- (sb-set-thumb-limits self (orientation-of self) span))
-
(defmethod thumb-position ((self standard-scrollbar))
(if (gfs:disposed-p self)
(error 'gfs:disposed-error))
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 Sat Sep 30 12:43:30 2006
@@ -43,7 +43,7 @@
(defun compute-scrolling-delta (scrollbar step-size detail)
(let ((page-size (page-increment scrollbar))
- (limits (thumb-limits scrollbar))
+ (limits (outer-limits scrollbar))
(curr-pos (thumb-position scrollbar)))
(let ((new-pos (case detail
(:start (gfs:span-start limits))
Modified: trunk/src/uitoolkit/widgets/slider.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/slider.lisp (original)
+++ trunk/src/uitoolkit/widgets/slider.lisp Sat Sep 30 12:43:30 2006
@@ -90,12 +90,118 @@
;; styles that can be combined
;;
- (:constrained-range (setf std-flags (sl-sel-range-flags std-flags)))
(:no-border (setf std-flags (sl-no-border-flags std-flags)))
(:ticks-after (setf std-flags (sl-ticks-after-flags std-flags)))
(:ticks-before (setf std-flags (sl-ticks-before-flags std-flags)))
(:tooltip (setf std-flags (sl-tooltip-flags std-flags)))))
(values std-flags 0)))
-(defmethod initialize-instance :after ((self slider) &key parent &allow-other-keys)
- (create-control self parent "" gfs::+icc-win95-classes+))
+(defmethod initialize-instance :after ((self slider) &key outer-limits parent &allow-other-keys)
+ (create-control self parent "" gfs::+icc-win95-classes+)
+ (setf (gfg:background-color self)
+ (gfg:rgb->color (gfs::get-sys-color gfs::+color-btnface+)))
+ (if outer-limits
+ (setf (outer-limits self) outer-limits)))
+
+(defmethod inner-limits ((self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (let ((hwnd (gfs:handle self)))
+ (gfs:make-span :start (gfs::send-message hwnd gfs::+tbm-getselstart+ 0 0)
+ :end (gfs::send-message hwnd gfs::+tbm-getselend+ 0 0))))
+
+(defmethod (setf inner-limits) (limits (self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (unless (test-native-style self gfs::+tbs-enableselrange+)
+ (update-native-style self (logior (get-native-style self) gfs::+tbs-enableselrange+)))
+ (let ((start (gfs:span-start limits))
+ (end (gfs:span-end limits)))
+ (if (or (< start 0) (< end 0))
+ (error 'gfs:toolkit-error :detail "negative slider thumb limit"))
+ (gfs::send-message (gfs:handle self)
+ gfs::+tbm-setsel+
+ 1
+ (if (<= start end)
+ (gfs::make-lparam start end)
+ (gfs::make-lparam end start))))
+ limits)
+
+(defmethod outer-limits ((self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (let ((hwnd (gfs:handle self)))
+ (gfs:make-span :start (gfs::send-message hwnd gfs::+tbm-getrangemin+ 0 0)
+ :end (gfs::send-message hwnd gfs::+tbm-getrangemax+ 0 0))))
+
+(defmethod (setf outer-limits) (limits (self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (let ((start (gfs:span-start limits))
+ (end (gfs:span-end limits)))
+ (if (or (< start 0) (< end 0))
+ (error 'gfs:toolkit-error :detail "negative slider thumb limit"))
+ (gfs::send-message (gfs:handle self)
+ gfs::+tbm-setrange+
+ 1
+ (if (<= start end)
+ (gfs::make-lparam start end)
+ (gfs::make-lparam end start))))
+ limits)
+
+(defmethod page-increment ((self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (gfs::send-message (gfs:handle self) gfs::+tbm-getpagesize+ 0 0))
+
+(defmethod (setf page-increment) (amount (self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (if (< amount 0)
+ (error 'gfs:toolkit-error :detail "negative slider page increment"))
+ (if (< amount (step-increment self))
+ (warn 'gfs::toolkit-warning :detail "slider page increment less than step increment"))
+ (gfs::send-message (gfs:handle self) gfs::+tbm-setpagesize+ 0 amount)
+ amount)
+
+(defmethod preferred-size ((self slider) width-hint height-hint)
+ (let* ((b-width (* (border-width self) 2))
+ (limits (outer-limits self))
+ (numticks (- (gfs:span-end limits) (gfs:span-start limits)))
+ (size (gfs:make-size)))
+ (if (find :vertical (style-of self))
+ (setf (gfs:size-width size) (* (vertical-scrollbar-width) 2)
+ (gfs:size-height size) (+ (* 8 numticks) b-width))
+ (setf (gfs:size-width size) (+ (* 8 numticks) b-width)
+ (gfs:size-height size) (* (horizontal-scrollbar-height) 2)))
+ (if (>= width-hint 0)
+ (setf (gfs:size-width size) width-hint))
+ (if (>= height-hint 0)
+ (setf (gfs:size-height size) height-hint))
+ size))
+
+(defmethod step-increment ((self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (gfs::send-message (gfs:handle self) gfs::+tbm-getlinesize+ 0 0))
+
+(defmethod (setf step-increment) (amount (self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (if (< amount 0)
+ (error 'gfs:toolkit-error :detail "negative slider step increment"))
+ (if (> amount (page-increment self))
+ (warn 'gfs::toolkit-warning :detail "slider step increment greater than page increment"))
+ (gfs::send-message (gfs:handle self) gfs::+tbm-setlinesize+ 0 amount)
+ amount)
+
+(defmethod thumb-position ((self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (gfs::send-message (gfs:handle self) gfs::+tbm-getpos+ 0 0))
+
+(defmethod (setf thumb-position) (pos (self slider))
+ (if (gfs:disposed-p self)
+ (error 'gfs:disposed-error))
+ (gfs::send-message (gfs:handle self) gfs::+tbm-setpos+ 1 pos)
+ (gfs::send-message (gfs:handle self) gfs::+tbm-getpos+ 0 0)) ; might have been adjusted
Modified: trunk/src/uitoolkit/widgets/widget-classes.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/widget-classes.lisp (original)
+++ trunk/src/uitoolkit/widgets/widget-classes.lisp Sat Sep 30 12:43:30 2006
@@ -176,8 +176,8 @@
(defmacro define-control-class (classname system-classname callback-event-name &optional docstring mixins)
`(defclass ,classname `,(control ,@mixins)
- ((,(intern "CALLBACK-EVENT-NAME")
- :accessor ,(intern "CALLBACK-EVENT-NAME-OF")
+ ((callback-event-name
+ :accessor callback-event-name-of
:initform ,callback-event-name
:allocation :class)
(,(intern "SYSTEM-CLASSNAME")
Modified: trunk/src/uitoolkit/widgets/widget-generics.lisp
==============================================================================
--- trunk/src/uitoolkit/widgets/widget-generics.lisp (original)
+++ trunk/src/uitoolkit/widgets/widget-generics.lisp Sat Sep 30 12:43:30 2006
@@ -207,6 +207,12 @@
(defgeneric (setf image) (image self)
(:documentation "Sets self's image object."))
+(defgeneric inner-limits (self)
+ (:documentation "Returns the lowest and highest allowed positions of self's indicator."))
+
+(defgeneric (setf inner-limits) (span self)
+ (:documentation "Sets the lowest and highest allowed positions of self's indicator."))
+
(defgeneric item-count (self)
(:documentation "Returns the number of items contained within self."))
@@ -288,6 +294,12 @@
(defgeneric obtain-vertical-scrollbar (self)
(:documentation "Returns a scrollbar object if self has been configured to have one horizontally."))
+(defgeneric outer-limits (self)
+ (:documentation "Returns the lowest and highest possible positions of self's indicator."))
+
+(defgeneric (setf outer-limits) (span self)
+ (:documentation "Sets the lowest and highest possible positions of self's indicator."))
+
(defgeneric owner (self)
(:documentation "Returns self's owner (which is not necessarily the same as parent)."))
@@ -417,12 +429,6 @@
(defgeneric (setf text-modified-p) (modified self)
(:documentation "Sets self's modified flag."))
-(defgeneric thumb-limits (self)
- (:documentation "Returns the lowest and highest allowed positions of self's thumb component."))
-
-(defgeneric (setf thumb-limits) (span self)
- (:documentation "Sets the lowest and highest allowed positions of self's thumb component."))
-
(defgeneric thumb-position (self)
(:documentation "Returns the position of self's thumb component."))