Fix for handling selectors with both width and height ranges (#13587)
This fix splits the used regular expressions into a more manageable
parts while fixing the handling of a case where both width-range and
height-range are defined. Also refactored some duplicate code into
a helper function.
Change-Id: I98295b8b0772b33a9985c0630e065eea2281d11d
Tooltips are no longer removed but moved outside the viewport,
which broke several tests.
Rewrite related tests using TB4 to be stable across all
browsers. There are differences between browsers (e.g.
position -999 or -1000, gwt-uid-* varied between browsers
etc.) so TB2 tests kept failing on some or all browsers.
Some tests have been renamed to better indicate what they
do.
Change-Id: Ia7276871f3c26d506dc70e1719347d020b547bfc
Removes double spacing from gridLayout which has empty rows or columns (#8855)
If row has no elements or only invisible elements, its size will be set to zero.
When row expand ratio was set, its size will be assigned to the value according to an expand ratio.
If component takes several rows of the gridLayout, these rows are considered as non-empty and won't be removed.
Change-Id: I10ddd22a6c9535b9978769bab7b496e11a28b78a
JsonCodec#encode() is a frequently called (hot) method. However in its
current form it is too long to be inlined.
This review reduces the length of the method from 454 bytes instructions
to 311 and optimises flow of common calls.
It however has a behaviour change for esoteric edge cases where the
order would matter. Like a custom collection which extends JSONArray and
implements collection. Previously it would have been handled by the
collection case, now its the JSONArray case. However it can be assumed
that the result: serialized to valid JSON is the same.
Change-Id: Ia552eec6322d0760581336b8b038fa03761c1d69
Fix for 'Aborting layout after 100 passess' (#13359)
'Aborting layout after 100 passes.' is caused by LayoutManager falling
into a loop on rounding fractional layout slot sizes up and down while
trying to fit layout's content in the space available. LayoutManager
round always up, that causes this issue with IE9+ and Chrome. This
change helps LayoutManager to round fractional sizes down for browsers
that causes problems if rounded up.
Browsers may fall into the loop especially with a zoom level other than
100%. Not with any zoom level though. Problematic zoom level varies by
browser. OrderedLayoutExpandTest uses zoom levels other than 100%. Test
for Chrome is the only one that really is able to reproduce error
without the fix. IE9/10 would too, but the zoom level could not be set
exactly to the required 95% for IE. Test works best as a regression test
for other browsers.
Change-Id: Ie840b074df5fed5ea3b15fba9a6fd372a5c0b76a
Fixed broken OSGi dependencies in vaadin-shared (#13852)
The package com.google.gwt.thirdparty.streamhtmlparser_0.0.10.vaadin1 exports version 0.0.10.vaadin1, not 0.1.5.r10-rebased
Change-Id: I25c2964636d27a172cc83d69c5c0db64155a6fc2
Fix for handling a breakpoint with 0 as the lower bound (#13588)
Added explicit isNaN checks to the results of parseInt function
because JavaScript would always convert 0 to false.
Change-Id: Ic904c321c0195ce50d9a498005459425b0c30d4c
The UI.pushConnection field is transient no longer; instead PushConnection
implementations must take care of serialization internally. When a session
is serialized, the client should notice that push was disconnected and
try to reconnect. A deserialized PushConnection should be in a "disconnected"
state so the eventual client reconnection works correctly.
Change-Id: I38cfc5a5cdbd3643311f830f8d580458dcd85c56
cleanConnectorMap is a hot method.
This change improves multiple code paths:
1) The global resource handler is no longer get()ed from the session for
each connector (was in two loops).
2) The ConnectorTracker is no longer get()ed from the UI for each
connector (was in one loop).
3) values() iterator for ClientConnectors replaces
keySet() iterator + get(key) call
4) use getUI() from ClientConnector instead manual method.
5) moved removeUnregisteredConnectors to ease inlining and readability.
Change-Id: I25ff5bc32d27d30ecd8d354922ec6e4a02b05921
getAllChildrenIterable() is invoked frequently, its used by
attach/detach and markAsDirty.
Because of the implementation detail in CombinedIterator, on every call
all iterators are checked. This means that on every component which has
multiple childs, each next() call will first check the extension
iterator, before advancing in the child iterator.
By having the childs first, this overhead is reduced. If no extensions
are existing (which is quite common) the iterator is not added at all.
(creating an iterator on an empty UnmodifiableCollection is waste of
time and memory)
Change-Id: I23bb91464052ad4282963ec4b5be8a52c6847d4f
Replace use of deprecated DOM.setStyleAttribute method (#13781)
This change is only a brain dead replacement of one specific method. In
some cases, there were some oddities in the surrounding code as well,
but these were left unresolved on purpose.
It should also be noted that DOM.setStyleAttribute just delegates to
element.getStyle().setProperty(), so any null references would have
caused problems already in the existing code.
Change-Id: I340122ac0767af9928076376f76e5bd2c5e19f9f
- When a mobile app goes online/offline we need to change
Heartbeat interval and restart the schedule.
- We also need to be notified about response status in
order to show the appropriate offline UI, etc.
Related with Issue #13250 and review https://dev.vaadin.com/review/#/c/3376/
Change-Id: I428501306e37fb8c2ee0ed6022a4c588bd8456db
Treat initial rendering and style changes separately. (#13444)
This fixes a regression caused by a previous patch, which led to empty comboboxes being initialised with a zero width.
Change-Id: I7e5ca0c563625c453e0e3006d91ed52ad227d6f0