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;