require 'Context/Widget' require 'gtk2' module Context::Gtk class Widget < Context::Widget attr_reader :mainWindow, :expandHeight, :expandWidth attr_writer :mainWindow, :expandHeight, :expandWidth class << self # Redefine this in tests so that the widgets don't get displayed # on the screen. def inTests false end end def initialize(delegate) super(delegate) @mainWindow = nil # Packing hints for the container @expandHeight = false @expandWidth = false end def isAMainWindow @mainWindow = @delegate end def add(widget) if !widget.delegate.class.ancestors.include?(Gtk::Window) widget.mainWindow = @mainWindow @delegate.add(widget.delegate) if !Widget.inTests @delegate.show_all end else widget.isAMainWindow widget.delegate.set_transient_for(@mainWindow) if !Widget.inTests widget.delegate.show_all end end end def remove(widget) widget.mainWindow = nil if !widget.delegate.class.ancestors.include?(Gtk::Window) @delegate.remove(widget.delegate) if !Widget.inTests @delegate.show_all end end @delegate.grab_focus end end end