void UpdateWindowPos()
 {
     if (ContainerWindow != null)
     {
         if (!repositionRequested && width != 0 && height != 0)
         {
             repositionRequested = true;
             Application.Invoke(delegate {
                 var pos = frame.GetScreenCoordinates(new Gdk.Point(x, y));
                 DesktopService.PlaceWindow(ContainerWindow, pos.X, pos.Y, width, height);
                 repositionRequested = false;
             });
         }
     }
     else if (Parent != null)
     {
         Parent.QueueResize();
     }
 }