On 05/03/2017 10:50 AM, Pavel Grunt wrote: > On Wed, 2017-05-03 at 10:31 -0400, Cole Robinson wrote: >> On 05/03/2017 05:09 AM, Pavel Grunt wrote: >>> It relies on the presence of X cursor fonts in the system. Use >>> recommended gdk_cursor_new_from_name and use cursor names that >>> works >>> on different backends. >>> >>> Deprecated since Gdk 3.16 >>> >>> https://bugzilla.redhat.com/show_bug.cgi?id=1442612 >>> --- >>> virtManager/asyncjob.py | 5 +++-- >>> virtManager/baseclass.py | 12 +++++++----- >>> 2 files changed, 10 insertions(+), 7 deletions(-) >>> >>> diff --git a/virtManager/asyncjob.py b/virtManager/asyncjob.py >>> index 0fd3beed..cbc872c4 100644 >>> --- a/virtManager/asyncjob.py >>> +++ b/virtManager/asyncjob.py >>> @@ -286,8 +286,9 @@ class vmmAsyncJob(vmmGObjectUI): >>> self.topwin.present() >>> >>> if not self.cancel_cb and self.show_progress: >>> - self.topwin.get_window().set_cursor( >>> - Gdk.Cursor.new(Gdk.CursorType.WATCH)) >>> + gdk_window = self.topwin.get_window() >>> + gdk_window.set_cursor( >>> + Gdk.Cursor.new_from_name(gdk_window.get_display() >>> , "progress")) >>> self._bg_thread.start() >>> >>> >>> diff --git a/virtManager/baseclass.py b/virtManager/baseclass.py >>> index 7f3b7592..73b87fa7 100644 >>> --- a/virtManager/baseclass.py >>> +++ b/virtManager/baseclass.py >>> @@ -241,15 +241,17 @@ class vmmGObjectUI(vmmGObject): >>> >>> def set_finish_cursor(self): >>> self.topwin.set_sensitive(False) >>> - cursor = Gdk.Cursor.new(Gdk.CursorType.WATCH) >>> - self.topwin.get_window().set_cursor(cursor> >>> + gdk_window = self.topwin.get_window() >>> + cursor = >>> Gdk.Cursor.new_from_name(gdk_window.get_display(), "progress") >>> + gdk_window.set_cursor(cursor) >>> >>> def reset_finish_cursor(self, topwin=None): >>> if not topwin: >>> topwin = self.topwin >>> >>> topwin.set_sensitive(True) >>> - if not topwin.get_window(): >>> + gdk_window = topwin.get_window() >>> + if not gdk_window: >>> return >>> - cursor = Gdk.Cursor.new(Gdk.CursorType.TOP_LEFT_ARROW) >>> - topwin.get_window().set_cursor(cursor) >>> + cursor = >>> Gdk.Cursor.new_from_name(gdk_window.get_display(), "default") >>> + gdk_window.set_cursor(cursor) >>> >> >> >> Does using Gdk.Cursor.new_from_display() fix the issue as well? > > no, the same issue. If the cursor id is not available than it will > crash > >> That way we >> can still use the CursorType value, rather than hardcoded strings > what is the benefit of using hardcoded cursor types instead of strings > which are defined in all the platforms :)? > > https://developer.gnome.org/gdk3/stable/gdk3-Cursors.html#GdkCursorTyp > e > > >> >> Also is there an easy way to reproduce that bug? > remove/rename the cursor - the theme is stored in /usr/share/icons/ > >> I couldn't hit it with stock >> config >> > I think the real bug is in the gdk bindings - per docs it is allowed > to return NULL from the constructor if the cursor type/name does not > exist - "Returns a new GdkCursor, or NULL if there is no cursor with > the given name. " > > https://developer.gnome.org/gdk3/stable/gdk3-Cursors.html#gdk-cursor-n > ew-from-name > > Anyway I think it is better to try-catch than forcing users to switch > their cursor theme :) > I just assumed CursorType vs string values were equivalent, thanks for explaining things. I've pushed your patch now Thanks, Cole _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list