On 18/01/17 09:53, Eduardo Lima (Etrunko) wrote: > On 17/01/17 14:00, Christophe Fergeau wrote: >> On Fri, Jan 13, 2017 at 07:11:07PM -0200, Eduardo Lima (Etrunko) wrote: >>> The OvirtForeignMenu pointer is needed by the new ISO list dialog, and >>> we make it acessible via property to avoid interdependency between >>> objects. >>> >>> Signed-off-by: Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> >>> --- >>> src/remote-viewer-iso-list-dialog.c | 31 +++++++++++++++++++++++-------- >>> src/remote-viewer-iso-list-dialog.h | 2 +- >>> src/remote-viewer.c | 37 +++++++++++++++++++++++++++++++++++++ >>> 3 files changed, 61 insertions(+), 9 deletions(-) >>> >>> diff --git a/src/remote-viewer-iso-list-dialog.c b/src/remote-viewer-iso-list-dialog.c >>> index 0fbea28..858719c 100644 >>> --- a/src/remote-viewer-iso-list-dialog.c >>> +++ b/src/remote-viewer-iso-list-dialog.c >>> @@ -24,6 +24,7 @@ >>> >>> #include "remote-viewer-iso-list-dialog.h" >>> #include "virt-viewer-util.h" >>> +#include "ovirt-foreign-menu.h" >>> >>> G_DEFINE_TYPE(RemoteViewerISOListDialog, remote_viewer_iso_list_dialog, GTK_TYPE_DIALOG) >>> >>> @@ -33,11 +34,16 @@ G_DEFINE_TYPE(RemoteViewerISOListDialog, remote_viewer_iso_list_dialog, GTK_TYPE >>> struct _RemoteViewerISOListDialogPrivate >>> { >>> GtkWidget *stack; >>> + OvirtForeignMenu *foreign_menu; >>> }; >>> >>> static void >>> remote_viewer_iso_list_dialog_dispose(GObject *object) >>> { >>> + RemoteViewerISOListDialog *self = REMOTE_VIEWER_ISO_LIST_DIALOG(object); >>> + RemoteViewerISOListDialogPrivate *priv = self->priv; >>> + >>> + g_clear_object(&priv->foreign_menu); >>> G_OBJECT_CLASS(remote_viewer_iso_list_dialog_parent_class)->dispose(object); >>> } >>> >>> @@ -94,13 +100,22 @@ remote_viewer_iso_list_dialog_init(RemoteViewerISOListDialog *self) >>> } >>> >>> GtkWidget * >>> -remote_viewer_iso_list_dialog_new(GtkWindow *parent) >>> +remote_viewer_iso_list_dialog_new(GtkWindow *parent, GObject *foreign_menu) >>> { >>> - return g_object_new(REMOTE_VIEWER_TYPE_ISO_LIST_DIALOG, >>> - "title", _("Change CD"), >>> - "transient-for", parent, >>> - "border-width", 18, >>> - "default-width", 400, >>> - "default-height", 300, >>> - NULL); >>> + GtkWidget *dialog; >>> + RemoteViewerISOListDialog *self; >>> + >>> + g_return_val_if_fail(foreign_menu != NULL, NULL); >>> + >>> + dialog = g_object_new(REMOTE_VIEWER_TYPE_ISO_LIST_DIALOG, >>> + "title", _("Change CD"), >>> + "transient-for", parent, >>> + "border-width", 18, >>> + "default-width", 400, >>> + "default-height", 300, >>> + NULL); >>> + >>> + self = REMOTE_VIEWER_ISO_LIST_DIALOG(dialog); >>> + self->priv->foreign_menu = OVIRT_FOREIGN_MENU(g_object_ref(foreign_menu)); >> >> Fwiw, a construct-only GObject property would be more expected (but you >> can keep it this way i f you think it's better). > > > No objections, I will change it. Thinking better about this, it is not possible to make it a construct only, because the ovirt object is created later on the process, when remote-viewer has already started. Also, there is the possibility of the pointer being set or not, depending on how the application was invoked. -- Eduardo de Barros Lima (Etrunko) Software Engineer - RedHat etrunko@xxxxxxxxxx _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list