| | @@ -526,11 +526,11 @@ |
| 526 | 526 | |
| 527 | 527 | D.append(parentElem, btn); |
| 528 | 528 | btn.addEventListener('click', ()=>this.loadList(), false); |
| 529 | 529 | this.loadList(); |
| 530 | 530 | sel.addEventListener('change', (e)=>P.loadPage(e.target.value), false); |
| 531 | | - F.page.addEventListener('wiki-stash-updated', ()=>this.refreshStashMarks(), false); |
| 531 | + F.page.addEventListener('wiki-stash-updated', ()=>this.refreshStashMarks()); |
| 532 | 532 | delete this.init; |
| 533 | 533 | } |
| 534 | 534 | }; |
| 535 | 535 | |
| 536 | 536 | /** |
| | @@ -610,35 +610,42 @@ |
| 610 | 610 | E('#fossil-status-bar'), P.tabs.e.tabs |
| 611 | 611 | ); |
| 612 | 612 | P.tabs.addEventListener( |
| 613 | 613 | /* Set up some before-switch-to tab event tasks... */ |
| 614 | 614 | 'before-switch-to', function(ev){ |
| 615 | | - if(ev.detail===P.e.tabs.preview){ |
| 616 | | - P.baseHrefForWiki(); |
| 615 | + const theTab = ev.detail, btnSlot = theTab.querySelector('.save-button-slot'); |
| 616 | + if(btnSlot){ |
| 617 | + /* Several places make sense for a save button, so we'll |
| 618 | + move that button around to those tabs where it makes sense. */ |
| 619 | + btnSlot.parentNode.insertBefore( P.e.btnSave, btnSlot ); |
| 617 | 620 | P.updateSaveButton(); |
| 621 | + } |
| 622 | + if(theTab===P.e.tabs.preview){ |
| 623 | + P.baseHrefForWiki(); |
| 618 | 624 | if(P.previewNeedsUpdate && P.e.cbAutoPreview.checked) P.preview(); |
| 619 | | - }else if(ev.detail===P.e.tabs.diff){ |
| 625 | + }else if(theTab===P.e.tabs.diff){ |
| 620 | 626 | /* Work around a weird bug where the page gets wider than |
| 621 | 627 | the window when the diff tab is NOT in view and the |
| 622 | 628 | current SBS diff widget is wider than the window. When |
| 623 | 629 | the diff IS in view then CSS overflow magically reduces |
| 624 | 630 | the page size again. Weird. Maybe FF-specific. Note that |
| 625 | 631 | this weirdness happens even though P.e.diffTarget's parent |
| 626 | 632 | is hidden (and therefore P.e.diffTarget is also hidden). |
| 627 | 633 | */ |
| 628 | 634 | D.removeClass(P.e.diffTarget, 'hidden'); |
| 629 | | - }else if(ev.detail===P.e.tabs.misc){ |
| 635 | + }else if(theTab===P.e.tabs.misc){ |
| 630 | 636 | P.updateAttachmentView(); |
| 631 | 637 | } |
| 632 | 638 | } |
| 633 | 639 | ); |
| 634 | 640 | P.tabs.addEventListener( |
| 635 | 641 | /* Set up auto-refresh of the preview tab... */ |
| 636 | 642 | 'before-switch-from', function(ev){ |
| 637 | | - if(ev.detail===P.e.tabs.preview){ |
| 643 | + const theTab = ev.detail; |
| 644 | + if(theTab===P.e.tabs.preview){ |
| 638 | 645 | P.baseHrefRestore(); |
| 639 | | - }else if(ev.detail===P.e.tabs.diff){ |
| 646 | + }else if(theTab===P.e.tabs.diff){ |
| 640 | 647 | /* See notes in the before-switch-to handler. */ |
| 641 | 648 | D.addClass(P.e.diffTarget, 'hidden'); |
| 642 | 649 | } |
| 643 | 650 | } |
| 644 | 651 | ); |
| | @@ -767,11 +774,12 @@ |
| 767 | 774 | } |
| 768 | 775 | P.updatePageTitle(); |
| 769 | 776 | }, |
| 770 | 777 | false |
| 771 | 778 | ); |
| 772 | | - P.updatePageTitle().updateAttachmentView(); |
| 779 | + P.addEventListener('wiki-stash-updated', ()=>P.updateSaveButton()) |
| 780 | + .updatePageTitle().updateAttachmentView().updateSaveButton(); |
| 773 | 781 | }/*F.onPageLoad()*/); |
| 774 | 782 | |
| 775 | 783 | /** |
| 776 | 784 | Returns true if fossil.page.winfo is set, indicating that a page |
| 777 | 785 | has been loaded, else it reports an error and returns false. |
| 778 | 786 | |