internal WidgetDesignerBackend(Gtk.Container container, int designWidth, int designHeight)
{
ShadowType = ShadowType.None;
HscrollbarPolicy = PolicyType.Automatic;
VscrollbarPolicy = PolicyType.Automatic;
resizableFixed = new ResizableFixed();
resizableFixed.ObjectViewer = defaultObjectViewer;
wrapper = ObjectWrapper.Lookup(container);
Gtk.Window window = container as Gtk.Window;
if (window != null)
{
try {
metacityPreview = CreateMetacityPreview(window);
preview = metacityPreview;
if (wrapper != null)
{
wrapper.Notify += OnWindowPropChange;
}
} catch {
// If metacity is not available, use a regular box.
EventBox eventBox = new EventBox();
eventBox.Add(container);
preview = eventBox;
}
}
else
{
EventBox eventBox = new EventBox();
eventBox.Add(container);
preview = eventBox;
}
resizableFixed.Put(preview, container);
if (designWidth != -1)
{
preview.WidthRequest = designWidth;
preview.HeightRequest = designHeight;
resizableFixed.AllowResize = true;
}
else
{
resizableFixed.AllowResize = false;
}
preview.SizeAllocated += new Gtk.SizeAllocatedHandler(OnResized);
AddWithViewport(resizableFixed);
if (wrapper != null)
{
wrapper.AttachDesigner(resizableFixed);
}
resizableFixed.SelectionChanged += OnSelectionChanged;
}