changeset 4655:31205ec799ab

Revert commit #4653 (on hold) This patch is "on hold", as it depends on reverted code, and at least would need a non-automatic merge.
author Jorge Arellano Cid <jcid@dillo.org>
date Do, 04 Aug 2016 10:10:06 -0400
parents f4bea23749df
children 14733bcd4cfe
files dw/ooffloatsmgr.cc dw/ooffloatsmgr.hh dw/textblock.cc
diffstat 3 files changed, 13 insertions(+), 57 deletions(-) [+]
line wrap: on
line diff
--- a/dw/ooffloatsmgr.cc	So Jul 24 21:20:40 2016 +0200
+++ b/dw/ooffloatsmgr.cc	Do Aug 04 10:10:06 2016 -0400
@@ -652,8 +652,18 @@
       vloat->dirty = true;  
       DBG_OBJ_SET_BOOL_O (vloat->getWidget (), "<Float>.dirty", vloat->dirty);
 
-      updateGenerators (vloat);
-   
+      assert (vloat->getWidget()->getWidgetReference() != NULL);
+     
+      int first = getOOFAwareWidget(vloat->generator)->index;
+      DBG_OBJ_MSGF ("resize.oofm", 1, "updating from %d", first);
+      
+      tbInfos->get(first)->getOOFAwareWidget()
+         ->updateReference (vloat->getWidget()->getWidgetReference()
+                            ->parentRef);
+      
+      for (int i = first + 1; i < tbInfos->size(); i++)
+         tbInfos->get(i)->getOOFAwareWidget()->updateReference(0);
+
       floatRef = ref;
       DBG_OBJ_SET_NUM ("floatRef", floatRef);
    }
@@ -662,29 +672,6 @@
 }
 
 /**
- * \brief Update all generators which are affected by a given float.
- */
-void OOFFloatsMgr::updateGenerators (Float *vloat)
-{
-   DBG_OBJ_ENTER ("resize.oofm", 0, "updateGenerators", "#%d [%p]",
-                  vloat->index, vloat->getWidget ());
-                  
-   assert (vloat->getWidget()->getWidgetReference() != NULL);
-   
-   int first = getOOFAwareWidget(vloat->generator)->index;
-   DBG_OBJ_MSGF ("resize.oofm", 1, "updating from %d", first);
-   
-   tbInfos->get(first)->getOOFAwareWidget()
-      ->updateReference (vloat->getWidget()->getWidgetReference()
-                         ->parentRef);
-   
-   for (int i = first + 1; i < tbInfos->size(); i++)
-      tbInfos->get(i)->getOOFAwareWidget()->updateReference(0);
-
-   DBG_OBJ_LEAVE ();
-}
-   
-/**
  * `y` is given relative to the container.
  */
 int OOFFloatsMgr::findTBInfo (int y)
@@ -754,8 +741,6 @@
    getFloatsListsAndSide (vloat, &listSame, &listOpp, &side);
    ensureFloatSize (vloat);
 
-   int oldYReal = vloat->yReal;
-   
    // "yReal" may change due to collisions (see below).
    vloat->yReq = vloat->yReal = y;
 
@@ -820,25 +805,6 @@
    DBG_OBJ_MSGF ("resize.oofm", 1, "vloat->yReq = %d, vloat->yReal = %d",
                  vloat->yReq, vloat->yReal);
 
-   // In some cases, an explicit update is neccessary, as in this example:
-   //
-   // <body>
-   //     <div id="a">
-   //         <div id="b" style="float:left">main</div>
-   //     </div>
-   //     <div id="c" style="clear:both">x</div>
-   //     <div id="d">footer</div>
-   // </body>
-   //
-   // Without an explicit update, #c would keep an old value for extraSpace.top,
-   // based on the old value of vloat->yReal.
-   //
-   // Notice that #c would be updated otherwise, if it had at least one word
-   // content.
-
-   if (vloat->yReal != oldYReal)
-      updateGenerators (vloat);
-
    DBG_OBJ_LEAVE ();
 }
 
--- a/dw/ooffloatsmgr.hh	So Jul 24 21:20:40 2016 +0200
+++ b/dw/ooffloatsmgr.hh	Do Aug 04 10:10:06 2016 -0400
@@ -170,7 +170,6 @@
    void moveExternalIndices (lout::container::typed::Vector<Float> *list,
                              int oldStartIndex, int diff);
    Float *findFloatByWidget (core::Widget *widget);
-   void updateGenerators (Float *vloat);
    int findTBInfo (int y);
 
    void sizeAllocateFloats (Side side);
--- a/dw/textblock.cc	So Jul 24 21:20:40 2016 +0200
+++ b/dw/textblock.cc	Do Aug 04 10:10:06 2016 -0400
@@ -3044,17 +3044,8 @@
 
 void Textblock::updateReference (int ref)
 {
-   DBG_OBJ_ENTER ("resize", 0, "updateReference", "%d", ref);
-
-   // This method can be optimized: nothing must be done when (i) there are no
-   // words, *and* (ii) there is no float clearance. If the second is not the
-   // case, `queueResize` must still be called, since `extraSpace.top` may be
-   // changed.
-
-   if (!(words->size () == 0 && getStyle()->clear == core::style::CLEAR_NONE))
+   if (words->size () > 0)
       queueResize (ref, false);
-
-   DBG_OBJ_LEAVE ();
 }
 
 void Textblock::widgetRefSizeChanged (int externalIndex)