Class display_manager has a single instance @display_manager,
created at boot time. Its responsibilities are:
display objects (display_manager<-members,
display_manager<-member, display_manager<-primary, display_manager<-current).
On SDL3 the set is updated dynamically as monitors are added or removed.
->dispatch)
and flush damage to the screen (display_manager->redraw).
->system_colours_changed,
display_manager->colours_changed).
display objects, one for each
monitor. Gains and loses entries as monitors are hotplugged..g.
the symbol picker) to track the active window without polling.->system_colours_changed
after reloading the system colours and before redrawing. library(pce_theme)
uses this to select the theme that matches the new desktop settings.<-inspect_handlers
of each display.
display’s
constructor; applications normally do not invoke this.keep_alive is @on,
only frames whose frame<-keep_alive
is @on count.
<-inspect_handlers.
It applies to all displays.
->busy_cursor
to all displays, i.e., define a (temporary)
cursor for all frames of the application. Calls must be balanced: @nil
restores the cursor.sys_* and the platform specific
names) from the desktop settings. Colour
objects of these names change their value in place and the theme colours
are resolved again. Next, run display_manager<-system_colours_message
and redraw all windows if anything changed. xpce sends this message if
it is told that the desktop settings changed, e.g.,
if the user switches between light and dark mode. An application may
send it as well.
.g.,
after changing the value of theme colours.
Before redrawing, each frame and each graphical in these frames whose
class defines display_manager->colours_changed
is sent this message. The built-in classes do not define it. An
application defines it if it holds colours that do not follow the theme
by themselves, e.g., images that are drawn
using image->draw_in
or colours that are computed from other colours:
colours_changed(W) :->
"Draw the icons again in the new colours"::
send(W, paint_icons).
<-members:
chain holding every currently attached
display.->removed)
are only returned if there is no other display.<-primary
when no event has happened yet. Use this when you need to open a new
frame "where the user is". @display
is the function
?(@display_manager, current).|1.. -> display<-name
or display_manager<-number.