[Geany-Devel] [Geany-Plugins] Please consider adding GTK3 support for your plugin(s)

Colomban Wendling lists.ban at xxxxx
Mon Mar 18 19:17:48 UTC 2013


Le 18/03/2013 16:26, יוסף אור בוצ'קו a écrit :
> 
> Attachment: [PATCH] GTK3 support for Addons
> 
> 
> Yosef Or
> 
> Boczko
> 
> [...] 
>
> From af63bd8d40ef8d28dda4a85c3ee519ac1a5876fb Mon Sep 17 00:00:00 2001
> From: Yosef Or Boczko <yosefor3 at walla.com>
> Date: Mon, 18 Mar 2013 17:21:04 +0200
> Subject: [PATCH] GTK3 support for Addons
>
> ---
>  addons/src/ao_doclist.c | 15 ++++++++++++---
>  build/addons.m4         |  6 +++++-
>  2 files changed, 17 insertions(+), 4 deletions(-)>
>
> diff --git a/addons/src/ao_doclist.c b/addons/src/ao_doclist.c
> index 16a5ffa..1311ac8 100644
> --- a/addons/src/ao_doclist.c
> +++ b/addons/src/ao_doclist.c
> @@ -126,15 +126,24 @@ static void ao_popup_position_menu(GtkMenu *menu, gint *x, gint *y, gboolean *pu
>  	gint widget_height;
>  
>  	/* Retrieve size and position of both widget and menu */
> -	if (GTK_WIDGET_NO_WINDOW(widget))
> +	if (gtk_widget_get_has_window(widget))

This looks wrong, like the opposite.
And gtk_widget_get_has_window() is only available with GTK >= 2.18.

>  	{
> -		gdk_window_get_position(widget->window, &wx, &wy);
> +		gdk_window_get_position(gtk_widget_get_parent_window(widget), &wx, &wy);

Looks like it should be gtk_widget_get_window() not get_parent_window()
which does a very different thing.

> +#if GTK_CHECK_VERSION(3, 0, 0)
> +		wx += gtk_widget_get_allocated_width(widget);
> +		wy += gtk_widget_get_allocated_height(widget);
> +#else
>  		wx += widget->allocation.x;
>  		wy += widget->allocation.y;
> +#endif

Both version doesn't look to do the same at all, the GTK2 version uses
the coordinates while the GTK3 one uses the dimensions.

>  	}
>  	else
> -		gdk_window_get_origin(widget->window, &wx, &wy);
> +		gdk_window_get_origin(gtk_widget_get_parent_window(widget), &wx, &wy);

Same as above.

> +#if GTK_CHECK_VERSION(3, 0, 0)
> +	gtk_widget_get_preferred_size(widget, &widget_req, NULL);
> +#else
>  	gtk_widget_size_request(widget, &widget_req);
> +#endif
>  	widget_height = widget_req.height; /* Better than allocation.height */
>  
>  	/* Calculate menu position */
> diff --git a/build/addons.m4 b/build/addons.m4
> index e668612..3b136ea 100644
> --- a/build/addons.m4
> +++ b/build/addons.m4
> @@ -1,8 +1,12 @@
>  AC_DEFUN([GP_CHECK_ADDONS],
>  [
>      GP_ARG_DISABLE([Addons], [auto])
> -    GP_CHECK_PLUGIN_GTK2_ONLY([Addons])
> +    
> +    GP_CHECK_PLUGIN_DEPS([Addons], [ADDONS],
> +                         [$GP_GTK_PACKAGE >= 2.16])
> +    

No need to check for the GTK version only to get build under GTK3, just
drop the GP_CHECK_PLUGIN_GTK2_ONLY() call.

>      GP_COMMIT_PLUGIN_STATUS([Addons])
> +    
>      AC_CONFIG_FILES([
>          addons/Makefile
>          addons/src/Makefile
> -- 1.8.2 


More information about the Devel mailing list