@@ -352,9 +352,32 @@ ui.area.codemirror.on('touchstart', function () {
352352 idle . onActive ( ) ;
353353} ) ;
354354
355+ var haveUnreadChanges = false ;
356+
357+ function setHaveUnreadChanges ( bool ) {
358+ if ( ! loaded ) return ;
359+ if ( bool && ( idle . isAway || Visibility . hidden ( ) ) ) {
360+ haveUnreadChanges = true ;
361+ } else if ( ! bool && ! idle . isAway && ! Visibility . hidden ( ) ) {
362+ haveUnreadChanges = false ;
363+ }
364+ }
365+
366+ function updateTitleReminder ( ) {
367+ if ( ! loaded ) return ;
368+ if ( haveUnreadChanges ) {
369+ document . title = '• ' + renderTitle ( ui . area . view ) ;
370+ } else {
371+ document . title = renderTitle ( ui . area . view ) ;
372+ }
373+ }
374+
355375function idleStateChange ( ) {
356376 emitUserStatus ( ) ;
357377 updateOnlineStatus ( ) ;
378+ if ( ! idle . isAway )
379+ setHaveUnreadChanges ( false ) ;
380+ updateTitleReminder ( ) ;
358381}
359382
360383function setNeedRefresh ( ) {
@@ -381,7 +404,9 @@ Visibility.change(function (e, state) {
381404 editor . focus ( ) ;
382405 wasFocus = false ;
383406 }
407+ setHaveUnreadChanges ( false ) ;
384408 }
409+ updateTitleReminder ( ) ;
385410} ) ;
386411
387412//when page ready
@@ -867,8 +892,8 @@ function generateScrollspy() {
867892 ui . toc . affix . hide ( ) ;
868893 ui . toc . toc . show ( ) ;
869894 }
870- $ ( document . body ) . scroll ( ) ;
871- ui . area . view . scroll ( ) ;
895+ // $(document.body).scroll();
896+ // ui.area.view.scroll();
872897}
873898
874899function updateScrollspy ( ) {
@@ -1674,24 +1699,19 @@ editor.on('beforeChange', function (cm, change) {
16741699 }
16751700 var isIgnoreEmitEvent = ( ignoreEmitEvents . indexOf ( change . origin ) != - 1 ) ;
16761701 if ( ! isIgnoreEmitEvent ) {
1677- switch ( permission ) {
1678- case "freely" :
1679- //na
1680- break ;
1681- case "editable" :
1682- if ( ! personalInfo . login ) {
1683- change . canceled = true ;
1684- $ ( '.signin-modal' ) . modal ( 'show' ) ;
1685- }
1686- break ;
1687- case "locked" :
1688- if ( personalInfo . userid != owner ) {
1689- change . canceled = true ;
1690- $ ( '.locked-modal' ) . modal ( 'show' ) ;
1691- }
1692- break ;
1702+ if ( ! havePermission ( ) ) {
1703+ change . canceled = true ;
1704+ $ ( '.signin-modal' ) . modal ( 'show' ) ;
1705+ }
1706+ } else {
1707+ if ( change . origin == 'ignoreHistory' ) {
1708+ setHaveUnreadChanges ( true ) ;
1709+ updateTitleReminder ( ) ;
16931710 }
16941711 }
1712+ if ( cmClient && ! socket . connected )
1713+ cmClient . editorAdapter . ignoreNextChange = true ;
1714+ } ) ;
16951715editor . on ( 'changes' , function ( cm , changes ) {
16961716 updateHistory ( ) ;
16971717 preventSyncScroll = true ;
@@ -1836,6 +1856,8 @@ function updateViewInner() {
18361856 isDirty = false ;
18371857 clearMap ( ) ;
18381858 //buildMap();
1859+ updateTitleReminder ( ) ;
1860+ }
18391861
18401862var updateHistoryDebounce = 600 ;
18411863
0 commit comments