diff options
author | Gian Mario Tagliaretti <gianmt@src.gnome.org> | 2008-06-22 18:28:44 +0000 |
---|---|---|
committer | Gian Mario Tagliaretti <gianmt@src.gnome.org> | 2008-06-22 18:28:44 +0000 |
commit | cc57280803853436a82ae4c925d22efe5223d6cd (patch) | |
tree | eaf8b5f7af65b94660de96bc102291e35f3627b9 | |
parent | b5158a00889ad8bd1f737936990d3fad6e59c7db (diff) | |
download | pygtk-cc57280803853436a82ae4c925d22efe5223d6cd.tar.gz |
wrap gtk.TreeView.get_tooltip_context and use it in the demo, fixes #530145
svn path=/trunk/; revision=2996
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | examples/pygtk-demo/demos/tooltip.py | 29 | ||||
-rw-r--r-- | gtk/gtktreeview.override | 38 |
3 files changed, 54 insertions, 21 deletions
@@ -1,3 +1,11 @@ +2008-06-22 Gian Mario Tagliaretti <gianmt@gnome.org> + + Bug 530145 – Missing method gtk.TreeView.get_tooltip_context + + * gtk/gtk.override: wrap gtk.TreeView.get_tooltip_context + + * examples/pygtk-demo/demos/tooltip.py: use the above method. + 2008-06-21 Paul Pogonyshev <pogonyshev@gmx.net> * gtk/gtk.override (_wrap_gtk_button_new): Fix 'use_underline' diff --git a/examples/pygtk-demo/demos/tooltip.py b/examples/pygtk-demo/demos/tooltip.py index fb7d0637..0ffe1e81 100644 --- a/examples/pygtk-demo/demos/tooltip.py +++ b/examples/pygtk-demo/demos/tooltip.py @@ -163,28 +163,15 @@ class TooltipDemo(gtk.Window): return True def query_tooltip_tree_view_cb(self, widget, x, y, keyboard_tip, tooltip): - model = widget.get_model() - - if keyboard_tip: - # Keyboard mode - ret = widget.get_cursor() - - if not ret[0]: - return False + if not widget.get_tooltip_context(x, y, keyboard_tip): + return False else: - coords = widget.convert_widget_to_bin_window_coords(x, y) - - # Mouse mode - tp = widget.get_path_at_pos(coords[0], coords[1]) - if not tp: - return False - - iter = model.get_iter(tp[0]) - value = model.get(iter, 0) - - tooltip.set_markup("<b>Path %s:</b> %s" %(tp[0][0], value[0])) - - return True + model, path, iter = widget.get_tooltip_context(x, y, keyboard_tip) + + value = model.get(iter, 0) + tooltip.set_markup("<b>Path %s:</b> %s" %(path[0], value[0])) + widget.set_tooltip_row(tooltip, path) + return True def query_tooltip_drawing_area_cb(self, widget, x, y, keyboard_tip, tooltip, data=None): diff --git a/gtk/gtktreeview.override b/gtk/gtktreeview.override index 3a549c87..5b3deb26 100644 --- a/gtk/gtktreeview.override +++ b/gtk/gtktreeview.override @@ -3446,3 +3446,41 @@ _wrap_gtk_tree_view_convert_bin_window_to_tree_coords(PyGObject *self, return Py_BuildValue("(ii)", tree_x, tree_y); } +%% +override gtk_tree_view_get_tooltip_context kwargs +static PyObject * +_wrap_gtk_tree_view_get_tooltip_context(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "x", "y", "keyboard_tip", NULL }; + + gboolean ret; + PyObject *py_ret = Py_None, *py_keyboard_tip = Py_True; + gint x, y; + GtkTreeModel *tree_model; + GtkTreePath *path; + GtkTreeIter iter; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "iiO:GtkTreeView.get_tooltip_context", + kwlist, &x, &y, &py_keyboard_tip)) + return NULL; + + ret = gtk_tree_view_get_tooltip_context(GTK_TREE_VIEW(self->obj), &x, &y, + PyObject_IsTrue(py_keyboard_tip), + &tree_model, + &path, &iter); + if (ret) { + py_ret = Py_BuildValue("(NNN)", + pygobject_new((GObject *)tree_model), + pygtk_tree_path_to_pyobject(path), + pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, + TRUE, TRUE)); + + gtk_tree_path_free(path); + return py_ret; + } + Py_INCREF(py_ret); + return py_ret; +} |