Re: [PATCH virt-viewer 05/10] remote-viewer: Make ovirt-foreign-menu a property

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Jan 18, 2017 at 10:56:59AM -0200, Eduardo Lima (Etrunko) wrote:
> On 18/01/17 10:53, Christophe Fergeau wrote:
> > 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.
> 
> The ovirt-foreign-menu property is installed as a member of RemoteViewer
> object, not RemoteViewerISODialog.

Oh, what I was saying is that

+    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));

should probably be

+    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,
+                          "ovirt-foreign-menu", foreign_menu,
+                          NULL);

But as I was saying, it's not that important here :)

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

[Index of Archives]     [Linux Virtualization]     [KVM Development]     [CentOS Virtualization]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]     [Video 4 Linux]

  Powered by Linux