~fboucault/moovida/list_non_centered_movement

« back to all changes in this revision

Viewing changes to elisa-plugins/elisa/plugins/pigment/widgets/list.py

  • Committer: Florian Boucault
  • Date: 2008-12-18 18:49:37 UTC
  • Revision ID: kaleo@emilia-20081218184937-t1x6kiniqpc32oet
Do not force the selected item in list to be visually centered.

Show diffs side-by-side

added added

removed removed

Lines of Context:
116
116
        self._animated_selector = None
117
117
 
118
118
        self._last_drag_motion = 0
119
 
        self.visible_range_size = visible_range_size
120
119
 
121
120
        # signals support and mouse dragging support
122
121
        self._drag_zone = Image()
137
136
 
138
137
        self._update_style_properties(self._style.get_items())
139
138
 
 
139
        self.visible_range_size = visible_range_size
 
140
 
140
141
    # Public API
141
142
 
142
143
    def set_model(self, model):
416
417
    selected_item_index = property(selected_item_index__get, selected_item_index__set)
417
418
 
418
419
    def _selected_to_range_start(self, selected):
 
420
        start = self._animated.visible_range_start
419
421
        half_size = (self.visible_range_size-1.0)/2.0
420
422
        if selected <= half_size or len(self.model) <= self.visible_range_size:
421
423
            visible_range_start = 0.0
422
424
        elif selected >= len(self.model)-half_size:
423
425
            visible_range_start = len(self.model)-self.visible_range_size
424
426
        else:
425
 
            visible_range_start = selected-half_size
 
427
            # only moves the list if newly selected item is not visible
 
428
            if selected <= start+1:
 
429
                visible_range_start = selected-1
 
430
            elif selected >= start+self._visible_range_size-1:
 
431
                visible_range_start = selected-self._visible_range_size+2
 
432
            else:
 
433
                visible_range_start = start
 
434
 
426
435
        return visible_range_start
427
436
 
428
437
    def _range_start_to_selected(self, range_start):