Skip to content

Commit

Permalink
scrolling improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
alexrothenberg committed Dec 9, 2010
1 parent 138d7d2 commit 074679d
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 29 deletions.
63 changes: 44 additions & 19 deletions lib/code_buddy/public/javascripts/code_buddy.js
Expand Up @@ -12,22 +12,32 @@
this.set({
addresses: new Addresses(this.get('stack_frames'))
})
},

selectedAddress: function() {
var selected = this.get('selected')
return this.get('addresses').at(selected)
},
},

selectionChanged: function(x) {
this.updateSelectedAddress(x)
this.view.render()
},
setSelection: function(newSelected) {
if (newSelected >= 0 && newSelected < this.addresses().size()) {
this.set({ selected: newSelected })
}
},

addresses: function() {
return this.get('addresses')
},

selectedAddress: function() {
var selected = this.get('selected')
return this.addresses().at(selected)
},

updateSelectedAddress: function(x) {
this.get('addresses').at(x.previousAttributes().selected).view.render()
this.get('addresses').at(x.changedAttributes().selected).view.render()
}
selectionChanged: function(x) {
this.updateSelectedAddress(x)
this.view.render()
},

updateSelectedAddress: function(x) {
this.addresses().at(x.previousAttributes().selected).view.render()
this.addresses().at(x.changedAttributes().selected).view.render()
}


});
Expand Down Expand Up @@ -75,14 +85,29 @@
},

changeSelectionOnArrow: function(event) {
var selection = this.model.get('selected')
var origSelection = this.model.get('selected')
var newSelection = origSelection
if (event.keyCode == 38) {
this.model.set({selected: selection - 1})
return false
newSelection = origSelection - 1
} else if (event.keyCode == 40) {
this.model.set({selected: selection + 1})
return false
newSelection = origSelection + 1
}
if (newSelection != origSelection) {
this.model.setSelection(newSelection)

var offset = $(stack.selectedAddress().view.el).offset()
var windowHeight = $(window).height()
if (offset.top > windowHeight + $(window).scrollTop() - 10) {
// scroll down
$('html,body').animate({scrollTop: offset.top - 200}, 500);
} else if (offset.top < $(window).scrollTop() + 60) {
// scroll up
$('html,body').animate({scrollTop: offset.top - 500}, 500);
}
return false
} else {
return true
}
},

addOneAddress: function(address, index) {
Expand Down
2 changes: 1 addition & 1 deletion lib/code_buddy/public/stylesheets/code_buddy.css
Expand Up @@ -77,7 +77,7 @@ a {
#stack {
position: absolute;
right:0;
top:0;
top:60px;
z-index:1;
text-align: right;
font-size: 0.8em;
Expand Down
10 changes: 1 addition & 9 deletions lib/code_buddy/views/index.erb
Expand Up @@ -19,15 +19,7 @@
var stackView = new StackView({model: stack});
stackView.render();
$(document).keydown(function(event) {
var ret = stack.view.changeSelectionOnArrow(event)
var offset = $(stack.selectedAddress().view.el).offset().top
var windowHeight = $(window).height()
if (offset > windowHeight + $(window).scrollTop()) {
$('html,body').animate({scrollTop: offset - 200}, 500);
} else if (offset < $(window).scrollTop()) {
$('html,body').animate({scrollTop: offset - 500}, 500);
}
return ret;
return stack.view.changeSelectionOnArrow(event)
})
</script>
</body>
Expand Down

0 comments on commit 074679d

Please sign in to comment.