You should instead use a Gtk::Image with a suitable icon name, such as “pan-down-symbolic“. When replacing Gtk::Arrow by an image, pay attention to the fact that Gtk::Arrow automatically flips between Gtk::ARROW_LEFT and Gtk::ARROW_RIGHT, depending on the text direction. To get the same effect with an image, use the icon names “pan-start-symbolic“ and “pan-end-symbolic“, which react to the text direction instead of “pan-left-symbolic“ and “pan-right-symbolic“ which don't.
This is very specialized, lacks features to make it useful and most importantly does not fit well into modern application design. There is no replacement.
Use render_background() instead. Note that clients still using this function are now responsible for calling this function again whenever the context is invalidated.
Use Gtk::Grid instead. It provides the same capabilities as Gtk::Table for arranging widgets in a rectangular grid, but does support height-for-width geometry management.
This API never really worked well and was mostly unused, now we have a more complete mechanism for composite children, see gtk_widget_class_set_template().
Application and widget code should not handle expose events directly; invalidation should use the Gtk::Widget API, and drawing should only happen inside signal_draw() implementations.
Modern composited windowing systems with pervasive transparency make it impossible to track the visibility of a window reliably, so this signal can not be guaranteed to provide useful information.