logical DesignerMode :: UpdateOWGeometry ( )
{
logical   term         = NO;
QRect     new_geometry = parent_owidget->WidgetQ()->geometry();
QPoint    cell_pos;
BEGINSEQ
if ( !ctx_design || !control)                      ERROR

if ( ctx_design->LoadFieldAttribute(control, "allign.arrange") == PropertyHandle("AT_Absolut") )
{
  if ( geometry.width() != cw_geometry.width() )
    ctx_design->StoreFieldAttribute(control, "size.oszwdth", cw_geometry.width());
  if ( geometry.height() != cw_geometry.height() )
    ctx_design->StoreFieldAttribute(control, "size.oszhgth", cw_geometry.height());
  if ( geometry.x() != cw_geometry.x() )
    ctx_design->StoreFieldAttribute(control, "position.opsx", cw_geometry.x());
  if ( geometry.y() != cw_geometry.y() )
    ctx_design->StoreFieldAttribute(control, "position.opsy", cw_geometry.y());
}

if ( ctx_design->LoadFieldAttribute(control, "allign.arrange") == PropertyHandle("AT_Grid") )
{ 
  if ( geometry.width() != cw_geometry.width() )
    ctx_design->StoreFieldAttribute(control, "size.oszwdth", cw_geometry.width());
  if ( geometry.height() != cw_geometry.height() )
    ctx_design->StoreFieldAttribute(control, "size.oszhgth", cw_geometry.height());

  cell_pos = ((DesignerModeControl*)control->GetParent()->GetDesignMode())->CellizePosition(new_geometry.topLeft());
  
  QWidget     * parent;
  QGridLayout * layout;
  if (
       ( parent = (QWidget*)parent_owidget->WidgetQ()->parent() )
    && ( layout = (QGridLayout*)parent->layout() )
    && ( layout->inherits("QGridLayout") )
  ){
    layout->removeWidget(parent_owidget->WidgetQ());
    layout->addWidget(parent_owidget->WidgetQ(), cell_pos.y(), cell_pos.x());
  }   
  
  ctx_design->StoreFieldAttribute(control, "position.opsx", cell_pos.x());
  ctx_design->StoreFieldAttribute(control, "position.opsy", cell_pos.y());
  
  ((DesignerModeControl*)control->GetParent()->GetDesignMode())->Refresh();
}

RECOVER
  term = YES;
ENDSEQ
  geometry = new_geometry;
  return(term);
}