1276 Commits

Author SHA1 Message Date
Pavel Grunt
e73947776d build-sys: Check spice-glib version
virt-viewer uses spice-glib api, configure should check
for the required version

Related:
https://bugzilla.redhat.com/show_bug.cgi?id=1375429

Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-10-05 14:57:55 +02:00
Daniel P. Berrange
8b91f52715 spec: don't distribute both .spec files in dist
rpmbuild -ta only works if the tar.gz contains a single
spec file, so remove the mingw-virt-viewer.spec from
dist.

We should however be including both the spec.in files.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2016-08-10 15:17:07 +01:00
Victor Toso
813c775cc9 Fix filename leak on transfer dialog
spice_file_transfer_task_get_filename() was wrongly annotated as
transfer none. We can safely free this string after usage.
2016-08-05 10:59:23 +02:00
Eduardo Lima (Etrunko)
dbc8105155 ovirt-foreign-menu: Use g_clear_pointer/g_clear_object
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-07-29 17:53:34 -03:00
Eduardo Lima (Etrunko)
f7b15be770 ovirt-foreign-menu: Rework states logic
Use switch/case instead of lots of conditional blocks

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-07-29 17:53:34 -03:00
Jonathon Jongsma
2d2d7ac2f7 Fix resizing problem with recent gtk versions
When using client-side decorations, as well as in certain other
situations (wayland, and windows in some cases), the window gradually
resizes larger and larger.

This is caused by a change in how gtk interprets the sizes passed to
gtk_window_resize(), particularly when client-side decorations (CSD) are
involved. For example, In the past this size was assumed to include the
size of the CSD, but now it it assumes that the sizes only represent the
size of the window's content, without any decorations. However,
gtk_widget_get_preferred_size() (when called on a GtkWindow*), returns a
size that includes the size of the CSD. So
virt_viewer_window_queue_resize() was essentially growing the window by
the size of the CSD every time it was called.

To work around this issue, we need to calculate the preferred size of
the window's child, not the size of the entire window (including CSD).
Then we add the width of the window's border (just to be safe) and pass
those values to gtk_window_resize().
2016-07-28 11:14:36 -05:00
Daniel P. Berrange
a62827d28c virt-viewer: ensure we close when seeing domain stop event
Normally virt-viewer relies on the VNC/SPICE widget seeing
an EOF on its underlying connection to detect when the
session is closed.

When tunnelling to a remote guest over SSH though, this
EOF can be delayed for a very long time, leaving a dead
session open.

This can be seen with

   virt-viewer -c qemu+ssh://remotehost/system guestname

when on the remote shell run

   virsh destroy guestname

and notice that virt-viewer does not see the shutdown
immediately.

When we get a domain stopped event we know the session
should be dead, so forceably close it, if not already
closed.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2016-07-12 13:54:15 +01:00
Daniel P. Berrange
35e489d519 virt-viewer: fix display of guest name in title for vnc
The following commit broke the display of the guest name in
the title for VNC displays:

  commit 61a1bc4dcbb056755fe96c5945f84c1312041059
  Author: Pavel Grunt <pgrunt@redhat.com>
  Date:   Wed Apr 15 13:50:35 2015 +0200

    session-vnc: Set window for display to avoid gtk-vnc v0.3.8 crash

    The VNC display widget of gtk-vnc v0.3.8 needs a window at the moment

The problem is that this causes the window to be associated
with the display before the guest name is available. Thus
when ensure_window_for_display() runs, the window is already
configured and so it never invokes the logic to set the title.

The fix is to unconditionally update the title in the
ensure_window_for_display() method, even if the window already
exists.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2016-07-12 10:46:06 +01:00
Fabiano Fidêncio
0bba2d07af app,vnc: Don't retry to authenticate when vvfile authentication fails
When connecting to a RHEVM/oVirt machine through an expired vvfile the
user ends up in an endless loop of getting an error message, pressing
"Okay", re-scheduling a new connection retry. getting an error message
due to the expired vvfile and so on.

In order to avoid the issue, let's not re-schedule the connection retry
when the user tries to connect through a vvfile and it fails.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-07-07 17:11:13 +02:00
Daniel P. Berrange
e204c25799 Post-release version bump to 5.0 2016-06-30 15:18:42 +01:00
Daniel P. Berrange
3b036c061e Update NEWS for 4.0 release v4.0 2016-06-30 13:54:00 +01:00
Daniel P. Berrange
48de38bd97 Refresh translations from zanata 2016-06-30 13:53:29 +01:00
Eduardo Lima (Etrunko)
49f4b829ff Adjust timer to refresh ovirt foreign menu
This is a temporary solution, as discussed in the bug. We will adjust
the timer to refresh the ISO list from 15 seconds to 5 minutes (300
seconds), while reworking in the UI to replace the menu with a dialog,
which seems a saner way to display the list.

Resolves: rhbz#1347726

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2016-06-30 09:01:01 -03:00
Fabiano Fidêncio
271d33e7d8 ui: Use mnemonics for remote-viewer connection UI
Here we added mnemonics for the buttons "Cancel" and "Connect" and also
for the "Connection Address" entry (as it was before moving this dialog
to a .ui file).

The "Recent connections" widget is left behind as GtkRecentChooserWidget
isn't suitable for mnemonic activation.

Resolves: rhbz#1351487

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-06-30 13:48:43 +02:00
Fabiano Fidêncio
3775e095a5 timed-revealer: listen to the "grab-notify" signal
The "grab-notify" signal lets us know when our widget becomes
shadowed by a Gtk+ grab on another widget, or when it becomes unshadowed
due to a grab being removed.

That's exactly the case we face when dealing with "usb-redirection" and
"close" items of the fullscreen toolbar. And, currently, when these
widgets get closed the timed-revealer stays there forever. From now on
let's take advantage of the "grab-notify" signal and schedule a timeout
for the revealer when these widgets' windows get closed.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2016-06-30 11:51:06 +02:00
Eduardo Lima (Etrunko)
8a32e0bfee Get rid of deprecated functions to customize widget colors
Since commit cc455b7f916110d7cfae6b7af753349e070c9494, the background
color has not been set correctly for Gtk+ 3.18 (Fedora 23), while it was
working fine for more recent version 3.20 (Fedora 24). Tracked down to
some changes in GtkNotebook code which can not be easily backported.

Instead of customizing background and foreground colors, let's just
stick with the default colors provided by theme.

Related https://bugs.freedesktop.org/show_bug.cgi?id=94276

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2016-06-29 10:30:46 -03:00
Lukáš Venhoda
f212c5a358 package: Add appdata metadata for Gnome Software
Adds metadata to be used with Gnome Software.
Includes name, summary, description and a few screenshots of remote-viewer.

Signed-off-by: Lukáš Venhoda <lvenhoda@redhat.com>
Acked-by: Daniel P. Berrange <berrange@redhat.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-29 02:01:42 +02:00
Christophe Fergeau
937693a73a window: Don't take a reference on 'toolbar'
VirtViewerTimedRevealer now derives from GtkEventBox/GtkContainer, so
it follows GTK+ conventions and takes ownership of the floating ref on
'toolbar'. Since VirtViewerWindow and VirtViewerTimedRevealer will have
the same lifespan, we don't need to own a reference on toolbar in
VirtViewerWindow.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-29 02:00:09 +02:00
Fabiano Fidêncio
612f4ffd2f timed-revealer: Inherit from GtkEventBox
As suggested by Christophe, inheriting from GtkEventBox instead of
having one instance of it as a member can help us to get rid of
virt_viewer_timed_revealer_get_overlay_widget().

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-06-29 01:59:45 +02:00
Christophe Fergeau
67667cafd7 timed-revealer: Don't release reference we don't own
VirtViewerTimedRevealer::evBox is created in
virt_viewer_timed_revealer_new() and will be passed to
gtk_container_add() through gtk_overlay_add_overlay(overlay,
virt_viewer_timed_revealer_get_overlay_widget(priv->revealer))

This means VirtViewerTimedRevealer does not own a reference on evBox,
and that it should not try to release it in
VirtViewerTimedRevealer::dispose()

Backtrace for the crash:
 #0  0x00007ffff3e92c9d in g_type_check_instance_is_fundamentally_a () at /lib64/libgobject-2.0.so.0
 #1  0x00007ffff3e722a5 in g_object_unref () at /lib64/libgobject-2.0.so.0
 #2  0x000000000041ebe3 in virt_viewer_timed_revealer_dispose (object=0x1127320) at virt-viewer-timed-revealer.c:128
 #3  0x00007ffff3e723b6 in g_object_unref () at  /lib64/libgobject-2.0.so.0
 #4  0x000000000041c040 in virt_viewer_window_dispose  (object=0x981f70) at virt-viewer-window.c:191
 #5  0x00007ffff3e723b6 in g_object_unref () at  /lib64/libgobject-2.0.so.0
 #6  0x0000000000413a58 in virt_viewer_app_display_removed (nth=<optimized out>, self=0x680330) at virt-viewer-app.c:989
 #7  0x0000000000413a58 in virt_viewer_app_display_removed (session=<optimized out>, display=<optimized out>, self=0x680330) at virt-viewer-app.c:1000
 #8  0x00007ffff3e705e0 in g_cclosure_marshal_VOID__OBJECTv () at /lib64/libgobject-2.0.so.0  #9  0x00007ffff3e6d784 in _g_closure_invoke_va () at  /lib64/libgobject-2.0.so.0
 #10 0x00007ffff3e88cd9 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
 #11 0x00007ffff3e897eb in g_signal_emit_by_name () at /lib64/libgobject-2.0.so.0
 #12 0x0000000000418973 in virt_viewer_session_remove_display (session=0x9c6de0, display=0x961a90) at virt-viewer-session.c:463
 #13 0x0000000000420934 in destroy_display (data=<optimized out>) at virt-viewer-session-spice.c:851
 #14 0x00007ffff3b6d0eb in g_ptr_array_foreach () at /lib64/libglib-2.0.so.0
 #15 0x00007ffff3b6d180 in ptr_array_free () at /lib64/libglib-2.0.so.0
 #16 0x000000000042072a in virt_viewer_session_spice_clear_displays (self=0x9c6de0) at virt-viewer-session-spice.c:94
 #17 0x000000000042240d in virt_viewer_session_spice_close (session=<optimized out>) at virt-viewer-session-spice.c:459
 #18 0x0000000000414be5 in virt_viewer_app_quit (self=self@entry=0x680330) at virt-viewer-app.c:285
 #19 0x0000000000415500 in virt_viewer_app_maybe_quit (self=0x680330, window=window@entry=0x981a90) at virt-viewer-app.c:481
 #20 0x000000000041c4ad in virt_viewer_window_delete (src=<optimized out>, dummy=<optimized out>, self=0x981a90) at virt-viewer-window.c:771
 #21 0x00007ffff61807f1 in _gtk_marshal_BOOLEAN__BOXEDv () at /lib64/libgtk-3.so.0
 #22 0x00007ffff3e6d784 in _g_closure_invoke_va () at /lib64/libgobject-2.0.so.0
 #23 0x00007ffff3e887b3 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
 #24 0x00007ffff3e8933f in g_signal_emit () at /lib64/libgobject-2.0.so.0
 #25 0x00007ffff62dde6c in gtk_widget_event_internal () at /lib64/libgtk-3.so.0
 #26 0x00007ffff617f5ef in gtk_main_do_event () at /lib64/libgtk-3.so.0
 #27 0x00007ffff5c7dd25 in _gdk_event_emit () at /lib64/libgdk-3.so.0
 #28 0x00007ffff5cae672 in gdk_event_source_dispatch () at /lib64/libgdk-3.so.0
 #29 0x00007ffff3b9895a in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
 #30 0x00007ffff3b98d10 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
 #31 0x00007ffff3b98dbc in g_main_context_iteration () at /lib64/libglib-2.0.so.0
 #32 0x00007ffff41643cd in g_application_run () at /lib64/libgio-2.0.so.0
 #33 0x000000000040fc1a in main (argc=3, argv=0x7fffffffdec8) at virt-viewer-main.c:41

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-29 01:54:27 +02:00
Christophe Fergeau
68c7073a25 timed-revealer: Fix "revealer" refcounting
virt_viewer_timed_revealer_new calls gtk_container_add on the instance
returned by gtk_revealer_new so VirtViewerTimedRevealer does not own any
ref on this GtkRevealer instance. Unrefing it in _dispose() is thus wrong.

Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-29 01:53:46 +02:00
Eduardo Lima (Etrunko)
9413c580ef Use more accurate debug messages for foreign menu
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-24 11:36:37 -03:00
Eduardo Lima (Etrunko)
1b3e49ff22 Get ovirt foreign menu item from UI file
Currently the menu item is created manually, while this patch changes it to be
retrieved from the UI file, and decides if it needs to be shown or hidden if the
ISO list is received from ovirt.

This a preparation for a upcoming UI change that will present the ISO list in a
separate dialog, instead of a submenu.

Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-24 11:35:55 -03:00
Fabiano Fidêncio
cc455b7f91 window: Replace autoDrawer with native Gtk widgets
GtkRevealer was intrudced in Gtk+ 3.10 and, combined with Gtk Overlay
(intoduced in Gtk+ 3.2), can provide a more sustainably implementation
of the AutoDrawer functionality.

This approach is completely based on the approach taken by virt-manager:
dc05600324

Resolves: https://bugs.freedesktop.org/show_bug.cgi?id=94495

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2016-06-23 17:35:17 +02:00
Fabiano Fidêncio
3ab81d7617 mingw,spec: Bump msitools version
Fedora 24 has GLib 2.48.0, which brings a new dependency: PCRE.
The new dependency is already added to the wxi file (in msitools) and a
new msitools build including the fix is already done [0].

Let's just bump the version in our spec file and make sure we will be
using the msitools which includes the fix.

[0]: https://bodhi.fedoraproject.org/updates/FEDORA-2016-a7a2db6109

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2016-06-23 17:33:58 +02:00
Pavel Grunt
311ea0fd20 Fix missing field initializers
Spotted by clang
2016-06-22 11:21:13 +02:00
Pavel Grunt
f57cfee07f window: Use loop instead of multiple ifs
Binds modifier's mask and key, also fixes a compile time warning
spotted by clang:
 warning: cast from 'gchar *' (aka 'char *') to 'guint *' (aka 'unsigned
  int *') increases required alignment from 1 to 4 [-Wcast-align]
 return (guint*)g_array_free(a, FALSE);
2016-06-22 11:21:13 +02:00
Pavel Grunt
7b5e8ddc3f window: Move definition from header 2016-06-22 11:21:13 +02:00
Pavel Grunt
dac040ef70 window: Use a predefined macro instead of constant 2016-06-22 11:21:13 +02:00
Fabiano Fidêncio
cf26929900 util: Fix resource path
Since commit 1f6f1a48 the resource path for icons has been broken.
The reason is that when moving the .ui files to $(srcdir)/resources/ui
the define used for the resources was changed to reflect the new
directory. However, this change wasn't needed by the icons and ended
up with virt-viewer not displaying a few icons.

Let's fix the issue by setting back the define to the previous one and
then tweaking the virt_viewer_util_load_ui() to add "ui" to the resource
path, for loading the ui files.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
2016-06-21 22:54:12 +02:00
Fabiano Fidêncio
1f6f1a48e5 ui: Move ui files to $(srcdir)/resources/ui
I'd like to keep our resources all in the same place. In the future we
will be able to have:
$(srcdir)
 |_ resources
    |_ ui: for our {remote,virt}-viewer ui specific files
    |_ gtk: for files that can be automatically handled by Gtk (like
    |       app-menu).
    |_ css: for custom themes (like:
            https://bugs.freedesktop.org/show_bug.cgi?id=94276)

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2016-06-20 18:24:16 +02:00
Fabiano Fidêncio
1315f0aa3d ui: Rename UI files to .ui (instead of .xml)
When using GtkApplication, Gtk automatically searches for the menus of
the application at "org/example/app/gtk/menus.ui".

Currently we don't have a "menus.ui", but try to see this commit is a
first step in order to use app-menu.

For now, let's standardize that all our UI files will have the ".ui"
extension instead of the ".xml" one.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2016-06-20 17:33:53 +02:00
Fabiano Fidêncio
0e98f93b0e remote-viewer: Add missing chain-up to parent's window_added() method
It hasn't bitten us (so hard) so far but would from the moment we add
support to app-menu/headerbar.

By not chaining-up to the parent's method, gtk_window_set_application()
is never called. This causes GApplication object not being able to load
the app-menu, but using the "fallback" which only contains the "Quit"
item.

By chaining-up to the parent's method, g_application_hold() call on
virt-viewer-app.c can be removed, as it is already called by the
parent's window_added() method.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2016-06-20 17:33:15 +02:00
Fabiano Fidêncio
3960828150 window: remove unneeded GTK_WIDGET() casts
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2016-06-20 17:09:43 +02:00
Fabiano Fidêncio
f6f2964b9b display: use MIN_DISPLAY_{WIDTH, HEIGHT} as the minimum possible value
Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-06-20 17:09:27 +02:00
Fabiano Fidêncio
bc38771b7c display: Only queue a resize on zoom-level changes
By the comment in the code:
"For the gtk2 build, we need to queue a resize even if the zoom level
 hasn't changed.  This is due to the fact that VirtViewerWindow will
 queue a resize event for itself immediately after calling this
 function (in  order to shrink the window to fit the new display size
 if necessary). If we don't queue a resize here, the window will become
 tiny because we will only request 50x50 during the window resize."

And it doesn't happen on gtk3 at all. So, let's just remove the comment
and just quere the resize when zoom-changes actually happen.

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
2016-06-20 17:09:00 +02:00
Pavel Grunt
cb4ec1fc80 monitor-alignment: Do not crash on NULL display
Since commit 01b66ef88bc142d6716b40b1e384e94a2629a99f virt-viewer
does not crash on connection to a guest using an invalid display
configuration (eg. Cirrus & QXL vga). That commit allowed existence
of NULL display, however the code handling monitors alignment does
not expect this and crashes when virt-viewer is shifting/aligning
its windows.

Avoid crashing by returning early on NULL display.

 #0  0x0000000000411d0a in displays_cmp (p1=p1@entry=0xbad940, p2=p2@entry=0xbad944, user_data=user_data@entry=0x8eb180) at virt-viewer-util.c:544
 #1  0x00007ffff3f16ac5 in msort_with_tmp (p=0x7fffffffd670, b=0xbad940, n=2) at gqsort.c:93
 #2  0x00007ffff3f16ded in msort_r (b=b@entry=0xbad940, n=n@entry=2, s=s@entry=4, cmp=cmp@entry=0x411ce0 <displays_cmp>, arg=arg@entry=0x8eb180) at gqsort.c:278
 #3  0x00007ffff3f16e78 in g_qsort_with_data (pbase=pbase@entry=0xbad940, total_elems=total_elems@entry=2, size=size@entry=4, compare_func=compare_func@entry=0x411ce0 <displays_cmp>, user_data=user_data@entry=0x8eb180) at gqsort.c:303
 #4  0x000000000041277c in virt_viewer_align_monitors_linear (displays=displays@entry=0x8eb180 = {...}) at virt-viewer-util.c:586
 #5  0x000000000041a92d in virt_viewer_session_on_monitor_geometry_changed (self=0x8f38a0 [VirtViewerSessionSpice], display=<optimized out>) at virt-viewer-session.c:373
 #6  0x00007ffff4415908 in g_closure_invoke (closure=0x9306c0, return_value=return_value@entry=0x0, n_param_values=2, param_values=param_values@entry=0x7fffffffd960, invocation_hint=invocation_hint@entry=0x7fffffffd900)  at gclosure.c:801
 #7  0x00007ffff4427a1d in signal_emit_unlocked_R (node=node@entry=0x668f80, detail=detail@entry=1551, instance=instance@entry=0x930440, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffd960) at gsignal.c:3627
 #8  0x00007ffff442fab1 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7fffffffdaf0) at gsignal.c:3383
 #9  0x00007ffff442fd9f in <emit signal notify:agent-connected on instance 0x930440 [SpiceMainChannel]> (instance=instance@entry=0x930440, signal_id=<optimized out>, detail=<optimized out>) at gsignal.c:3439
 #10 0x00007ffff4419fd4 in g_object_dispatch_properties_changed (object=0x930440 [SpiceMainChannel], n_pspecs=<optimized out>, pspecs=<optimized out> at gobject.c:1061
 #11 0x00007ffff441c4f9 in g_object_notify (pspec=<optimized out>, object=0x930440 [SpiceMainChannel]) at gobject.c:1155
 #12 0x00007ffff441c4f9 in g_object_notify (object=0x930440 [SpiceMainChannel], property_name=<optimized out>) at gobject.c:1202
 #13 0x00007ffff5a63dd0 in notify_main_context (opaque=0x7fffd6fde990) at gio-coroutine.c:240
 #14 0x00007ffff3f07d7a in g_main_context_dispatch (context=0x68da40) at gmain.c:3152
 #15 0x00007ffff3f07d7a in g_main_context_dispatch (context=context@entry=0x68da40) at gmain.c:3767
 #16 0x00007ffff3f080b8 in g_main_context_iterate (context=0x68da40, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3838
 #17 0x00007ffff3f0838a in g_main_loop_run (loop=0x710de0) at gmain.c:4032
 #18 0x00007ffff5f53045 in gtk_main () at gtkmain.c:1207
 #19 0x0000000000411a22 in main (argc=1, argv=0x7fffffffdfa8)

Resolves: rhbz#1250820

Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-20 17:08:28 +02:00
Pavel Grunt
99d81d2fde Add tests for monitor alignment
Related: rhbz#1250820

Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-20 17:08:22 +02:00
Charles Arnold
b64b58b971 window: Fix segault on zooming operations
When virt-viewer is "Waiting for guest domain to start" and
the Ctrl- or Ctrl+ keys are pressed to zoom the blank display
virt-viewer will crash in virt_viewer_display_get_desktop_size
because of a NULL display pointer. To reproduce start virt-viewer
on a VM not running and zoom the display.

Signed-off-by: Charles Arnold <carnold@suse.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
2016-06-20 17:08:18 +02:00
Frediano Ziglio
18e0fa27e3 Revert "Disable IME to allow receiving all keys"
This reverts commit 191f9a8ab49f56aa48781b5eeaa4a1a65d626627.

This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1342984.

Calling ImmDisableIME disable IME for the entire program.
On Windows 7 this also hide the keyboard application from the task bar
making impossible to switch keyboard while using remote viewer.
A recent commit in spice-gtk (7d881d2193bf5598b888a48bb4d8d7ad2e62f443,
"widget: Disable IME context on display widget") disable IME processing
just for SpiceDisplay. This avoid the above regression on Windows 7.

Not having this spice-gtk commit is not going to cause a huge
regression, so it's fine not to add strong coupling between this
commit and the spice-gtk commit which fixes this differently.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe Fergeau <cfergeau@redhat.com>
2016-06-16 17:34:05 +02:00
Michal Privoznik
9f3029291d tests: Fix VPATH build
So test-hotkeys include virt-viewer-app.h which includes
virt-viewer-window.h which includes virt-viewer-display.h which
in turn wants to include virt-viewer-enums.h. But, the enums
header file is generated at build time into builddir not srcdir.
Therefore it may happen if the two are distinct that compiler
fails to find the enums file:

In file included from ../../src/virt-viewer-window.h:29:0,
                 from ../../src/virt-viewer-app.h:28,
                 from ../../tests/test-hotkeys.c:27:
../../src/virt-viewer-display.h:28:31: fatal error: virt-viewer-enums.h: No such file or directory
 #include "virt-viewer-enums.h"
                               ^
compilation terminated.

The fix is to include builddir into paths where header files are
looked for.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-04 20:20:45 +02:00
Michal Privoznik
5eb4a82b18 virt-viewer-display-vnc: Include virt-viewer-util.h
In function virt_viewer_display_vnc_new() we are calling
virt_viewer_signal_connect_object() which is defined in
virt-viewer-util module. However, the header file for the module
is never included.

  CC       libvirt_viewer_la-virt-viewer-display-vnc.lo
virt-viewer-display-vnc.c: In function 'virt_viewer_display_vnc_new':
virt-viewer-display-vnc.c:251:5: warning: implicit declaration of function 'virt_viewer_signal_connect_object' [-Wimplicit-function-declaration]
     virt_viewer_signal_connect_object(app, "notify::enable-accel",
     ^
virt-viewer-display-vnc.c:251:5: warning: nested extern declaration of 'virt_viewer_signal_connect_object' [-Wnested-externs]

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-04 20:20:22 +02:00
Pavel Grunt
ffa460b8c6 app: Check validity of hotkey
The hotkey is valid if it has a valid value. The value is valid if it is
not empty and is successfully parsed by gtk_accelerator_parse().

These hotkeys formats are considered invalid:
 "key" - missing value
 "key=" - missing value
 "key=abcd" - value cannot be parsed by gtk_accelerator_parse()

Resolves: rhbz#1339572

Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-02 11:04:02 +02:00
Pavel Grunt
9a3041eb00 tests: Add hotkeys test
Check if expected g_warning messages are logged.

Related: rhbz#1339572

Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-02 10:59:25 +02:00
Pavel Grunt
7d7e8c2aae app: Use debug to inform about smartcard shortcuts state
Related: rhbz#1339572

Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-02 10:59:18 +02:00
Pavel Grunt
bc83803859 vnc-display: Disable default grab sequence
It should be enabled only if the "release-cursor" sequence was not
specified (by using "--hotkeys=release-cursor=sequence"), otherwise
both sequences would release the cursor.

The solution is taken from the spice-display code.

Resolves: rhbz#1339575

Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-06-02 10:58:57 +02:00
Pavel Grunt
40d1fff271 Include virt-viewer-util.h only in source files
It doesn't have any symbols to be used in headers

Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-05-31 16:52:46 +02:00
Pavel Grunt
4b6fc261d0 Add mnemonics for each display item
Related: rhbz#1332545

Acked-by: Fabiano Fidêncio <fidencio@redhat.com>
2016-05-31 16:44:07 +02:00
Christophe Fergeau
4f37332940 ovirt: Use sso-token when set in .vv file
Starting with oVirt 4.0, this replaces the jsessionid field for
automatic authentication with oVirt instances for REST communication.
2016-05-10 09:51:14 +02:00
Christophe Fergeau
c904b1c63a vv-file: Add support for 'sso-token' field in [ovirt]
This is the new way of authenticating with remote oVirt instance
starting with oVirt 4.0.
2016-05-10 09:51:14 +02:00