mirror of
https://gitlab.com/virt-viewer/virt-viewer.git
synced 2025-02-03 13:47:05 +03:00
Add VirtViewerDisplay::selectable property
This property will be set when the display can be selected to be "enabled" and shown (this can involve creating/connecting an additional guest monitor, and may need guest agent cooperation for example).
This commit is contained in:
parent
37c30a4569
commit
6f9c7a624e
@ -47,6 +47,7 @@ static void virt_viewer_display_spice_send_keys(VirtViewerDisplay *display,
|
||||
static GdkPixbuf *virt_viewer_display_spice_get_pixbuf(VirtViewerDisplay *display);
|
||||
static void virt_viewer_display_spice_release_cursor(VirtViewerDisplay *display);
|
||||
static void virt_viewer_display_spice_close(VirtViewerDisplay *display G_GNUC_UNUSED);
|
||||
static gboolean virt_viewer_display_spice_selectable(VirtViewerDisplay *display);
|
||||
|
||||
static void
|
||||
virt_viewer_display_spice_finalize(GObject *obj)
|
||||
@ -70,6 +71,7 @@ virt_viewer_display_spice_class_init(VirtViewerDisplaySpiceClass *klass)
|
||||
dclass->get_pixbuf = virt_viewer_display_spice_get_pixbuf;
|
||||
dclass->release_cursor = virt_viewer_display_spice_release_cursor;
|
||||
dclass->close = virt_viewer_display_spice_close;
|
||||
dclass->selectable = virt_viewer_display_spice_selectable;
|
||||
|
||||
g_type_class_add_private(klass, sizeof(VirtViewerDisplaySpicePrivate));
|
||||
}
|
||||
@ -279,6 +281,20 @@ virt_viewer_display_spice_close(VirtViewerDisplay *display G_GNUC_UNUSED)
|
||||
{
|
||||
}
|
||||
|
||||
static gboolean
|
||||
virt_viewer_display_spice_selectable(VirtViewerDisplay *self)
|
||||
{
|
||||
gboolean agent_connected;
|
||||
SpiceMainChannel *mainc;
|
||||
|
||||
mainc = get_main(self);
|
||||
g_object_get(mainc,
|
||||
"agent-connected", &agent_connected,
|
||||
NULL);
|
||||
|
||||
return agent_connected;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Local variables:
|
||||
|
@ -80,6 +80,7 @@ enum {
|
||||
PROP_ZOOM_LEVEL,
|
||||
PROP_SHOW_HINT,
|
||||
PROP_SESSION,
|
||||
PROP_SELECTABLE,
|
||||
};
|
||||
|
||||
static void
|
||||
@ -167,6 +168,13 @@ virt_viewer_display_class_init(VirtViewerDisplayClass *class)
|
||||
G_PARAM_READWRITE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
g_object_class_install_property(object_class,
|
||||
PROP_SELECTABLE,
|
||||
g_param_spec_boolean("selectable",
|
||||
"Selectable",
|
||||
"Selectable",
|
||||
FALSE,
|
||||
G_PARAM_READABLE));
|
||||
|
||||
g_signal_new("display-pointer-grab",
|
||||
G_OBJECT_CLASS_TYPE(object_class),
|
||||
@ -302,6 +310,9 @@ virt_viewer_display_get_property(GObject *object,
|
||||
case PROP_SESSION:
|
||||
g_value_set_object(value, virt_viewer_display_get_session(display));
|
||||
break;
|
||||
case PROP_SELECTABLE:
|
||||
g_value_set_boolean(value, virt_viewer_display_get_selectable(display));
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||
@ -601,6 +612,18 @@ void virt_viewer_display_release_cursor(VirtViewerDisplay *self)
|
||||
klass->release_cursor(self);
|
||||
}
|
||||
|
||||
gboolean virt_viewer_display_get_selectable(VirtViewerDisplay *self)
|
||||
{
|
||||
VirtViewerDisplayClass *klass;
|
||||
|
||||
g_return_val_if_fail(VIRT_VIEWER_IS_DISPLAY(self), FALSE);
|
||||
|
||||
klass = VIRT_VIEWER_DISPLAY_GET_CLASS(self);
|
||||
if (klass->selectable)
|
||||
return klass->selectable(self);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void virt_viewer_display_close(VirtViewerDisplay *self)
|
||||
{
|
||||
|
@ -77,6 +77,7 @@ struct _VirtViewerDisplayClass {
|
||||
void (*release_cursor)(VirtViewerDisplay *display);
|
||||
|
||||
void (*close)(VirtViewerDisplay *display);
|
||||
gboolean (*selectable)(VirtViewerDisplay *display);
|
||||
|
||||
/* signals */
|
||||
void (*display_pointer_grab)(VirtViewerDisplay *display);
|
||||
@ -118,6 +119,7 @@ void virt_viewer_display_release_cursor(VirtViewerDisplay *display);
|
||||
|
||||
void virt_viewer_display_close(VirtViewerDisplay *display);
|
||||
void virt_viewer_display_set_enabled(VirtViewerDisplay *display, gboolean enabled);
|
||||
gboolean virt_viewer_display_get_selectable(VirtViewerDisplay *display);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user