X-Git-Url: https://git.toastfreeware.priv.at/gregoa/zavai.git/blobdiff_plain/49a82b19f1bda0fafea3e4dc05eabf4b04229692..b58c46170a650521947aeaff5283a7a758ec75a1:/gtkfisheyelist/gtkfisheyelistview.vala diff --git a/gtkfisheyelist/gtkfisheyelistview.vala b/gtkfisheyelist/gtkfisheyelistview.vala index 0e90735..0029b33 100644 --- a/gtkfisheyelist/gtkfisheyelistview.vala +++ b/gtkfisheyelist/gtkfisheyelistview.vala @@ -102,16 +102,7 @@ public class FisheyeListView : Gtk.DrawingArea protected int focus_area_start; // Number of elements in full focus - protected int _focus_size; - public int focus_size { - get { return _focus_size; } - set { - _focus_size = value; - focus_info = new FocusInfo[_focus_size+2*steps+1]; - focus_layout_needed = true; - queue_draw(); - } - } + protected int focus_size; protected int _label_column; public int label_column { @@ -161,6 +152,10 @@ public class FisheyeListView : Gtk.DrawingArea add_events(Gdk.EventMask.POINTER_MOTION_MASK | Gdk.EventMask.BUTTON_PRESS_MASK | Gdk.EventMask.BUTTON_RELEASE_MASK); + + base_layout_needed = true; + focus_layout_needed = true; + queue_draw(); } public unowned Gtk.TreeModel get_model() { return model; } @@ -379,6 +374,11 @@ public class FisheyeListView : Gtk.DrawingArea renderers[renderers.length-1].get_size(this, null, null, null, null, out max_renderer_size); renderer_sizes[renderers.length-1] = max_renderer_size; + focus_size = allocation.height / (2*max_renderer_size); + if (focus_size % 2 == 1) + focus_size += 1; + focus_info = new FocusInfo[focus_size+2*steps+1]; + is_fisheye = label_count * max_renderer_size > allocation.height; if (is_fisheye) @@ -412,7 +412,7 @@ public class FisheyeListView : Gtk.DrawingArea protected int el_renderer(int idx) { - int fs2 = _focus_size/2; + int fs2 = focus_size/2; int renderer_idx; if (idx < cur_el) renderer_idx = idx - (cur_el-fs2-steps); @@ -435,7 +435,7 @@ public class FisheyeListView : Gtk.DrawingArea return; } - focus_first = cur_el - _focus_size/2 - steps; + focus_first = cur_el - focus_size/2 - steps; if (focus_first < 0) focus_first = 0; if (focus_first + focus_info.length > label_count) focus_first = label_count - focus_info.length;