Now i use this inside my custom class : Dynamic item sizes.
For that case , it dosen’t scroll to absolute bottom , sometimes it stop at
middle of the list.

/* ************************************************************************

   Copyright:

   License:

   Authors:

************************************************************************ */

/**
 * This is the main application class of your custom application "phwabe"
 *
 * @asset(phwabe/*)
 */
qx.Class.define('phwabe.utils.list.InfiniList', {
  extend: qx.ui.list.List,

  members: {
    __deferredCall: null,
    __scrollBottom: false,

    syncWidget: function(jobs) {
      if (jobs.scrollBottom) {
        this.scrollToY(1e99)
        console.log("bottom")
          // return
      }

      var firstRow = this._layer.getFirstRow();
      var rowSize = this._layer.getRowSizes().length;
      for (var row = firstRow; row < firstRow + rowSize; row++) {
        var widget = this._layer.getRenderedCellWidget(row, 0);
        if (widget !== null) {
          var height = widget.getSizeHint().height;
          this.getPane().getRowConfig().setItemSize(row, height);
        }
      }

    },

    _initLayer: function() {
      this.base(arguments);
      this._layer.addListener("updated", this._onUpdated, this);
    },

    _onUpdated: function(event) {
      if (this.__deferredCall === null) {
        this.__deferredCall = new qx.util.DeferredCall(function() {
          qx.ui.core.queue.Widget.add(this);
          console.log("Updated")

        }, this);
      }
      this.__deferredCall.schedule();
    }
  }
});

Can i get some advices? doing that _onUpdated also not working well.
​

On Wed, Jun 10, 2015 at 2:41 PM, Phyo Arkar <phyo.arkarl...@gmail.com>
wrote:

> Thanks a lot! it works!
>
> On Wed, Jun 3, 2015 at 11:08 PM, Mustafa Sak <mustafa....@1und1.de> wrote:
>
>>  First of all the list model will fire a change, which you should listen
>> to.
>>
>>
>>
>> But the time on changing the model is not the one, when the list widget
>> renders the change. So you have to wait till the queue has been flushed.
>>
>> The easiest way is to use the widget queue which will call a function
>> named syncWidget after the next render flush.
>>
>>
>>
>> So your code could be like this: http://tinyurl.com/pf33qvn
>>
>>
>>
>> *Mustafa Sak*
>>
>> Softwareentwickler
>> Mail Development
>>
>> 1&1 Mail & Media Development & Technology GmbH | Brauerstraße 48 | 76135
>> Karlsruhe | Germany
>> Phone: +49 721 91374-6977
>> E-Mail: mustafa....@1und1.de | Web: www.1und1.de
>>
>>
>>
>> *Von:* Phyo Arkar [mailto:phyo.arkarl...@gmail.com]
>> *Gesendet:* Dienstag, 2. Juni 2015 20:58
>> *An:* qooxdoo-devel
>> *Betreff:* [qooxdoo-devel] Change of qooxdoo virtual list's length (new
>> item insert)
>>
>>
>>
>> What event to listen for change of qx.ui.list.List's Length and that new
>> added list item is ready ?
>>
>>
>>
>> I know qx.type.Array() have change event , but if i listen there and
>> scroll to bottom , it never got to the bottom .
>>
>>
>>
>> This what i am trying to do , but want to scroll after that last row is
>> added.
>>
>>   this.chat_list.addListener("change", function() {
>>
>>     console.log('model_changed')
>>
>>     this.chat_list.scrollToY(1e99);
>>
>>   },this)
>>
>>  ​
>>
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>> qooxdoo-devel mailing list
>> qooxdoo-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
>>
>>
>
------------------------------------------------------------------------------
_______________________________________________
qooxdoo-devel mailing list
qooxdoo-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel

Reply via email to