i91@nikhefh.hep.nl (Fons Rademakers) (02/06/88)
For a DIALOG guru:
I have the following problem with DIALOG and GMR3D. Every time when a popup
or help pops down my GMR3D area gets completely refreshed by DIALOG before
it enters my own refresh routine. I know that after an action given in a
popup, DIALOG should refresh the screen since the action could have changed
the screen. The screen refresh should not happen when a help popup pops down
or when no action is performed in a popup. DIALOG should just restore the
bitmap under the popup. The screen refresh is only in the GMR area, not in
the complete PAD. I also know that screen flicker occurs when dynamic
strings without SIZE attribute gets changed, but in that case the whole PAD
gets refreshed.
Does somebody know in what direction I have to look to solve this problem?
Why does DIALOG always think that an action has been perfromed, even when
leaving a help popup?
Using DIALOG v2.0 and SR9.7.
===== description of GPR task I use:
gmr_area := GPR :
APPL_CRSR_CTRL = true;
INIT_RTN = init_gmr_area;
ENTERED_WINDOW => <RETURN>;
LEFT_WINDOW => <RETURN>;
BUTTONS => <RETURN>;
LOCATOR => <CALL locator_input>;
KEYSTROKE => <CALL keystroke_input>;
KEYS = [m1, m1u, m2, m2u, m3, m3u, r, R];
END
==== and the techniques:
gmr_tech := GRAPHICS_AREA :
TASK = gmr_area;
OUTLINE = on;
BORDER_WIDTH = 2;
HELP_TEXT = "This is the area where the GMR "
&"file is displayed.";
SIZE = ((200 200) (500 500) (10000 10000)) pixels;
END
...
...
...
STD_WINDOW :
CONTENTS = everything;
[M1, F1] => <* select>;
[M3] => <* help>;
[M2] => <>;
[M1U, M2U, M3U] => <>;
END
==== My init_gmr_area routine:
SUBROUTINE init_gmr_area(task_id, event_id)
INTEGER*4 task_id, event_id
*
%INCLUDE '/sys/ins/gmr3d.ins.ftn'
*
COMMON /stream/ pad_stream
INTEGER*2 num_planes, bitmap_size(2), pad_stream
INTEGER*4 gmr_bitmap_d, status
*
EXTERNAL dm_refresh
*
bitmap_size(1) = 1280
bitmap_size(2) = 1024
num_planes = 8
CALL gmr_$init(gmr_$current_bitmap, pad_stream, bitmap_size,
# num_planes, status)
*
CALL dp_$gpr_inq_bitmap(task_id, gmr_bitmap_d, status)
CALL gpr_$set_bitmap(gmr_bitmap_d, status)
CALL gmr_$dm_refresh_entry(IADDR(dm_refresh), status)
*
RETURN
END
===================
Regards,
Fons Rademakers
--
Org: NIKHEF-H, National Institute for Nuclear and High-Energy Physics.
Mail: Kruislaan 409, P.O. Box 41882, 1009 DB Amsterdam, the Netherlands
Phone: (20)5925018 or 5925003 Telex: 10262 (hef nl)
UUCP: i91@nikhefh.hep.nl BITNET: nikhefh!i91@mcvax.bitnet