@@ -17,6 +17,7 @@ CloudPebble.Sidebar = (function() {
1717 if ( list_entry ) {
1818 list_entry . removeClass ( 'active' ) ;
1919 }
20+
2021 suspended_panes [ pane_id ] = pane ;
2122 pane . detach ( ) ;
2223 // Create a new empty one.
@@ -38,7 +39,10 @@ CloudPebble.Sidebar = (function() {
3839 } ;
3940
4041 var refocus_pane = function ( pane ) {
41- pane . find ( '*[autofocus]' ) . first ( ) . focus ( ) ;
42+ setTimeout ( function ( ) {
43+ var previous_focus = pane . data ( 'previous-focus' ) ;
44+ ( previous_focus || pane . find ( '*[autofocus]' ) . first ( ) . focus ( ) ) . focus ( ) ;
45+ } , 50 ) ;
4246 } ;
4347
4448 var restore_suspended_pane = function ( id ) {
@@ -57,7 +61,7 @@ CloudPebble.Sidebar = (function() {
5761 pane . data ( 'pane-restore-function' ) ( ) ;
5862 }
5963
60- refocus_pane ( pane ) ;
64+ refocus_pane ( $ ( '#main- pane' ) ) ;
6165
6266 return true ;
6367 }
@@ -66,7 +70,7 @@ CloudPebble.Sidebar = (function() {
6670
6771 var set_main_pane = function ( pane , options ) {
6872 $ ( '#main-pane' ) . append ( pane ) . data ( 'pane-id' , options . id ) ;
69- refocus_pane ( pane ) ;
73+ refocus_pane ( $ ( '#main- pane' ) ) ;
7074 if ( options . onRestore ) {
7175 $ ( '#main-pane' ) . data ( 'pane-restore-function' , options . onRestore ) ;
7276 }
@@ -176,6 +180,10 @@ CloudPebble.Sidebar = (function() {
176180 $ ( '#sidebar-pane-github > a' ) . click ( CloudPebble . GitHub . Show ) ;
177181 $ ( '#sidebar-pane-timeline > a' ) . click ( CloudPebble . Timeline . show ) ;
178182 create_initial_sections ( CloudPebble . ProjectInfo . type ) ;
183+
184+ $ ( '#pane-parent' ) . on ( 'focusin' , '#main-pane *' , _ . debounce ( function ( e ) {
185+ $ ( '#main-pane' ) . data ( 'previous-focus' , $ ( e . target ) ) ;
186+ } , 1 ) ) ;
179187 } ,
180188 SetPopover : function ( pane_id , title , content ) {
181189 $ ( '#sidebar-pane-' + pane_id ) . find ( 'a' ) . popover ( 'destroy' ) . popover ( {
0 commit comments