From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: [Emacs-diffs] xwidget 9fe732a 2/2: Better changelog for xwidgets Date: Tue, 03 Feb 2015 15:42:45 -0800 Organization: UCLA Computer Science Department Message-ID: <54D15CF5.3020809@cs.ucla.edu> References: <20150201003025.18138.95966@vcs.savannah.gnu.org> <54CDC38C.9080701@yandex.ru> <54CE05A0.2090701@cs.ucla.edu> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070402000905010307090300" X-Trace: ger.gmane.org 1423006995 3632 80.91.229.3 (3 Feb 2015 23:43:15 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 3 Feb 2015 23:43:15 +0000 (UTC) Cc: emacs-devel@gnu.org To: joakim@verona.se Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Feb 04 00:43:15 2015 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1YIn7i-0003KF-Ez for ged-emacs-devel@m.gmane.org; Wed, 04 Feb 2015 00:43:14 +0100 Original-Received: from localhost ([::1]:33933 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIn7h-0003q6-VO for ged-emacs-devel@m.gmane.org; Tue, 03 Feb 2015 18:43:13 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44776) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIn7S-0003oc-8z for emacs-devel@gnu.org; Tue, 03 Feb 2015 18:42:59 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YIn7P-0000lz-2M for emacs-devel@gnu.org; Tue, 03 Feb 2015 18:42:58 -0500 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:58231) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YIn7O-0000k4-QH for emacs-devel@gnu.org; Tue, 03 Feb 2015 18:42:55 -0500 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 1ED72A600EE; Tue, 3 Feb 2015 15:42:47 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id K-lGFf5fxDRG; Tue, 3 Feb 2015 15:42:45 -0800 (PST) Original-Received: from [192.168.1.9] (pool-173-55-11-52.lsanca.fios.verizon.net [173.55.11.52]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id C39EFA600ED; Tue, 3 Feb 2015 15:42:45 -0800 (PST) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 In-Reply-To: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 131.179.128.62 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:182353 Archived-At: This is a multi-part message in MIME format. --------------070402000905010307090300 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit joakim@verona.se wrote: > There seems to be a bunch of gtk warnings I cant really do anything about. You should be able to fix them all. The attached patch did that for me, on Ubuntu 14.10 anyway. This patch uses the usual GNU Emacs style in the code I fixed; similar fixes are needed for the rest of the xwidget code, but one thing at a time.) > --enable-gtk-deprecation-warnings > > seems to be good as well. That's disabled by default due to its false alarms. It is helpful to enable it occasionally, and you can still build despite the warnings by using 'make WERROR_CFLAGS='. I don't recommend this for ordinary development, though. --------------070402000905010307090300 Content-Type: text/x-patch; name="xwidget-warn.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xwidget-warn.diff" diff --git a/src/xwidget.c b/src/xwidget.c index 5c816cf..45f2507 100644 --- a/src/xwidget.c +++ b/src/xwidget.c @@ -97,6 +97,13 @@ #include "xwidget.h" +/* Convert STRING, a string constant, to a type acceptable as glib data. */ +static char * +gstr (char const *string) +{ + return (char *) string; +} + //TODO embryo of lisp allocators for xwidgets //TODO xwidget* should be Lisp_xwidget* static struct xwidget* @@ -146,7 +153,7 @@ gboolean webkit_osr_navigation_policy_decision_requested_callback(WebKitWebView WebKitWebPolicyDecision *policy_decision, gpointer user_data); -static GtkWidget* xwgir_create(unsigned char* class, unsigned char* namespace); +static GtkWidget *xwgir_create (char *, char *); @@ -223,9 +230,14 @@ TYPE is a symbol which can take one of the following values: } if(EQ(xw->type, Qsocket_osr)) xw->widget_osr = gtk_socket_new(); - if(!NILP (Fget(xw->type, QCxwgir_class))) - xw->widget_osr = xwgir_create(SDATA(Fcar(Fcdr(Fget(xw->type, QCxwgir_class)))), - SDATA(Fcar(Fget(xw->type, QCxwgir_class)))); + + Lisp_Object xwgir_class = Fget (xw->type, QCxwgir_class); + if (!NILP (xwgir_class)) + { + char *class = SSDATA (Fcar (Fcdr (xwgir_class))); + char *namespace = SSDATA (XCDR (xwgir_class)); + xw->widget_osr = xwgir_create (class, namespace); + } gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width, xw->height); @@ -610,7 +622,9 @@ DEFUN ("xwgir-require-namespace", Fxwgir_require_namespace, Sxwgir_require_names return Qt; } -GtkWidget* xwgir_create(unsigned char* class, unsigned char* namespace){ +GtkWidget * +xwgir_create (char *class, char *namespace) +{ //TODO this is more or less the same as xwgir-call-method, so should be refactored //create a gtk widget, given its name //find the constructor @@ -838,16 +852,20 @@ xwidget_init_view (struct xwidget *xww, //widget creation if(EQ(xww->type, Qbutton)) { - xv->widget = gtk_button_new_with_label (XSTRING(xww->title)->data); + xv->widget = gtk_button_new_with_label (SSDATA (xww->title)); g_signal_connect (G_OBJECT (xv->widget), "clicked", G_CALLBACK (buttonclick_handler), xv); // the view rather than the model } else if (EQ(xww->type, Qtoggle)) { - xv->widget = gtk_toggle_button_new_with_label (XSTRING(xww->title)->data); + xv->widget = gtk_toggle_button_new_with_label (SSDATA (xww->title)); //xv->widget = gtk_entry_new ();//temp hack to experiment with key propagation TODO entry widget is useful for testing } else if (EQ(xww->type, Qsocket)) { xv->widget = gtk_socket_new (); - g_signal_connect_after(xv->widget, "plug-added", G_CALLBACK(xwidget_plug_added), "plug added"); - g_signal_connect_after(xv->widget, "plug-removed", G_CALLBACK(xwidget_plug_removed), "plug removed"); + g_signal_connect_after (xv->widget, "plug-added", + G_CALLBACK (xwidget_plug_added), + gstr ("plug added")); + g_signal_connect_after (xv->widget, "plug-removed", + G_CALLBACK (xwidget_plug_removed), + gstr ("plug removed")); //TODO these doesnt help gtk_widget_add_events(xv->widget, GDK_KEY_PRESS); gtk_widget_add_events(xv->widget, GDK_KEY_RELEASE); @@ -856,7 +874,9 @@ xwidget_init_view (struct xwidget *xww, //gtk_hscale_new (GTK_ADJUSTMENT(gtk_adjustment_new (0.0, 0.0, 100.0, 1.0, 10.0, 10.0))); gtk_hscale_new_with_range ( 0.0, 100.0, 10.0); gtk_scale_set_draw_value (GTK_SCALE (xv->widget), FALSE); //i think its emacs role to show text and stuff, so disable the widgets own text - xv->handler_id = g_signal_connect_after(xv->widget, "value-changed", G_CALLBACK(xwidget_slider_changed), "slider changed"); + xv->handler_id = g_signal_connect_after (xv->widget, "value-changed", + G_CALLBACK (xwidget_slider_changed), + gstr ("slider changed")); } else if (EQ(xww->type, Qcairo)) { //Cairo view //uhm cairo is differentish in gtk 3. --------------070402000905010307090300--