Fix scaling of window upon resize

The code to determine scaling of windows was incorrectly
using the original desktop size instead of the host screen
size. The 128 pixel fudge factor was also causing windows
to be scaled when there was no need for them to be.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Silence a message about missing configuration file

Do not print a g_debug() error when the configuration file is missing,
unless given the --debug option.

https://bugzilla.redhat.com/show_bug.cgi?id=1006737
Remove "Automatically resize" menu

Remove "Automatically resize" menu item (always enabled for Spice
display now)

https://bugzilla.redhat.com/show_bug.cgi?id=1007649
Use a USB icon in the fullscreen toolbar

Replace the generic GTK_STOCK_PREFERENCES with a more appropriate USB icon.

The icon was provided by Jakub Steiner <jsteiner@redhat.com>

https://bugzilla.redhat.com/show_bug.cgi?id=804184
Don't resize guest display on zoom change

When the zoom level is changed, the virt-viewer window gets resized. But we
don't want this to trigger a resize of the guest display. But occasionally
rounding errors cause the guest display to be reconfigured when zooming out.  To
fix this, we first check whether the current size is the preferred size.  If it
is, we don't send down a resize command to the guest.

In addition to preventing guest resizes in response to zooming, it also improves
the behavior when the guest display resolution is changed from within the guest.
Before this change, we'd have the following behavior:
    A. guest changes display to WxH
    B. client gets notified of change and resizes the window to WxH
    C. client responds to window resize by sending a new monitor config command to the guest

With this change, the extra step C will be avoided because we're already at the
preferred size.

Resolves: rhbz#1004051
Remove special-case for getting window n=0

virt_viewer_app_get_nth_window() will return the proper window when passed 0 for
the 'nth' argument, so there's no need to avoid calling it in this case.  It
just complicates the code logic.
Don't create new windows at startup when kiosk mode is false

virt_viewer_app_set_kiosk creates a new window at startup for each client
monitor (regardless of whether the guest supports more than one display).  This
seems unnecessary.  Only do this if kiosk mode is actually enabled.
Fix broken 'release-cursor' accel when not specified in --hotkeys

When the --hotkeys option is given, all hotkeys that are not explicitly
specified are disabled.  The method used to disable hotkeys is to change the
accel map entry to key=0, mods=0. However, when we decide whether to set a grab
sequence on the spice dispay widget, we simply use the return value for
gtk_accel_map_lookup_entry and assume that a TRUE value returned from this
function means that the hotkey is enabled.  In reality, this function will
return TRUE for disabled hotkeys, but the 'key' variable will be set to key=0,
mods=0. The result is that if I start virt-viewer like this:

    virt-viewer --hotkeys secure-attention=ctrl+alt+end ...

and the guest that I'm attached to uses server mouse mode, it will be impossible
to release the grab on the spice widget.  Because we will explicitly disable the
grab keys in the spice widget and handle the 'release-cursor' hotkey in
virt-viewer, but the hotkey is an empty accel key.

Instead of simply checking the return value of gtk_accel_map_lookup_entry, we
have to inspect the return value for 'key' and check whether any keys are
actually assigned.
Don't show 'do you want to quit' dialog in kiosk mode

In some situation, (for example, guest without vdagent running), it's
possible to pass key combinations to virt-viewer. When using alt+f4,
this can cause the 'do you want to quit?' dialog to show while it's
non-functional.
This commit moves the check for kiosk mode to before we show this dialog.
Fix 'silentely' typo in remote-viewer man page
Fix building with older spice-gtk

Due to spice-gtk-0.23 missing SPICE_GTK_CHECK_VERSION macro, the
condition:

causes the following error:

virt-viewer-session-spice.c: In function 'virt_viewer_session_spice_main_channel_event':
virt-viewer-session-spice.c:525:64: error: missing binary operator before token "("
 #if defined(SPICE_GTK_CHECK_VERSION) && SPICE_GTK_CHECK_VERSION(0, 23, 21)
                                                                ^
Also one more warning is fixed in this patch:

virt-viewer-session-spice.c:476:19: warning: unused variable 'error'
[-Wunused-variable] const GError *error;
                                  ^

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>