989b7b6db3012bab015ecce2cd7d39f447dac532
larrym
Wed Nov 10 11:48:02 2010 -0800
add makeImgTag to fix FireFox problem
diff --git src/hg/js/hgTracks.js src/hg/js/hgTracks.js
index 514da84..f119b2e 100644
--- src/hg/js/hgTracks.js
+++ src/hg/js/hgTracks.js
@@ -1693,30 +1693,38 @@
loadingId: loadingId,
cache: false
});
}
}
}
function makeContextMenuHitCallback(title)
{
// stub to avoid problem with a function closure w/n a loop
return function(menuItemClicked, menuObject) {
contextMenuHit(menuItemClicked, menuObject, title); return true;
};
}
+function makeImgTag(img)
+{
+// Return img tag with explicit dimensions for img (dimensions are currently hardwired).
+// This fixes the "weird shadow problem when first loading the right-click menu" seen in FireFox 3.X,
+// which occurred b/c FF doesn't actually fetch the image until the menu is being shown.
+ return "
";
+}
+
function loadContextMenu(img)
{
var menu = img.contextMenu(
function() {
var menu = [];
var selectedImg = "
";
var done = false;
if(selectedMenuItem && selectedMenuItem.id != null) {
var href = selectedMenuItem.href;
var isHgc, isGene;
if(href) {
isGene = href.match("hgGene");
isHgc = href.match("hgc");
}
var id = selectedMenuItem.id;
@@ -1754,47 +1762,47 @@
} else if(str == visibilityStrsOrder[rec.visibility]) {
str += selectedImg;
}
o[str] = {onclick: makeContextMenuHitCallback(visibilityStrs[i])};
menu.push(o);
}
}
done = true;
}
}
if(done) {
var o = new Object();
var any = false;
if(isGene || isHgc) {
var title = selectedMenuItem.title || "feature";
- o["
Zoom to " + title] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "selectWholeGene"); return true; }};
- o["
Get DNA for " + title] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "getDna"); return true; }};
- o["
Open details page in new window..."] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "openLink"); return true; }};
+ o[makeImgTag("magnify.png") + " Zoom to " + title] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "selectWholeGene"); return true; }};
+ o[makeImgTag("dnaIcon.png") + " Get DNA for " + title] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "getDna"); return true; }};
+ o[makeImgTag("bookOut.png") + " Open details page in new window..."] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "openLink"); return true; }};
any = true;
}
if(selectedMenuItem.title != undefined && selectedMenuItem.title.length > 0
&& selectedMenuItem.href != undefined && selectedMenuItem.href.length > 0) {
var str = selectedMenuItem.title;
if(str.indexOf("Click to alter ") == 0) {
; // suppress the "Click to alter..." items
} else if(selectedMenuItem.href.indexOf("cgi-bin/hgTracks") != -1) {
; // suppress menu items for hgTracks links (e.g. Next/Prev map items).
} else {
if(str.indexOf("display density") != -1)
- str = "
" + str;
+ str = makeImgTag("toggle.png") + str;
else
- str = "
Show details for " + str + "...";
+ str = makeImgTag("book.png") + " Show details for " + str + "...";
o[str] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "followLink"); return true; }};
any = true;
}
}
if(any) {
menu.push($.contextMenu.separator);
menu.push(o);
}
}
}
if(!done) {
if(false) {
// Currently toggling b/n drag-and-zoom mode and hilite mode is disabled b/c we don't know how to keep hilite mode from disabling the
// context menus.
var o = new Object();
@@ -1809,42 +1817,44 @@
// console.dir(ele);
str = "hilight mode";
if(!autoHideSetting) {
str += selectedImg;
}
o[str] = { onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "hilightMode"); return true; }};
menu.push(o);
}
//menu.push({"view image": {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "viewImg"); return true; }}});
}
if(selectedMenuItem && rec) {
// Add cfg options at just shy of end...
var o = new Object();
if(tdbIsLeaf(rec)) {
- o["
Configure "+rec.shortLabel] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "hgTrackUi_popup"); return true; }};
+ o[makeImgTag("wrench.png") + " Configure " + rec.shortLabel] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "hgTrackUi_popup"); return true; }};
if(rec.parentTrack != undefined)
- o["
Configure "+rec.parentLabel+" track set..."] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "hgTrackUi_follow"); return true; }};
+ o[makeImgTag("folderWrench.png") + " Configure " + rec.parentLabel + " track set..."] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "hgTrackUi_follow"); return true; }};
} else
- o["
Configure "+rec.shortLabel+" track set..."] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "hgTrackUi_follow"); return true; }};
+ o[makeImgTag("folderWrench.png") + " Configure " + rec.shortLabel + " track set..."] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "hgTrackUi_follow"); return true; }};
menu.push($.contextMenu.separator);
menu.push(o);
menu.push($.contextMenu.separator);
}
// Add view image at end
- menu.push({"
View image": {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "viewImg"); return true; }}});
+ var o = new Object();
+ o[makeImgTag("eye.png") + " View image"] = {onclick: function(menuItemClicked, menuObject) { contextMenuHit(menuItemClicked, menuObject, "viewImg"); return true; }};
+ menu.push(o);
return menu;
},
{
beforeShow: function(e) {
// console.log(mapItems[selectedMenuItem]);
selectedMenuItem = findMapItem(e);
// XXXX? blockUseMap = true;
},
hideCallback: function() {
// this doesn't work
warn("hideCallback");
}
});
return;