remove call to deprecated get_pointer()
This commit is contained in:
parent
37be46d474
commit
593f3c3b7a
7 changed files with 77 additions and 59 deletions
|
@ -651,9 +651,11 @@ class ConversationTextview(GObject.GObject):
|
||||||
GLib.idle_add(self.scroll_to_end)
|
GLib.idle_add(self.scroll_to_end)
|
||||||
|
|
||||||
def show_xep0184_warning_tooltip(self):
|
def show_xep0184_warning_tooltip(self):
|
||||||
pointer = self.tv.get_pointer()
|
w = self.tv.get_window(Gtk.TextWindowType.TEXT)
|
||||||
x, y = self.tv.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
pointer[1], pointer[2])
|
pointer = w.get_device_position(device)
|
||||||
|
x = pointer[1]
|
||||||
|
y = pointer[2]
|
||||||
tags = self.tv.get_iter_at_location(x, y).get_tags()
|
tags = self.tv.get_iter_at_location(x, y).get_tags()
|
||||||
tag_table = self.tv.get_buffer().get_tag_table()
|
tag_table = self.tv.get_buffer().get_tag_table()
|
||||||
xep0184_warning = False
|
xep0184_warning = False
|
||||||
|
@ -663,16 +665,18 @@ class ConversationTextview(GObject.GObject):
|
||||||
break
|
break
|
||||||
if xep0184_warning and not self.xep0184_warning_tooltip.win:
|
if xep0184_warning and not self.xep0184_warning_tooltip.win:
|
||||||
# check if the current pointer is still over the line
|
# check if the current pointer is still over the line
|
||||||
position = self.tv.get_window(Gtk.TextWindowType.TEXT).get_origin()[1:]
|
position = w.get_origin()[1:]
|
||||||
self.xep0184_warning_tooltip.show_tooltip(_('This icon indicates that '
|
self.xep0184_warning_tooltip.show_tooltip(_('This icon indicates '
|
||||||
'this message has not yet\nbeen received by the remote end. '
|
'that this message has not yet\nbeen received by the remote '
|
||||||
"If this icon stays\nfor a long time, it's likely the message got "
|
"end. If this icon stays\nfor a long time, it's likely the "
|
||||||
'lost.'), 8, position[1] + pointer[2])
|
'message got lost.'), 8, position[1] + y)
|
||||||
|
|
||||||
def show_line_tooltip(self):
|
def show_line_tooltip(self):
|
||||||
pointer = self.tv.get_pointer()
|
w = self.tv.get_window(Gtk.TextWindowType.TEXT)
|
||||||
x, y = self.tv.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
pointer[0], pointer[1])
|
pointer = w.get_device_position(device)
|
||||||
|
x = pointer[1]
|
||||||
|
y = pointer[2]
|
||||||
tags = self.tv.get_iter_at_location(x, y).get_tags()
|
tags = self.tv.get_iter_at_location(x, y).get_tags()
|
||||||
tag_table = self.tv.get_buffer().get_tag_table()
|
tag_table = self.tv.get_buffer().get_tag_table()
|
||||||
over_line = False
|
over_line = False
|
||||||
|
@ -682,10 +686,10 @@ class ConversationTextview(GObject.GObject):
|
||||||
break
|
break
|
||||||
if over_line and not self.line_tooltip.win:
|
if over_line and not self.line_tooltip.win:
|
||||||
# check if the current pointer is still over the line
|
# check if the current pointer is still over the line
|
||||||
position = self.tv.get_window(Gtk.TextWindowType.TEXT).get_origin()[1:]
|
position = w.get_origin()[1:]
|
||||||
self.line_tooltip.show_tooltip(_('Text below this line is what has '
|
self.line_tooltip.show_tooltip(_('Text below this line is what has '
|
||||||
'been said since the\nlast time you paid attention to this group '
|
'been said since the\nlast time you paid attention to this '
|
||||||
'chat'), 8, position[1] + pointer[1])
|
'group chat'), 8, position[1] + y)
|
||||||
|
|
||||||
def on_textview_draw(self, widget, ctx):
|
def on_textview_draw(self, widget, ctx):
|
||||||
return
|
return
|
||||||
|
@ -719,14 +723,14 @@ class ConversationTextview(GObject.GObject):
|
||||||
"""
|
"""
|
||||||
Change the cursor to a hand when we are over a mail or an url
|
Change the cursor to a hand when we are over a mail or an url
|
||||||
"""
|
"""
|
||||||
pointer_x, pointer_y = self.tv.get_window(Gtk.TextWindowType.TEXT).\
|
w = self.tv.get_window(Gtk.TextWindowType.TEXT)
|
||||||
get_pointer()[1:3]
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
|
pointer = w.get_device_position(device)
|
||||||
x, y = self.tv.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
|
x, y = self.tv.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
|
||||||
pointer_x, pointer_y)
|
pointer[1], pointer[2])
|
||||||
tags = self.tv.get_iter_at_location(x, y).get_tags()
|
tags = self.tv.get_iter_at_location(x, y).get_tags()
|
||||||
if self.change_cursor:
|
if self.change_cursor:
|
||||||
self.tv.get_window(Gtk.TextWindowType.TEXT).set_cursor(
|
w.set_cursor(Gdk.Cursor.new(Gdk.CursorType.XTERM))
|
||||||
Gdk.Cursor.new(Gdk.CursorType.XTERM))
|
|
||||||
self.change_cursor = False
|
self.change_cursor = False
|
||||||
tag_table = self.tv.get_buffer().get_tag_table()
|
tag_table = self.tv.get_buffer().get_tag_table()
|
||||||
over_line = False
|
over_line = False
|
||||||
|
@ -735,8 +739,7 @@ class ConversationTextview(GObject.GObject):
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
if tag in (tag_table.lookup('url'), tag_table.lookup('mail'), \
|
if tag in (tag_table.lookup('url'), tag_table.lookup('mail'), \
|
||||||
tag_table.lookup('xmpp'), tag_table.lookup('sth_at_sth')):
|
tag_table.lookup('xmpp'), tag_table.lookup('sth_at_sth')):
|
||||||
self.tv.get_window(Gtk.TextWindowType.TEXT).set_cursor(
|
w.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND2))
|
||||||
Gdk.Cursor.new(Gdk.CursorType.HAND2))
|
|
||||||
self.change_cursor = True
|
self.change_cursor = True
|
||||||
elif tag == tag_table.lookup('focus-out-line'):
|
elif tag == tag_table.lookup('focus-out-line'):
|
||||||
over_line = True
|
over_line = True
|
||||||
|
@ -754,14 +757,12 @@ class ConversationTextview(GObject.GObject):
|
||||||
if over_line and not self.line_tooltip.win:
|
if over_line and not self.line_tooltip.win:
|
||||||
self.line_tooltip.timeout = GLib.timeout_add(500,
|
self.line_tooltip.timeout = GLib.timeout_add(500,
|
||||||
self.show_line_tooltip)
|
self.show_line_tooltip)
|
||||||
self.tv.get_window(Gtk.TextWindowType.TEXT).set_cursor(
|
w.set_cursor(Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR))
|
||||||
Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR))
|
|
||||||
self.change_cursor = True
|
self.change_cursor = True
|
||||||
if xep0184_warning and not self.xep0184_warning_tooltip.win:
|
if xep0184_warning and not self.xep0184_warning_tooltip.win:
|
||||||
self.xep0184_warning_tooltip.timeout = GLib.timeout_add(500,
|
self.xep0184_warning_tooltip.timeout = GLib.timeout_add(500,
|
||||||
self.show_xep0184_warning_tooltip)
|
self.show_xep0184_warning_tooltip)
|
||||||
self.tv.get_window(Gtk.TextWindowType.TEXT).set_cursor(
|
w.set_cursor(Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR))
|
||||||
Gdk.Cursor.new(Gdk.CursorType.LEFT_PTR))
|
|
||||||
self.change_cursor = True
|
self.change_cursor = True
|
||||||
|
|
||||||
def clear(self, tv = None):
|
def clear(self, tv = None):
|
||||||
|
|
|
@ -1272,15 +1272,17 @@ class ToplevelAgentBrowser(AgentBrowser):
|
||||||
|
|
||||||
def _show_tooltip(self, state):
|
def _show_tooltip(self, state):
|
||||||
view = self.window.services_treeview
|
view = self.window.services_treeview
|
||||||
pointer = view.get_pointer()
|
w = view.get_window()
|
||||||
props = view.get_path_at_pos(pointer[0], pointer[1])
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
|
pointer = w.get_device_position(device)
|
||||||
|
props = view.get_path_at_pos(pointer[1], pointer[2])
|
||||||
# check if the current pointer is at the same path
|
# check if the current pointer is at the same path
|
||||||
# as it was before setting the timeout
|
# as it was before setting the timeout
|
||||||
if props and self.tooltip.id == props[0]:
|
if props and self.tooltip.id == props[0]:
|
||||||
# bounding rectangle of coordinates for the cell within the treeview
|
# bounding rectangle of coordinates for the cell within the treeview
|
||||||
rect = view.get_cell_area(props[0], props[1])
|
rect = view.get_cell_area(props[0], props[1])
|
||||||
# position of the treeview on the screen
|
# position of the treeview on the screen
|
||||||
position = view.get_window().get_origin()[1:]
|
position = w.get_origin()[1:]
|
||||||
self.tooltip.show_tooltip(state, rect.height, position[1] + rect.y)
|
self.tooltip.show_tooltip(state, rect.height, position[1] + rect.y)
|
||||||
else:
|
else:
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
|
|
|
@ -753,9 +753,11 @@ class FileTransfersWindow:
|
||||||
self.window.show_all()
|
self.window.show_all()
|
||||||
|
|
||||||
def on_transfers_list_motion_notify_event(self, widget, event):
|
def on_transfers_list_motion_notify_event(self, widget, event):
|
||||||
pointer = self.tree.get_pointer()
|
w = self.tree.get_window()
|
||||||
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
|
pointer = w.get_device_position(device)
|
||||||
props = widget.get_path_at_pos(int(event.x), int(event.y))
|
props = widget.get_path_at_pos(int(event.x), int(event.y))
|
||||||
self.height_diff = pointer[1] - int(event.y)
|
self.height_diff = pointer[2] - int(event.y)
|
||||||
if self.tooltip.timeout > 0:
|
if self.tooltip.timeout > 0:
|
||||||
if not props or self.tooltip.id != props[0]:
|
if not props or self.tooltip.id != props[0]:
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
|
@ -780,8 +782,11 @@ class FileTransfersWindow:
|
||||||
self.height_diff = int(event.y)
|
self.height_diff = int(event.y)
|
||||||
elif self.height_diff is 0:
|
elif self.height_diff is 0:
|
||||||
return
|
return
|
||||||
pointer = self.tree.get_pointer()
|
w = self.tree.get_window()
|
||||||
props = self.tree.get_path_at_pos(pointer[0], pointer[1] - self.height_diff)
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
|
pointer = w.get_device_position(device)
|
||||||
|
props = self.tree.get_path_at_pos(pointer[1],
|
||||||
|
pointer[2] - self.height_diff)
|
||||||
if self.tooltip.timeout > 0:
|
if self.tooltip.timeout > 0:
|
||||||
if not props or self.tooltip.id == props[0]:
|
if not props or self.tooltip.id == props[0]:
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
|
@ -953,9 +958,11 @@ class FileTransfersWindow:
|
||||||
if self.height_diff == 0:
|
if self.height_diff == 0:
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
return
|
return
|
||||||
pointer = self.tree.get_pointer()
|
w = self.tree.get_window()
|
||||||
props = self.tree.get_path_at_pos(pointer[0],
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
pointer[1] - self.height_diff)
|
pointer = w.get_device_position(device)
|
||||||
|
props = self.tree.get_path_at_pos(pointer[1],
|
||||||
|
pointer[2] - self.height_diff)
|
||||||
# check if the current pointer is at the same path
|
# check if the current pointer is at the same path
|
||||||
# as it was before setting the timeout
|
# as it was before setting the timeout
|
||||||
if props and self.tooltip.id == props[0]:
|
if props and self.tooltip.id == props[0]:
|
||||||
|
|
|
@ -2685,12 +2685,15 @@ class GroupchatControl(ChatControlBase):
|
||||||
# control has been destroyed since tooltip was requested
|
# control has been destroyed since tooltip was requested
|
||||||
return
|
return
|
||||||
pointer = self.list_treeview.get_pointer()
|
pointer = self.list_treeview.get_pointer()
|
||||||
props = self.list_treeview.get_path_at_pos(pointer[0], pointer[1])
|
w = self.list_treeview.get_window()
|
||||||
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
|
pointer = w.get_device_position(device)
|
||||||
|
props = self.list_treeview.get_path_at_pos(pointer[1], pointer[2])
|
||||||
# check if the current pointer is at the same path
|
# check if the current pointer is at the same path
|
||||||
# as it was before setting the timeout
|
# as it was before setting the timeout
|
||||||
if props and self.tooltip.id == props[0]:
|
if props and self.tooltip.id == props[0]:
|
||||||
rect = self.list_treeview.get_cell_area(props[0], props[1])
|
rect = self.list_treeview.get_cell_area(props[0], props[1])
|
||||||
position = self.list_treeview.get_window().get_origin()[1:]
|
position = w.get_origin()[1:]
|
||||||
self.tooltip.show_tooltip(contact, rect.height,
|
self.tooltip.show_tooltip(contact, rect.height,
|
||||||
position[1] + rect.y)
|
position[1] + rect.y)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -867,8 +867,11 @@ class HtmlTextView(Gtk.TextView):
|
||||||
def show_tooltip(self, tag):
|
def show_tooltip(self, tag):
|
||||||
if not self.tooltip.win:
|
if not self.tooltip.win:
|
||||||
# check if the current pointer is still over the line
|
# check if the current pointer is still over the line
|
||||||
x, y = self.get_window(Gtk.TextWindowType.TEXT).get_pointer()[1:3]
|
w = self.get_window(Gtk.TextWindowType.TEXT)
|
||||||
x, y = self.window_to_buffer_coords(Gtk.TextWindowType.TEXT, x, y)
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
|
pointer = w.get_device_position(device)
|
||||||
|
x = pointer[1]
|
||||||
|
y = pointer[2]
|
||||||
tags = self.get_iter_at_location(x, y).get_tags()
|
tags = self.get_iter_at_location(x, y).get_tags()
|
||||||
is_over_anchor = False
|
is_over_anchor = False
|
||||||
for tag_ in tags:
|
for tag_ in tags:
|
||||||
|
@ -879,13 +882,15 @@ class HtmlTextView(Gtk.TextView):
|
||||||
return
|
return
|
||||||
text = getattr(tag, 'title', False)
|
text = getattr(tag, 'title', False)
|
||||||
if text:
|
if text:
|
||||||
pointer = self.get_pointer()
|
position = w.get_origin()[1:]
|
||||||
position = self.get_window(Gtk.TextWindowType.TEXT).get_origin()[1:]
|
self.tooltip.show_tooltip(text, 8, position[1] + y)
|
||||||
self.tooltip.show_tooltip(text, 8, position[1] + pointer[2])
|
|
||||||
|
|
||||||
def __motion_notify_event(self, widget, event):
|
def __motion_notify_event(self, widget, event):
|
||||||
x, y = widget.get_window(Gtk.TextWindowType.TEXT).get_pointer()[1:3]
|
w = widget.get_window(Gtk.TextWindowType.TEXT)
|
||||||
x, y = widget.window_to_buffer_coords(Gtk.TextWindowType.TEXT, x, y)
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
|
pointer = w.get_device_position(device)
|
||||||
|
x = pointer[1]
|
||||||
|
y = pointer[2]
|
||||||
tags = widget.get_iter_at_location(x, y).get_tags()
|
tags = widget.get_iter_at_location(x, y).get_tags()
|
||||||
anchor_tags = [tag for tag in tags if getattr(tag, 'is_anchor', False)]
|
anchor_tags = [tag for tag in tags if getattr(tag, 'is_anchor', False)]
|
||||||
if self.tooltip.timeout != 0:
|
if self.tooltip.timeout != 0:
|
||||||
|
@ -893,14 +898,12 @@ class HtmlTextView(Gtk.TextView):
|
||||||
if not anchor_tags:
|
if not anchor_tags:
|
||||||
self.tooltip.hide_tooltip()
|
self.tooltip.hide_tooltip()
|
||||||
if not self._changed_cursor and anchor_tags:
|
if not self._changed_cursor and anchor_tags:
|
||||||
window = widget.get_window(Gtk.TextWindowType.TEXT)
|
w.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND2))
|
||||||
window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND2))
|
|
||||||
self._changed_cursor = True
|
self._changed_cursor = True
|
||||||
self.tooltip.timeout = GLib.timeout_add(500, self.show_tooltip,
|
self.tooltip.timeout = GLib.timeout_add(500, self.show_tooltip,
|
||||||
anchor_tags[0])
|
anchor_tags[0])
|
||||||
elif self._changed_cursor and not anchor_tags:
|
elif self._changed_cursor and not anchor_tags:
|
||||||
window = widget.get_window(Gtk.TextWindowType.TEXT)
|
w.set_cursor(Gdk.Cursor.new(Gdk.CursorType.XTERM))
|
||||||
window.set_cursor(Gdk.Cursor.new(Gdk.CursorType.XTERM))
|
|
||||||
self._changed_cursor = False
|
self._changed_cursor = False
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -995,21 +998,20 @@ if __name__ == '__main__':
|
||||||
Change the cursor to a hand when we are over a mail or an url
|
Change the cursor to a hand when we are over a mail or an url
|
||||||
"""
|
"""
|
||||||
global change_cursor
|
global change_cursor
|
||||||
pointer_x, pointer_y = htmlview.tv.get_window(Gtk.TextWindowType.TEXT).\
|
w = htmlview.tv.get_window(Gtk.TextWindowType.TEXT)
|
||||||
get_pointer()[1:3]
|
device = w.get_display().get_device_manager().get_client_pointer()
|
||||||
x, y = htmlview.tv.window_to_buffer_coords(Gtk.TextWindowType.TEXT,
|
pointer = w.get_device_position(device)
|
||||||
pointer_x, pointer_y)
|
x = pointer[1]
|
||||||
|
y = pointer[2]
|
||||||
tags = htmlview.tv.get_iter_at_location(x, y).get_tags()
|
tags = htmlview.tv.get_iter_at_location(x, y).get_tags()
|
||||||
if change_cursor:
|
if change_cursor:
|
||||||
htmlview.tv.get_window(Gtk.TextWindowType.TEXT).set_cursor(
|
w.set_cursor(Gdk.Cursor.new(Gdk.CursorType.XTERM))
|
||||||
Gdk.Cursor.new(Gdk.CursorType.XTERM))
|
|
||||||
change_cursor = None
|
change_cursor = None
|
||||||
tag_table = htmlview.tv.get_buffer().get_tag_table()
|
tag_table = htmlview.tv.get_buffer().get_tag_table()
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
try:
|
try:
|
||||||
if tag.is_anchor:
|
if tag.is_anchor:
|
||||||
htmlview.tv.get_window(Gtk.TextWindowType.TEXT).set_cursor(
|
w.set_cursor(Gdk.Cursor.new(Gdk.CursorType.HAND2))
|
||||||
Gdk.Cursor.new(Gdk.CursorType.HAND2))
|
|
||||||
change_cursor = tag
|
change_cursor = tag
|
||||||
elif tag == tag_table.lookup('focus-out-line'):
|
elif tag == tag_table.lookup('focus-out-line'):
|
||||||
over_line = True
|
over_line = True
|
||||||
|
|
|
@ -2049,8 +2049,10 @@ class RosterWindow:
|
||||||
vb.set_no_show_all(True)
|
vb.set_no_show_all(True)
|
||||||
|
|
||||||
def show_tooltip(self, contact):
|
def show_tooltip(self, contact):
|
||||||
pointer = self.tree.get_pointer()
|
device = self.tree.get_window().get_display().get_device_manager().\
|
||||||
props = self.tree.get_path_at_pos(pointer[0], pointer[1])
|
get_client_pointer()
|
||||||
|
pointer = self.tree.get_window().get_device_position(device)
|
||||||
|
props = self.tree.get_path_at_pos(pointer[1], pointer[2])
|
||||||
# check if the current pointer is at the same path
|
# check if the current pointer is at the same path
|
||||||
# as it was before setting the timeout
|
# as it was before setting the timeout
|
||||||
if props and self.tooltip.id == props[0]:
|
if props and self.tooltip.id == props[0]:
|
||||||
|
|
|
@ -142,7 +142,8 @@ class BaseTooltip:
|
||||||
self.populate(data)
|
self.populate(data)
|
||||||
|
|
||||||
# get the X position of mouse pointer on the screen
|
# get the X position of mouse pointer on the screen
|
||||||
pointer_x = self.screen.get_display().get_pointer()[1]
|
pointer_x = self.screen.get_display().get_device_manager().\
|
||||||
|
get_client_pointer().get_position()[1]
|
||||||
|
|
||||||
# get the prefered X position of the tooltip on the screen in case this position is >
|
# get the prefered X position of the tooltip on the screen in case this position is >
|
||||||
# than the height of the screen, tooltip will be shown above the widget
|
# than the height of the screen, tooltip will be shown above the widget
|
||||||
|
|
Loading…
Add table
Reference in a new issue