On Wed, Jan 18, 2017 at 10:08:42AM -0200, Eduardo Lima (Etrunko) wrote: > 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. I don't understand what you mean here. In the part of the code quoted above, a RemoteViewerISOListDialog instance is created, and right after that, we set self->priv->foreign_menu on that instance, so in this case, a CONSTRUCT_ONLY property would be fine. Christophe
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list