6871: workaround the gtk RTL bug in MultiTreeView
Best of both worlds brought to you by Nick and Vassilii :-) svn: r22886
This commit is contained in:
parent
22d4c1dd2c
commit
ee8bc7aaad
@ -507,11 +507,7 @@ class SimpleTable(object):
|
||||
#treeview.enable_model_drag_dest(DdTargets.all_targets(),
|
||||
# gtk.gdk.ACTION_DEFAULT)
|
||||
treeview.connect('drag_data_get', self.object_drag_data_get)
|
||||
if treeview.get_direction() == gtk.TEXT_DIR_RTL:
|
||||
# Don't show vertical grid lines with RTL (bug #6871)
|
||||
treeview.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_HORIZONTAL)
|
||||
else:
|
||||
treeview.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_BOTH)
|
||||
treeview.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_BOTH)
|
||||
#treeview.connect('row-activated', on_table_doubleclick, self)
|
||||
#treeview.connect('cursor-changed', on_table_click, self)
|
||||
treeview.connect('button-press-event', self.button_press_event)
|
||||
|
@ -42,6 +42,20 @@ class MultiTreeView(gtk.TreeView):
|
||||
self.connect('key_press_event', self.key_press_event)
|
||||
self.defer_select = False
|
||||
|
||||
__grid_lines_remove_vertical = {
|
||||
gtk.TREE_VIEW_GRID_LINES_NONE : gtk.TREE_VIEW_GRID_LINES_NONE,
|
||||
gtk.TREE_VIEW_GRID_LINES_HORIZONTAL : gtk.TREE_VIEW_GRID_LINES_HORIZONTAL,
|
||||
gtk.TREE_VIEW_GRID_LINES_VERTICAL : gtk.TREE_VIEW_GRID_LINES_NONE,
|
||||
gtk.TREE_VIEW_GRID_LINES_BOTH : gtk.TREE_VIEW_GRID_LINES_HORIZONTAL
|
||||
}
|
||||
def set_grid_lines(self, grid_lines):
|
||||
if self.get_direction() == gtk.TEXT_DIR_RTL:
|
||||
# Work around a gtk RTL bug, see #6871
|
||||
# On post-gramps34 branches should also check for gtk version <(3,8),
|
||||
# but this is always true here on gramps34!
|
||||
grid_lines = MultiTreeView.__grid_lines_remove_vertical[grid_lines]
|
||||
super(MultiTreeView, self).set_grid_lines(grid_lines)
|
||||
|
||||
def key_press_event(self, widget, event):
|
||||
if event.type == gtk.gdk.KEY_PRESS:
|
||||
if event.keyval == gtk.keysyms.Delete:
|
||||
@ -73,7 +87,7 @@ class MultiTreeView(gtk.TreeView):
|
||||
# re-enable selection
|
||||
self.get_selection().set_select_function(lambda *ignore: True)
|
||||
|
||||
target = self.get_path_at_pos(int(event.x), int(event.y))
|
||||
target = self.get_path_at_pos(int(event.x), int(event.y))
|
||||
if (self.defer_select and target
|
||||
and self.defer_select == target[0]
|
||||
and not (event.x==0 and event.y==0)): # certain drag and drop
|
||||
|
Loading…
Reference in New Issue
Block a user