Bug 697098: Do not scroll tab list on onTabsChanged() [r=mfinkle]

This commit is contained in:
Sriram Ramasubramanian 2011-11-17 15:31:08 -08:00
parent 6b5d8c0379
commit 4a85aab8a1
2 changed files with 49 additions and 27 deletions

View File

@ -122,7 +122,7 @@ abstract public class GeckoApp
private Vector<View> mPluginViews = new Vector<View>();
public interface OnTabsChangedListener {
public void onTabsChanged();
public void onTabsChanged(Tab tab);
}
private static ArrayList<OnTabsChangedListener> mTabsChangedListeners;
@ -574,7 +574,7 @@ abstract public class GeckoApp
if (Tabs.getInstance().isSelectedTab(tab))
mBrowserToolbar.setFavicon(tab.getFavicon());
onTabsChanged();
onTabsChanged(tab);
}
});
}
@ -657,13 +657,13 @@ abstract public class GeckoApp
mTabsChangedListeners.remove(listener);
}
public void onTabsChanged() {
public void onTabsChanged(Tab tab) {
if (mTabsChangedListeners == null)
return;
Iterator items = mTabsChangedListeners.iterator();
while (items.hasNext()) {
((OnTabsChangedListener) items.next()).onTabsChanged();
((OnTabsChangedListener) items.next()).onTabsChanged(tab);
}
}
@ -870,7 +870,7 @@ abstract public class GeckoApp
mMainHandler.post(new Runnable() {
public void run() {
if (selected && Tabs.getInstance().isSelectedTab(tab)) {
onTabsChanged();
onTabsChanged(tab);
mDoorHangerPopup.updatePopup();
}
mBrowserToolbar.updateTabs(Tabs.getInstance().getCount());
@ -885,7 +885,7 @@ abstract public class GeckoApp
mMainHandler.post(new Runnable() {
public void run() {
onTabsChanged();
onTabsChanged(tab);
mBrowserToolbar.updateTabs(Tabs.getInstance().getCount());
mDoorHangerPopup.updatePopup();
}
@ -924,7 +924,7 @@ abstract public class GeckoApp
mBrowserToolbar.setSecurityMode(tab.getSecurityMode());
mBrowserToolbar.setProgressVisibility(true);
}
onTabsChanged();
onTabsChanged(tab);
}
});
}
@ -940,7 +940,7 @@ abstract public class GeckoApp
public void run() {
if (Tabs.getInstance().isSelectedTab(tab))
mBrowserToolbar.setProgressVisibility(false);
onTabsChanged();
onTabsChanged(tab);
}
});
}
@ -970,7 +970,7 @@ abstract public class GeckoApp
public void run() {
if (Tabs.getInstance().isSelectedTab(tab))
mBrowserToolbar.setTitle(tab.getDisplayTitle());
onTabsChanged();
onTabsChanged(tab);
}
});
}
@ -986,7 +986,7 @@ abstract public class GeckoApp
public void run() {
if (Tabs.getInstance().isSelectedTab(tab))
mBrowserToolbar.setTitle(tab.getDisplayTitle());
onTabsChanged();
onTabsChanged(tab);
}
});
}

View File

@ -97,7 +97,7 @@ public class TabsTray extends Activity implements GeckoApp.OnTabsChangedListener
});
GeckoApp.registerOnTabsChangedListener(this);
onTabsChanged();
onTabsChanged(null);
}
@Override
@ -117,12 +117,27 @@ public class TabsTray extends Activity implements GeckoApp.OnTabsChangedListener
}
}
public void onTabsChanged() {
public void onTabsChanged(Tab tab) {
if (Tabs.getInstance().getCount() == 1)
finishActivity();
mTabsAdapter = new TabsAdapter(this, Tabs.getInstance().getTabsInOrder());
mList.setAdapter(mTabsAdapter);
if (mTabsAdapter == null) {
mTabsAdapter = new TabsAdapter(this, Tabs.getInstance().getTabsInOrder());
mList.setAdapter(mTabsAdapter);
return;
}
int position = mTabsAdapter.getPositionForTab(tab);
if (position == -1)
return;
if (Tabs.getInstance().getIndexOf(tab) == -1) {
mTabsAdapter = new TabsAdapter(this, Tabs.getInstance().getTabsInOrder());
mList.setAdapter(mTabsAdapter);
} else {
View view = mList.getChildAt(position - mList.getFirstVisiblePosition());
mTabsAdapter.assignValues(view, tab);
}
}
void finishActivity() {
@ -164,6 +179,25 @@ public class TabsTray extends Activity implements GeckoApp.OnTabsChangedListener
return mTabs.indexOf(tab);
}
public void assignValues(View view, Tab tab) {
if (view == null || tab == null)
return;
ImageView favicon = (ImageView) view.findViewById(R.id.favicon);
Drawable faviconImage = tab.getFavicon();
if (faviconImage != null)
favicon.setImageDrawable(faviconImage);
else
favicon.setImageResource(R.drawable.favicon);
TextView title = (TextView) view.findViewById(R.id.title);
title.setText(tab.getDisplayTitle());
if (Tabs.getInstance().isSelectedTab(tab))
title.setTypeface(title.getTypeface(), Typeface.BOLD);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
@ -180,19 +214,7 @@ public class TabsTray extends Activity implements GeckoApp.OnTabsChangedListener
}
});
ImageView favicon = (ImageView) convertView.findViewById(R.id.favicon);
Drawable faviconImage = tab.getFavicon();
if (faviconImage != null)
favicon.setImageDrawable(faviconImage);
else
favicon.setImageResource(R.drawable.favicon);
TextView title = (TextView) convertView.findViewById(R.id.title);
title.setText(tab.getDisplayTitle());
if (Tabs.getInstance().isSelectedTab(tab))
title.setTypeface(title.getTypeface(), Typeface.BOLD);
assignValues(convertView, tab);
ImageButton close = (ImageButton) convertView.findViewById(R.id.close);
if (mTabs.size() > 1) {