Make avatar image only visible after it has been successfully loaded

This avoids showing empty image frames while avatar images are
loading. Such an empty frame is especially annoying if there is no
avatar image for a user, since then the empty frame is shown and
disappears a moment later.

Change-Id: Ib431f5d1a2bada9de0207f6ac8cf655400cf35f7
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
Edwin Kempin
2013-04-25 11:15:18 +02:00
committed by Edwin Kempin
parent 920d7c7dd4
commit 8cf7801d9c

View File

@@ -17,8 +17,8 @@ package com.google.gerrit.client;
import com.google.gerrit.client.account.AccountInfo;
import com.google.gerrit.client.changes.Util;
import com.google.gerrit.client.rpc.RestApi;
import com.google.gwt.event.dom.client.ErrorEvent;
import com.google.gwt.event.dom.client.ErrorHandler;
import com.google.gwt.event.dom.client.LoadEvent;
import com.google.gwt.event.dom.client.LoadHandler;
import com.google.gwt.event.dom.client.MouseOutEvent;
import com.google.gwt.event.dom.client.MouseOutHandler;
import com.google.gwt.event.dom.client.MouseOverEvent;
@@ -59,18 +59,17 @@ public class AvatarImage extends Image {
public AvatarImage(AccountInfo account, int size, boolean addPopup) {
super(isGerritServer(account) ? getGerritServerAvatarUrl() :
url(account.email(), size));
setVisible(false);
if (size > 0) {
// If the provider does not resize the image, force it in the browser.
setSize(size + "px", size + "px");
}
addErrorHandler(new ErrorHandler() {
addLoadHandler(new LoadHandler() {
@Override
public void onError(ErrorEvent event) {
// We got a 404, don't bother showing the image. Either the user doesn't
// have an avatar or there is no avatar provider plugin installed.
setVisible(false);
public void onLoad(LoadEvent event) {
setVisible(true);
}
});