adjust editor-cavas% refresh to clear border before calling on-paint
svn: r12198
This commit is contained in:
parent
cc12402a34
commit
51f5d193dd
|
@ -728,6 +728,7 @@
|
||||||
set-x-margin
|
set-x-margin
|
||||||
get-y-margin
|
get-y-margin
|
||||||
get-x-margin
|
get-x-margin
|
||||||
|
clear-margins
|
||||||
scroll-to
|
scroll-to
|
||||||
set-lazy-refresh
|
set-lazy-refresh
|
||||||
get-lazy-refresh
|
get-lazy-refresh
|
||||||
|
|
|
@ -14,12 +14,17 @@
|
||||||
|
|
||||||
(define (make-canvas-glue% %) ; implies make-window-glue%
|
(define (make-canvas-glue% %) ; implies make-window-glue%
|
||||||
(class100 (make-window-glue% %) (mred proxy . args)
|
(class100 (make-window-glue% %) (mred proxy . args)
|
||||||
(inherit get-mred get-top-level)
|
(inherit get-mred get-top-level clear-margins)
|
||||||
(public
|
(public
|
||||||
[do-on-char (lambda (e) (super on-char e))]
|
[do-on-char (lambda (e) (super on-char e))]
|
||||||
[do-on-event (lambda (e) (super on-event e))]
|
[do-on-event (lambda (e) (super on-event e))]
|
||||||
[do-on-scroll (lambda (e) (super on-scroll e))]
|
[do-on-scroll (lambda (e) (super on-scroll e))]
|
||||||
[do-on-paint (lambda () (super on-paint))])
|
[do-on-paint (lambda () (super on-paint))])
|
||||||
|
(private
|
||||||
|
[clear-and-on-paint
|
||||||
|
(lambda (mred)
|
||||||
|
(clear-margins)
|
||||||
|
(send mred on-paint))])
|
||||||
(override
|
(override
|
||||||
[on-char (entry-point
|
[on-char (entry-point
|
||||||
(lambda (e)
|
(lambda (e)
|
||||||
|
@ -54,9 +59,9 @@
|
||||||
;; Windows circumvented the event queue; delay
|
;; Windows circumvented the event queue; delay
|
||||||
(queue-window-callback
|
(queue-window-callback
|
||||||
this
|
this
|
||||||
(lambda () (send mred on-paint)))
|
(lambda () (clear-and-on-paint mred)))
|
||||||
(as-exit (lambda () (send mred on-paint))))
|
(as-exit (lambda () (clear-and-on-paint mred))))
|
||||||
(as-exit (lambda () (super on-paint)))))))])
|
(as-exit (lambda () (clear-margins) (super on-paint)))))))])
|
||||||
(sequence (apply super-init mred proxy args))))
|
(sequence (apply super-init mred proxy args))))
|
||||||
|
|
||||||
(define wx-canvas%
|
(define wx-canvas%
|
||||||
|
@ -66,6 +71,7 @@
|
||||||
(private-field
|
(private-field
|
||||||
[tabable? #f])
|
[tabable? #f])
|
||||||
(public
|
(public
|
||||||
|
[clear-margins (lambda () (void))]
|
||||||
[on-tab-in (lambda () (send (wx->mred this) on-tab-in))]
|
[on-tab-in (lambda () (send (wx->mred this) on-tab-in))]
|
||||||
[get-tab-focus (lambda () tabable?)]
|
[get-tab-focus (lambda () tabable?)]
|
||||||
[set-tab-focus (lambda (v) (set! tabable? v))])
|
[set-tab-focus (lambda (v) (set! tabable? v))])
|
||||||
|
|
|
@ -235,7 +235,15 @@ Enables or disables the caret in the @techlink{display}'s editor, if
|
||||||
(on-paint)
|
(on-paint)
|
||||||
void?]{
|
void?]{
|
||||||
|
|
||||||
Repaints the editor.
|
Repaints the editor, or clears the canvas if no editor is being
|
||||||
|
displayed.
|
||||||
|
|
||||||
|
This method is called after clearing the margin around the editor,
|
||||||
|
unless the canvas is created with the @scheme['transparent] style, but
|
||||||
|
the editor area is not automatically cleared. In other words,
|
||||||
|
@scheme[editor-canvas%] update by default is like @scheme[canvas%]
|
||||||
|
update with the @scheme['no-autoclear] style, except that the margin
|
||||||
|
around the editor area is always cleared.
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -671,12 +671,13 @@ void wxMediaCanvas::OnChar(wxKeyEvent *event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxMediaCanvas::OnPaint(void)
|
void wxMediaCanvas::ClearMargins(void)
|
||||||
{
|
{
|
||||||
need_refresh = FALSE;
|
/* This method is called by `on-paint' in `wx:canvas%'
|
||||||
|
before it calls the `on-paint' in `canvas%'. It's
|
||||||
|
essentially a compromise between autoclear mode and
|
||||||
|
no-autoclear mode. */
|
||||||
|
|
||||||
if (media) {
|
|
||||||
/* Clear the margins */
|
|
||||||
if (xmargin || ymargin) {
|
if (xmargin || ymargin) {
|
||||||
wxDC *adc;
|
wxDC *adc;
|
||||||
wxColor *bg;
|
wxColor *bg;
|
||||||
|
@ -706,7 +707,13 @@ void wxMediaCanvas::OnPaint(void)
|
||||||
adc->SetPen(op);
|
adc->SetPen(op);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxMediaCanvas::OnPaint(void)
|
||||||
|
{
|
||||||
|
need_refresh = FALSE;
|
||||||
|
|
||||||
|
if (media) {
|
||||||
if (!media->printing) {
|
if (!media->printing) {
|
||||||
double w, h, x, y;
|
double w, h, x, y;
|
||||||
GetView(&x, &y, &w, &h);
|
GetView(&x, &y, &w, &h);
|
||||||
|
|
|
@ -455,6 +455,8 @@ class wxMediaCanvas : public wxCanvas
|
||||||
|
|
||||||
virtual void Scroll(int x, int y, Bool refresh);
|
virtual void Scroll(int x, int y, Bool refresh);
|
||||||
|
|
||||||
|
void ClearMargins();
|
||||||
|
|
||||||
/* To block bad uses: */
|
/* To block bad uses: */
|
||||||
virtual void Scroll(int x, int y);
|
virtual void Scroll(int x, int y);
|
||||||
virtual void SetScrollbars(int h_pixels, int v_pixels, int x_len, int y_len,
|
virtual void SetScrollbars(int h_pixels, int v_pixels, int x_len, int y_len,
|
||||||
|
|
|
@ -241,6 +241,7 @@ typedef void *(*CAPOFunc)(void*);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class os_wxMediaCanvas : public wxMediaCanvas {
|
class os_wxMediaCanvas : public wxMediaCanvas {
|
||||||
public:
|
public:
|
||||||
|
@ -1114,6 +1115,26 @@ static Scheme_Object *os_wxMediaCanvasGetXMargin(int n, Scheme_Object *p[])
|
||||||
return scheme_make_integer(r);
|
return scheme_make_integer(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Scheme_Object *os_wxMediaCanvasClearMargins(int n, Scheme_Object *p[])
|
||||||
|
{
|
||||||
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
||||||
|
REMEMBER_VAR_STACK();
|
||||||
|
objscheme_check_valid(os_wxMediaCanvas_class, "clear-margins in editor-canvas%", n, p);
|
||||||
|
|
||||||
|
SETUP_VAR_STACK_REMEMBERED(1);
|
||||||
|
VAR_STACK_PUSH(0, p);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
WITH_VAR_STACK(((wxMediaCanvas *)((Scheme_Class_Object *)p[0])->primdata)->ClearMargins());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
READY_TO_RETURN;
|
||||||
|
return scheme_void;
|
||||||
|
}
|
||||||
|
|
||||||
static Scheme_Object *os_wxMediaCanvasScrollTo(int n, Scheme_Object *p[])
|
static Scheme_Object *os_wxMediaCanvasScrollTo(int n, Scheme_Object *p[])
|
||||||
{
|
{
|
||||||
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
WXS_USE_ARGUMENT(n) WXS_USE_ARGUMENT(p)
|
||||||
|
@ -1474,7 +1495,7 @@ void objscheme_setup_wxMediaCanvas(Scheme_Env *env)
|
||||||
|
|
||||||
wxREGGLOB(os_wxMediaCanvas_class);
|
wxREGGLOB(os_wxMediaCanvas_class);
|
||||||
|
|
||||||
os_wxMediaCanvas_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "editor-canvas%", "canvas%", (Scheme_Method_Prim *)os_wxMediaCanvas_ConstructScheme, 29));
|
os_wxMediaCanvas_class = WITH_VAR_STACK(objscheme_def_prim_class(env, "editor-canvas%", "canvas%", (Scheme_Method_Prim *)os_wxMediaCanvas_ConstructScheme, 30));
|
||||||
|
|
||||||
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "on-char" " method", (Scheme_Method_Prim *)os_wxMediaCanvasOnChar, 1, 1));
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "on-char" " method", (Scheme_Method_Prim *)os_wxMediaCanvasOnChar, 1, 1));
|
||||||
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "on-event" " method", (Scheme_Method_Prim *)os_wxMediaCanvasOnEvent, 1, 1));
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "on-event" " method", (Scheme_Method_Prim *)os_wxMediaCanvasOnEvent, 1, 1));
|
||||||
|
@ -1493,6 +1514,7 @@ void objscheme_setup_wxMediaCanvas(Scheme_Env *env)
|
||||||
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "set-x-margin" " method", (Scheme_Method_Prim *)os_wxMediaCanvasSetXMargin, 1, 1));
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "set-x-margin" " method", (Scheme_Method_Prim *)os_wxMediaCanvasSetXMargin, 1, 1));
|
||||||
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "get-y-margin" " method", (Scheme_Method_Prim *)os_wxMediaCanvasGetYMargin, 0, 0));
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "get-y-margin" " method", (Scheme_Method_Prim *)os_wxMediaCanvasGetYMargin, 0, 0));
|
||||||
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "get-x-margin" " method", (Scheme_Method_Prim *)os_wxMediaCanvasGetXMargin, 0, 0));
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "get-x-margin" " method", (Scheme_Method_Prim *)os_wxMediaCanvasGetXMargin, 0, 0));
|
||||||
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "clear-margins" " method", (Scheme_Method_Prim *)os_wxMediaCanvasClearMargins, 0, 0));
|
||||||
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "scroll-to" " method", (Scheme_Method_Prim *)os_wxMediaCanvasScrollTo, 5, 6));
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "scroll-to" " method", (Scheme_Method_Prim *)os_wxMediaCanvasScrollTo, 5, 6));
|
||||||
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "set-lazy-refresh" " method", (Scheme_Method_Prim *)os_wxMediaCanvasSetLazyRefresh, 1, 1));
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "set-lazy-refresh" " method", (Scheme_Method_Prim *)os_wxMediaCanvasSetLazyRefresh, 1, 1));
|
||||||
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "get-lazy-refresh" " method", (Scheme_Method_Prim *)os_wxMediaCanvasGetLazyRefresh, 0, 0));
|
WITH_VAR_STACK(scheme_add_method_w_arity(os_wxMediaCanvas_class, "get-lazy-refresh" " method", (Scheme_Method_Prim *)os_wxMediaCanvasGetLazyRefresh, 0, 0));
|
||||||
|
|
|
@ -88,6 +88,8 @@ typedef void *(*CAPOFunc)(void*);
|
||||||
|
|
||||||
@ "scroll-to" : bool ScrollTo(double,double,nndouble,nndouble, bool,SYM[bias]=0); : : : rFALSE
|
@ "scroll-to" : bool ScrollTo(double,double,nndouble,nndouble, bool,SYM[bias]=0); : : : rFALSE
|
||||||
|
|
||||||
|
@ "clear-margins" : void ClearMargins();
|
||||||
|
|
||||||
@ "get-x-margin" : nnint GetXMargin();
|
@ "get-x-margin" : nnint GetXMargin();
|
||||||
@ "get-y-margin" : nnint GetYMargin();
|
@ "get-y-margin" : nnint GetYMargin();
|
||||||
@ "set-x-margin" : void SetXMargin(nnint);
|
@ "set-x-margin" : void SetXMargin(nnint);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user