GTK theming: oxygen-gtk support broken

Ruslan Kabatsayev b7.10110111 at gmail.com
Sat Jan 5 11:59:50 PST 2013


Hi Michael,

What about such a simple change, which will let us set LibO version
once and for all GTK theme calls:
-------------------------------
diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx
index 14a1949..ec11a8f 100644
--- a/vcl/unx/gtk/app/gtkdata.cxx
+++ b/vcl/unx/gtk/app/gtkdata.cxx
@@ -667,6 +667,7 @@ void GtkData::Init()

     // init gtk/gdk
     gtk_init_check( &nParams, &pCmdLineAry );
+    g_setenv("LibreOffice_Version","4.0.0.0",true);
     gdk_error_trap_push();
     aOrigXIOErrorHandler = XSetIOErrorHandler(XIOErrorHdl);

--------------------------------
Of course, "4.0.0.0" should be replaced by some variable, name of
which I currently don't know. But how do you like this idea? It seems
the easiest and most efficient compared to any g_object_set_data()
way.

Regards,
Ruslan

On Thu, Nov 22, 2012 at 4:19 PM, Michael Meeks <michael.meeks at suse.com> wrote:
>
> On Wed, 2012-11-21 at 19:46 +0400, Ruslan Kabatsayev wrote:
>> This doesn't seem to be a very easy thing. Oxygen-gtk gets application
>> name via g_get_prgname() and also from PID reading /proc/$PID/cmdline.
>> Not very extensible for versions.
>
>         Right :-)
>
>> Yeah, g_object_set_data with LibO version on widget passed to theme
>> would be just fine.
>
>         Drat - I added it to each gtk top-level; but now I recall that the
> widgets prolly behave somewhat oddly wrt. their parenting.
>
>> Something like this:
>> g_object_set_data(G_OBJECT(widget),"LibreOfficeVersion",(gpointer)0xMAJVMINV).
>> At least this will work for gtk2, not for gtk3 since no widgets are
>> passed there. Though I don't think we really want to explicitely
>> support LibO in oxygen-gtk3.
>
>         I have:
>
>         m_pWindow = gtk_widget_new( GTK_TYPE_WINDOW, "type", eWinType,
>                                     "visible", FALSE, NULL );
>     g_object_set_data( G_OBJECT( m_pWindow ), "SalFrame", this );
>
>     static char pVersion[16] = "";
>     if( pVersion[0] == '\0' )
>         g_sprintf( pVersion, "%d", SUPD );
>     g_object_set_data( G_OBJECT( m_pWindow ), "libo-version", pVersion );
>
>         If that helps; if not - a patch to
> vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx would be appreciated :-) [ I
> guess adding a helper and calling it in all those NWFooBaaEnsure methods
> would do it - they look like they could use some re-factoring love
> anyway ].
>
>         Thanks !
>
>                 Michael.
>
> --
> michael.meeks at suse.com  <><, Pseudo Engineer, itinerant idiot
>


More information about the LibreOffice mailing list