/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ const St = imports.gi.St; const Gettext_gtk20 = imports.gettext.domain('gtk20'); const Tweener = imports.ui.tweener; const Format = imports.misc.format; // "monkey patch" in some varargs ClutterContainer methods; we need // to do this per-container class since there is no representation // of interfaces in Javascript function _patchContainerClass(containerClass) { // This one is a straightforward mapping of the C method containerClass.prototype.child_set = function(actor, props) { let meta = this.get_child_meta(actor); for (prop in props) meta[prop] = props[prop]; }; // clutter_container_add() actually is a an add-many-actors // method. We conveniently, but somewhat dubiously, take the // this opportunity to make it do something more useful. containerClass.prototype.add = function(actor, props) { this.add_actor(actor); if (props) this.child_set(actor, props); }; } _patchContainerClass(St.BoxLayout); _patchContainerClass(St.Table); function init() { Tweener.init(); String.prototype.format = Format.format; // Set the default direction for St widgets (this needs to be done before any use of St) if (Gettext_gtk20.gettext("default:LTR") == "default:RTL") { St.Widget.set_default_direction(St.TextDirection.RTL); } }