[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] xwidget 57a63d9 3/3: gnu indent on src/xwidget.*
From: |
Joakim Verona |
Subject: |
[Emacs-diffs] xwidget 57a63d9 3/3: gnu indent on src/xwidget.* |
Date: |
Wed, 04 Feb 2015 22:50:03 +0000 |
branch: xwidget
commit 57a63d9bbbd7f2c15471d069abf6c91f201f9a80
Author: Joakim Verona <address@hidden>
Commit: Joakim Verona <address@hidden>
gnu indent on src/xwidget.*
---
src/xwidget.c | 1681 +++++++++++++++++++++++++++++++--------------------------
src/xwidget.h | 54 +-
2 files changed, 948 insertions(+), 787 deletions(-)
diff --git a/src/xwidget.c b/src/xwidget.c
index 366eb35..7ffb132 100644
--- a/src/xwidget.c
+++ b/src/xwidget.c
@@ -68,7 +68,7 @@
#include "gtkutil.h"
#include "font.h"
-#endif /* HAVE_X_WINDOWS */
+#endif /* HAVE_X_WINDOWS */
#include <gtk/gtk.h>
#include <gdk/gdk.h>
@@ -107,98 +107,117 @@ gstr (char const *string)
//TODO embryo of lisp allocators for xwidgets
//TODO xwidget* should be Lisp_xwidget*
-static struct xwidget*
+static struct xwidget *
allocate_xwidget (void)
{
return ALLOCATE_PSEUDOVECTOR (struct xwidget, height, PVEC_XWIDGET);
}
//TODO xwidget_view* should be Lisp_xwidget_view*
-static struct xwidget_view*
+static struct xwidget_view *
allocate_xwidget_view (void)
{
- return ALLOCATE_PSEUDOVECTOR (struct xwidget_view, redisplayed,
PVEC_XWIDGET_VIEW);
+ return ALLOCATE_PSEUDOVECTOR (struct xwidget_view, redisplayed,
+ PVEC_XWIDGET_VIEW);
}
+
#define XSETXWIDGET(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_XWIDGET))
#define XSETXWIDGET_VIEW(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_XWIDGET_VIEW))
-struct xwidget_view* xwidget_view_lookup(struct xwidget* xw, struct window
*w);
-Lisp_Object xwidget_spec_value ( Lisp_Object spec, Lisp_Object key, int
*found);
-gboolean offscreen_damage_event (GtkWidget *widget, GdkEvent *event, gpointer
data);
-void webkit_osr_document_load_finished_callback (WebKitWebView
*webkitwebview,
- WebKitWebFrame *arg1,
- gpointer
user_data);
-gboolean webkit_osr_download_callback (WebKitWebView *webkitwebview,
- WebKitDownload *arg1,
- gpointer data);
-
-gboolean
webkit_osr_mime_type_policy_typedecision_requested_callback(WebKitWebView
*webView,
-
WebKitWebFrame *frame,
-
WebKitNetworkRequest *request,
- gchar
*mimetype,
-
WebKitWebPolicyDecision *policy_decision,
- gpointer
user_data);
-
-gboolean
webkit_osr_new_window_policy_decision_requested_callback(WebKitWebView
*webView,
-
WebKitWebFrame *frame,
-
WebKitNetworkRequest *request,
-
WebKitWebNavigationAction *navigation_action,
-
WebKitWebPolicyDecision *policy_decision,
- gpointer
user_data);
-
-
-gboolean
webkit_osr_navigation_policy_decision_requested_callback(WebKitWebView
*webView,
- WebKitWebFrame
*frame,
- WebKitNetworkRequest
*request,
-
WebKitWebNavigationAction *navigation_action,
-
WebKitWebPolicyDecision *policy_decision,
- gpointer
user_data);
+struct xwidget_view *xwidget_view_lookup (struct xwidget *xw,
+ struct window *w);
+Lisp_Object xwidget_spec_value (Lisp_Object spec, Lisp_Object key,
+ int *found);
+gboolean offscreen_damage_event (GtkWidget * widget, GdkEvent * event,
+ gpointer data);
+void webkit_osr_document_load_finished_callback (WebKitWebView *
+ webkitwebview,
+ WebKitWebFrame * arg1,
+ gpointer user_data);
+gboolean webkit_osr_download_callback (WebKitWebView * webkitwebview,
+ WebKitDownload * arg1, gpointer data);
+
+gboolean
+webkit_osr_mime_type_policy_typedecision_requested_callback (WebKitWebView *
+ webView,
+ WebKitWebFrame *
+ frame,
+
WebKitNetworkRequest
+ * request,
+ gchar * mimetype,
+
WebKitWebPolicyDecision
+ *
+ policy_decision,
+ gpointer
+ user_data);
+
+gboolean
+webkit_osr_new_window_policy_decision_requested_callback (WebKitWebView *
+ webView,
+ WebKitWebFrame *
+ frame,
+ WebKitNetworkRequest
+ * request,
+
WebKitWebNavigationAction
+ * navigation_action,
+
WebKitWebPolicyDecision
+ * policy_decision,
+ gpointer user_data);
+
+
+gboolean
+webkit_osr_navigation_policy_decision_requested_callback (WebKitWebView *
+ webView,
+ WebKitWebFrame *
+ frame,
+ WebKitNetworkRequest
+ * request,
+
WebKitWebNavigationAction
+ * navigation_action,
+
WebKitWebPolicyDecision
+ * policy_decision,
+ gpointer user_data);
static GtkWidget *xwgir_create (char *, char *);
-static void
-send_xembed_ready_event (struct xwidget* xw, int xembedid);
-DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 8, 0,
- doc: /* Make an xwidget from BEG to END of TYPE.
-
-If BUFFER is nil it uses the current buffer. If BUFFER is a string and
-no such buffer exists, it is created.
-
-TYPE is a symbol which can take one of the following values:
-- Button
-- ToggleButton
-- slider
-- socket
-- socket-osr
-- cairo
-*/
- )
- (Lisp_Object beg, Lisp_Object end,
- Lisp_Object type,
- Lisp_Object title,
- Lisp_Object width, Lisp_Object height,
- Lisp_Object data,
- Lisp_Object buffer)
+static void send_xembed_ready_event (struct xwidget *xw, int xembedid);
+DEFUN ("make-xwidget", Fmake_xwidget, Smake_xwidget, 7, 8, 0, doc: /* Make
an xwidget from BEG to END of TYPE.
+
+ If
BUFFER is nil it uses the current buffer. If BUFFER is a string and
+ no
such buffer exists, it is created.
+
+ TYPE
is a symbol which can take one of the following values:
+ -
Button
+ -
ToggleButton
+ -
slider
+ -
socket
+ -
socket-osr
+ -
cairo
+ */
+)(Lisp_Object beg, Lisp_Object end,
+ Lisp_Object type,
+ Lisp_Object title,
+ Lisp_Object width, Lisp_Object height, Lisp_Object data, Lisp_Object buffer)
{
//should work a bit like "make-button"(make-button BEG END &rest PROPERTIES)
// arg "type" and fwd should be keyword args eventually
//(make-xwidget 3 3 'button "oei" 31 31 nil)
//(xwidget-info (car xwidget-list))
- struct xwidget* xw = allocate_xwidget();
+ struct xwidget *xw = allocate_xwidget ();
Lisp_Object val;
xw->type = type;
xw->title = title;
if (NILP (buffer))
- buffer = Fcurrent_buffer(); // no need to gcpro because Fcurrent_buffer
doesn't call Feval/eval_sub.
+ buffer = Fcurrent_buffer (); // no need to gcpro because
Fcurrent_buffer doesn't call Feval/eval_sub.
else
- buffer = Fget_buffer_create (buffer);
+ buffer = Fget_buffer_create (buffer);
xw->buffer = buffer;
- xw->height = XFASTINT(height);
- xw->width = XFASTINT(width);
+ xw->height = XFASTINT (height);
+ xw->width = XFASTINT (width);
xw->kill_without_query = 0;
- XSETXWIDGET (val, xw); // set the vectorlike_header of VAL with the correct
value
+ XSETXWIDGET (val, xw); // set the vectorlike_header of VAL with the
correct value
Vxwidget_list = Fcons (val, Vxwidget_list);
xw->widgetwindow_osr = NULL;
xw->widget_osr = NULL;
@@ -211,115 +230,143 @@ TYPE is a symbol which can take one of the following
values:
/* DIY mvc. widget is rendered offscreen,
later bitmap copied to the views.
*/
- if (EQ(xw->type, Qwebkit_osr)||
- EQ(xw->type, Qsocket_osr)||
- (!NILP (Fget(xw->type, QCxwgir_class)))) {
- block_input();
+ if (EQ (xw->type, Qwebkit_osr) ||
+ EQ (xw->type, Qsocket_osr) || (!NILP (Fget (xw->type, QCxwgir_class))))
+ {
+ block_input ();
xw->widgetwindow_osr = gtk_offscreen_window_new ();
- gtk_window_resize(GTK_WINDOW(xw->widgetwindow_osr), xw->width,
xw->height);
- xw->widgetscrolledwindow_osr = NULL; //webkit osr is the only scrolled
component atm
-
- if (EQ(xw->type, Qwebkit_osr)){
- xw->widgetscrolledwindow_osr = gtk_scrolled_window_new(NULL, NULL);
-
gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(xw->widgetscrolledwindow_osr
),xw->height);
-
gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(xw->widgetscrolledwindow_osr
),xw->width);
-
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(xw->widgetscrolledwindow_osr
), GTK_POLICY_ALWAYS, GTK_POLICY_ALWAYS);
-
- xw->widget_osr=webkit_web_view_new();
- gtk_container_add(GTK_CONTAINER(xw->widgetscrolledwindow_osr ),
GTK_WIDGET( WEBKIT_WEB_VIEW(xw->widget_osr)));
- }
- if(EQ(xw->type, Qsocket_osr))
- xw->widget_osr = gtk_socket_new();
- if(!NILP (Fget(xw->type, QCxwgir_class)))
- xw->widget_osr = xwgir_create(SSDATA(Fcar(Fcdr(Fget(xw->type,
QCxwgir_class)))),
- SSDATA(Fcar(Fget(xw->type,
QCxwgir_class))));
-
- gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width,
xw->height);
-
- if (EQ(xw->type, Qwebkit_osr)){
- gtk_container_add (GTK_CONTAINER (xw->widgetwindow_osr),
xw->widgetscrolledwindow_osr);
- }else{
- gtk_container_add (GTK_CONTAINER (xw->widgetwindow_osr),
xw->widget_osr);
- }
+ gtk_window_resize (GTK_WINDOW (xw->widgetwindow_osr), xw->width,
+ xw->height);
+ xw->widgetscrolledwindow_osr = NULL; //webkit osr is the only
scrolled component atm
+
+ if (EQ (xw->type, Qwebkit_osr))
+ {
+ xw->widgetscrolledwindow_osr = gtk_scrolled_window_new (NULL, NULL);
+ gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW
+ (xw->
+
widgetscrolledwindow_osr),
+ xw->height);
+ gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW
+ (xw->
+ widgetscrolledwindow_osr),
+ xw->width);
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW
+ (xw->widgetscrolledwindow_osr),
+ GTK_POLICY_ALWAYS,
+ GTK_POLICY_ALWAYS);
+
+ xw->widget_osr = webkit_web_view_new ();
+ gtk_container_add (GTK_CONTAINER (xw->widgetscrolledwindow_osr),
+ GTK_WIDGET (WEBKIT_WEB_VIEW (xw->widget_osr)));
+ }
+ if (EQ (xw->type, Qsocket_osr))
+ xw->widget_osr = gtk_socket_new ();
+ if (!NILP (Fget (xw->type, QCxwgir_class)))
+ xw->widget_osr =
+ xwgir_create (SSDATA (Fcar (Fcdr (Fget (xw->type, QCxwgir_class)))),
+ SSDATA (Fcar (Fget (xw->type, QCxwgir_class))));
+
+ gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width,
+ xw->height);
+
+ if (EQ (xw->type, Qwebkit_osr))
+ {
+ gtk_container_add (GTK_CONTAINER (xw->widgetwindow_osr),
+ xw->widgetscrolledwindow_osr);
+ }
+ else
+ {
+ gtk_container_add (GTK_CONTAINER (xw->widgetwindow_osr),
+ xw->widget_osr);
+ }
gtk_widget_show (xw->widget_osr);
gtk_widget_show (xw->widgetwindow_osr);
gtk_widget_show (xw->widgetscrolledwindow_osr);
/* store some xwidget data in the gtk widgets for convenient retrieval
in the event handlers. */
- g_object_set_data (G_OBJECT (xw->widget_osr), XG_XWIDGET, (gpointer)
(xw));
- g_object_set_data (G_OBJECT (xw->widgetwindow_osr), XG_XWIDGET,
(gpointer) (xw));
+ g_object_set_data (G_OBJECT (xw->widget_osr), XG_XWIDGET,
+ (gpointer) (xw));
+ g_object_set_data (G_OBJECT (xw->widgetwindow_osr), XG_XWIDGET,
+ (gpointer) (xw));
/* signals */
- if (EQ(xw->type, Qwebkit_osr)) {
- g_signal_connect (G_OBJECT (xw->widget_osr),
- "document-load-finished",
- G_CALLBACK
(webkit_osr_document_load_finished_callback),
- xw);
-
- g_signal_connect (G_OBJECT (xw->widget_osr),
- "download-requested",
- G_CALLBACK (webkit_osr_download_callback),
- xw);
-
- g_signal_connect (G_OBJECT (xw->widget_osr),
- "mime-type-policy-decision-requested",
- G_CALLBACK
(webkit_osr_mime_type_policy_typedecision_requested_callback),
- xw);
-
- g_signal_connect (G_OBJECT (xw->widget_osr),
- "new-window-policy-decision-requested",
- G_CALLBACK
(webkit_osr_new_window_policy_decision_requested_callback),
- xw);
-
- g_signal_connect (G_OBJECT (xw->widget_osr),
- "navigation-policy-decision-requested",
- G_CALLBACK
(webkit_osr_navigation_policy_decision_requested_callback),
- xw);
- }
-
- if (EQ(xw->type, Qsocket_osr)) {
- send_xembed_ready_event (xw, gtk_socket_get_id (GTK_SOCKET
(xw->widget_osr)));
- //gtk_widget_realize(xw->widget);
- }
+ if (EQ (xw->type, Qwebkit_osr))
+ {
+ g_signal_connect (G_OBJECT (xw->widget_osr),
+ "document-load-finished",
+ G_CALLBACK
+ (webkit_osr_document_load_finished_callback), xw);
+
+ g_signal_connect (G_OBJECT (xw->widget_osr),
+ "download-requested",
+ G_CALLBACK (webkit_osr_download_callback), xw);
+
+ g_signal_connect (G_OBJECT (xw->widget_osr),
+ "mime-type-policy-decision-requested",
+ G_CALLBACK
+
(webkit_osr_mime_type_policy_typedecision_requested_callback),
+ xw);
+
+ g_signal_connect (G_OBJECT (xw->widget_osr),
+ "new-window-policy-decision-requested",
+ G_CALLBACK
+
(webkit_osr_new_window_policy_decision_requested_callback),
+ xw);
+
+ g_signal_connect (G_OBJECT (xw->widget_osr),
+ "navigation-policy-decision-requested",
+ G_CALLBACK
+
(webkit_osr_navigation_policy_decision_requested_callback),
+ xw);
+ }
+
+ if (EQ (xw->type, Qsocket_osr))
+ {
+ send_xembed_ready_event (xw,
+ gtk_socket_get_id (GTK_SOCKET
+ (xw->widget_osr)));
+ //gtk_widget_realize(xw->widget);
+ }
+
+
+ unblock_input ();
-
- unblock_input();
-
- }
-#endif /* HAVE_WEBKIT_OSR */
+ }
+#endif /* HAVE_WEBKIT_OSR */
return val;
}
-DEFUN ("get-buffer-xwidgets", Fget_buffer_xwidgets, Sget_buffer_xwidgets, 1,
1, 0,
- doc: /* Return a list of xwidgets associated with BUFFER.
-BUFFER may be a buffer or the name of one.
- */
- )
- (Lisp_Object buffer)
+DEFUN ("get-buffer-xwidgets", Fget_buffer_xwidgets, Sget_buffer_xwidgets, 1,
1, 0, doc:/* Return a list of xwidgets associated with BUFFER.
+
BUFFER may be a buffer or the name of one.
+
*/
+)(Lisp_Object
+ buffer)
{
- Lisp_Object xw, tail, xw_list;
+ Lisp_Object xw, tail, xw_list;
- if (NILP (buffer)) return Qnil;
- buffer = Fget_buffer (buffer);
- if (NILP (buffer)) return Qnil;
+ if (NILP (buffer))
+ return Qnil;
+ buffer = Fget_buffer (buffer);
+ if (NILP (buffer))
+ return Qnil;
- xw_list = Qnil;
+ xw_list = Qnil;
- for (tail = Vxwidget_list; CONSP (tail); tail = XCDR (tail))
- {
- xw = XCAR (tail);
- if (XWIDGETP (xw) && EQ (Fxwidget_buffer (xw), buffer))
- xw_list = Fcons (xw, xw_list);
- }
- return xw_list;
+ for (tail = Vxwidget_list; CONSP (tail); tail = XCDR (tail))
+ {
+ xw = XCAR (tail);
+ if (XWIDGETP (xw) && EQ (Fxwidget_buffer (xw), buffer))
+ xw_list = Fcons (xw, xw_list);
+ }
+ return xw_list;
}
static int
-xwidget_hidden(struct xwidget_view *xv)
+xwidget_hidden (struct xwidget_view *xv)
{
- return xv->hidden;
+ return xv->hidden;
}
@@ -346,10 +393,10 @@ buttonclick_handler (GtkWidget * widget, gpointer data)
static void
-send_xembed_ready_event (struct xwidget* xw, int xembedid)
+send_xembed_ready_event (struct xwidget *xw, int xembedid)
{
Lisp_Object xw_lo;
- XSETXWIDGET(xw_lo, xw);
+ XSETXWIDGET (xw_lo, xw);
struct input_event event;
EVENT_INIT (event);
event.kind = XWIDGET_EVENT;
@@ -369,8 +416,8 @@ static void
xwidget_show_view (struct xwidget_view *xv)
{
xv->hidden = 0;
- gtk_widget_show(xv->widgetwindow);
- gtk_fixed_move (GTK_FIXED (xv->emacswindow), xv->widgetwindow, xv->x +
xv->clip_left, xv->y + xv->clip_top); //TODO refactor
+ gtk_widget_show (xv->widgetwindow);
+ gtk_fixed_move (GTK_FIXED (xv->emacswindow), xv->widgetwindow, xv->x +
xv->clip_left, xv->y + xv->clip_top); //TODO refactor
}
@@ -381,30 +428,27 @@ xwidget_hide_view (struct xwidget_view *xv)
xv->hidden = 1;
//gtk_widget_hide(xw->widgetwindow);
gtk_fixed_move (GTK_FIXED (xv->emacswindow), xv->widgetwindow,
- 10000, 10000);
+ 10000, 10000);
}
static void
-xwidget_plug_added(GtkSocket *socket,
- gpointer user_data)
+xwidget_plug_added (GtkSocket * socket, gpointer user_data)
{
//hmm this doesnt seem to get called for foreign windows
- printf("xwidget_plug_added\n");
+ printf ("xwidget_plug_added\n");
}
static gboolean
-xwidget_plug_removed(GtkSocket *socket,
- gpointer user_data)
+xwidget_plug_removed (GtkSocket * socket, gpointer user_data)
{
- printf("xwidget_plug_removed\n");
- return TRUE; /* dont run the default handler because that kills the socket
and we want to reuse it*/
+ printf ("xwidget_plug_removed\n");
+ return TRUE; /* dont run the default handler because that
kills the socket and we want to reuse it */
}
static void
-xwidget_slider_changed (GtkRange *range,
- gpointer user_data)
+xwidget_slider_changed (GtkRange * range, gpointer user_data)
{
//slider value changed. change value of siblings
//correspondingly. but remember that changing value will again
@@ -416,25 +460,29 @@ xwidget_slider_changed (GtkRange *range,
// - the type of the controllers value (double, boolean etc)
// - the getter and setter (but they can be func pointers)
// a behemoth macro is always an option.
- double v=gtk_range_get_value(range);
- struct xwidget_view* xvp = g_object_get_data (G_OBJECT (range),
XG_XWIDGET_VIEW);
- struct xwidget_view* xv;
+ double v = gtk_range_get_value (range);
+ struct xwidget_view *xvp =
+ g_object_get_data (G_OBJECT (range), XG_XWIDGET_VIEW);
+ struct xwidget_view *xv;
- printf("slider changed val:%f\n", v);
+ printf ("slider changed val:%f\n", v);
- for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail))
+ for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail);
+ tail = XCDR (tail))
{
- if (XWIDGET_VIEW_P (XCAR (tail))) {
- xv = XXWIDGET_VIEW (XCAR (tail));
- if (EQ (xvp->model, xv->model)) {
- //block sibling views signal handlers
- g_signal_handler_block(xv->widget, xv->handler_id);
-
- //set values of sibling views and unblock
- gtk_range_set_value(GTK_RANGE(xv->widget), v);
- g_signal_handler_unblock(xv->widget,xv->handler_id);
- }
- }
+ if (XWIDGET_VIEW_P (XCAR (tail)))
+ {
+ xv = XXWIDGET_VIEW (XCAR (tail));
+ if (EQ (xvp->model, xv->model))
+ {
+ //block sibling views signal handlers
+ g_signal_handler_block (xv->widget, xv->handler_id);
+
+ //set values of sibling views and unblock
+ gtk_range_set_value (GTK_RANGE (xv->widget), v);
+ g_signal_handler_unblock (xv->widget, xv->handler_id);
+ }
+ }
}
}
@@ -442,178 +490,212 @@ xwidget_slider_changed (GtkRange *range,
/* when the off-screen webkit master view changes this signal is called.
it copies the bitmap from the off-screen webkit instance */
gboolean
-offscreen_damage_event (GtkWidget *widget, GdkEvent *event, gpointer xv_widget)
+offscreen_damage_event (GtkWidget * widget, GdkEvent * event,
+ gpointer xv_widget)
{
//queue a redraw of onscreen widget
if (GTK_IS_WIDGET (xv_widget))
gtk_widget_queue_draw (GTK_WIDGET (xv_widget));
else
- printf("Warning, offscreen_damage_event received invalid xv
pointer:%p\n",(void*)xv_widget);
+ printf
+ ("Warning, offscreen_damage_event received invalid xv pointer:%p\n",
+ (void *) xv_widget);
return FALSE;
}
static void
-store_xwidget_event_string(struct xwidget* xw, const char* eventname, const
char* eventstr)
+store_xwidget_event_string (struct xwidget *xw, const char *eventname,
+ const char *eventstr)
{
//refactor attempt
struct input_event event;
Lisp_Object xwl;
- XSETXWIDGET(xwl,xw);
+ XSETXWIDGET (xwl, xw);
EVENT_INIT (event);
event.kind = XWIDGET_EVENT;
event.frame_or_window = Qnil; //frame; //how to get the frame here?
//TODO i store it in the xwidget now
event.arg = Qnil;
- event.arg = Fcons (build_string(eventstr), event.arg); //string so dont
intern
- event.arg = Fcons (xwl, event.arg); //TODO
- event.arg = Fcons (intern (eventname), event.arg);//interning should be ok
+ event.arg = Fcons (build_string (eventstr), event.arg); //string so
dont intern
+ event.arg = Fcons (xwl, event.arg); //TODO
+ event.arg = Fcons (intern (eventname), event.arg); //interning should be ok
kbd_buffer_store_event (&event);
}
//TODO deprecated, use load-status
void
-webkit_osr_document_load_finished_callback (WebKitWebView *webkitwebview,
- WebKitWebFrame *arg1,
- gpointer data)
+webkit_osr_document_load_finished_callback (WebKitWebView * webkitwebview,
+ WebKitWebFrame * arg1,
+ gpointer data)
{
//TODO this event sending code should be refactored
// struct xwidget *xw = (struct xwidget *) data;
- struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT
(webkitwebview), XG_XWIDGET);
- printf("webkit finished loading\n");
+ struct xwidget *xw =
+ (struct xwidget *) g_object_get_data (G_OBJECT (webkitwebview),
+ XG_XWIDGET);
+ printf ("webkit finished loading\n");
- store_xwidget_event_string(xw,
- "document-load-finished", "");
+ store_xwidget_event_string (xw, "document-load-finished", "");
}
gboolean
-webkit_osr_download_callback (WebKitWebView *webkitwebview,
- WebKitDownload *arg1,
- gpointer data)
+webkit_osr_download_callback (WebKitWebView * webkitwebview,
+ WebKitDownload * arg1, gpointer data)
{
- struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT
(webkitwebview), XG_XWIDGET);
- printf("download requested %s\n", webkit_download_get_uri (arg1));
+ struct xwidget *xw =
+ (struct xwidget *) g_object_get_data (G_OBJECT (webkitwebview),
+ XG_XWIDGET);
+ printf ("download requested %s\n", webkit_download_get_uri (arg1));
- printf("webkit finished loading\n");
+ printf ("webkit finished loading\n");
- store_xwidget_event_string(xw, "download-requested", webkit_download_get_uri
(arg1));
+ store_xwidget_event_string (xw, "download-requested",
+ webkit_download_get_uri (arg1));
return FALSE;
}
gboolean
-webkit_osr_mime_type_policy_typedecision_requested_callback(WebKitWebView
*webView,
- WebKitWebFrame
*frame,
-
WebKitNetworkRequest *request,
- gchar
*mimetype,
-
WebKitWebPolicyDecision *policy_decision,
- gpointer
user_data)
-{
- printf("mime policy requested\n");
+webkit_osr_mime_type_policy_typedecision_requested_callback (WebKitWebView *
+ webView,
+ WebKitWebFrame *
+ frame,
+
WebKitNetworkRequest
+ * request,
+ gchar * mimetype,
+
WebKitWebPolicyDecision
+ *
+ policy_decision,
+ gpointer
+ user_data)
+{
+ printf ("mime policy requested\n");
// this function makes webkit send a download signal for all unknown mime
types
// TODO defer the decision to lisp, so that its possible to make Emacs
handle text mime for instance
- if(!webkit_web_view_can_show_mime_type(webView, mimetype)){
- webkit_web_policy_decision_download (policy_decision);
- return TRUE;
- }else{
- return FALSE;
- }
+ if (!webkit_web_view_can_show_mime_type (webView, mimetype))
+ {
+ webkit_web_policy_decision_download (policy_decision);
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
}
gboolean
-webkit_osr_new_window_policy_decision_requested_callback(WebKitWebView
*webView,
- WebKitWebFrame
*frame,
- WebKitNetworkRequest
*request,
-
WebKitWebNavigationAction *navigation_action,
-
WebKitWebPolicyDecision *policy_decision,
- gpointer
user_data)
-{
- struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT
(webView), XG_XWIDGET);
- printf("webkit_osr_new_window_policy_decision_requested_callback %s\n",
- webkit_web_navigation_action_get_original_uri (navigation_action));
-
- store_xwidget_event_string(xw, "new-window-policy-decision-requested",
webkit_web_navigation_action_get_original_uri (navigation_action)
- );
+webkit_osr_new_window_policy_decision_requested_callback (WebKitWebView *
+ webView,
+ WebKitWebFrame *
+ frame,
+ WebKitNetworkRequest
+ * request,
+
WebKitWebNavigationAction
+ * navigation_action,
+
WebKitWebPolicyDecision
+ * policy_decision,
+ gpointer user_data)
+{
+ struct xwidget *xw =
+ (struct xwidget *) g_object_get_data (G_OBJECT (webView), XG_XWIDGET);
+ printf ("webkit_osr_new_window_policy_decision_requested_callback %s\n",
+ webkit_web_navigation_action_get_original_uri (navigation_action));
+
+ store_xwidget_event_string (xw, "new-window-policy-decision-requested",
+ webkit_web_navigation_action_get_original_uri
+ (navigation_action));
return FALSE;
}
gboolean
-webkit_osr_navigation_policy_decision_requested_callback(WebKitWebView
*webView,
- WebKitWebFrame
*frame,
- WebKitNetworkRequest
*request,
-
WebKitWebNavigationAction *navigation_action,
-
WebKitWebPolicyDecision *policy_decision,
- gpointer
user_data)
-{
- struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT
(webView), XG_XWIDGET);
- printf("webkit_osr_navigation_policy_decision_requested_callback %s\n",
- webkit_web_navigation_action_get_original_uri (navigation_action));
- store_xwidget_event_string(xw, "navigation-policy-decision-requested",
webkit_web_navigation_action_get_original_uri (navigation_action)
- );
+webkit_osr_navigation_policy_decision_requested_callback (WebKitWebView *
+ webView,
+ WebKitWebFrame *
+ frame,
+ WebKitNetworkRequest
+ * request,
+
WebKitWebNavigationAction
+ * navigation_action,
+
WebKitWebPolicyDecision
+ * policy_decision,
+ gpointer user_data)
+{
+ struct xwidget *xw =
+ (struct xwidget *) g_object_get_data (G_OBJECT (webView), XG_XWIDGET);
+ printf ("webkit_osr_navigation_policy_decision_requested_callback %s\n",
+ webkit_web_navigation_action_get_original_uri (navigation_action));
+ store_xwidget_event_string (xw, "navigation-policy-decision-requested",
+ webkit_web_navigation_action_get_original_uri
+ (navigation_action));
return FALSE;
}
//for gtk3 offscreen rendered widgets
static gboolean
-xwidget_osr_draw_callback (GtkWidget *widget, cairo_t *cr, gpointer data)
+xwidget_osr_draw_callback (GtkWidget * widget, cairo_t * cr, gpointer data)
{
- struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (widget),
XG_XWIDGET);
- struct xwidget_view* xv = (struct xwidget_view*) g_object_get_data (G_OBJECT
(widget), XG_XWIDGET_VIEW);
+ struct xwidget *xw =
+ (struct xwidget *) g_object_get_data (G_OBJECT (widget), XG_XWIDGET);
+ struct xwidget_view *xv =
+ (struct xwidget_view *) g_object_get_data (G_OBJECT (widget),
+ XG_XWIDGET_VIEW);
- cairo_rectangle(cr, 0,0, xv->clip_right, xv->clip_bottom);//xw->width,
xw->height);
- cairo_clip(cr);
+ cairo_rectangle (cr, 0, 0, xv->clip_right, xv->clip_bottom); //xw->width,
xw->height);
+ cairo_clip (cr);
//
- if(xw->widgetscrolledwindow_osr != NULL)
+ if (xw->widgetscrolledwindow_osr != NULL)
gtk_widget_draw (xw->widgetscrolledwindow_osr, cr);
else
gtk_widget_draw (xw->widget_osr, cr);
return FALSE;
}
-GtkWidget* xwgir_create_debug;
+GtkWidget *xwgir_create_debug;
static gboolean
-xwidget_osr_event_forward (GtkWidget *widget,
- GdkEvent *event,
- gpointer user_data)
+xwidget_osr_event_forward (GtkWidget * widget,
+ GdkEvent * event, gpointer user_data)
{
/* copy events that arrive at the outer widget to the offscreen widget */
- struct xwidget* xw = (struct xwidget*) g_object_get_data (G_OBJECT (widget),
XG_XWIDGET);
- GdkEvent* eventcopy = gdk_event_copy(event);
- eventcopy->any.window = gtk_widget_get_window(xw->widget_osr);// works
+ struct xwidget *xw =
+ (struct xwidget *) g_object_get_data (G_OBJECT (widget), XG_XWIDGET);
+ GdkEvent *eventcopy = gdk_event_copy (event);
+ eventcopy->any.window = gtk_widget_get_window (xw->widget_osr); // works
/* printf("xwidget_osr_event_forward redirect event to window:%d\n",
((GdkEventAny*)eventcopy)->window); */
/* printf("A type:%d x:%f y:%f \n", event->type, event->button.x,
event->button.y); */
/* printf("B type:%d x:%f y:%f \n", eventcopy->type, eventcopy->button.x,
eventcopy->button.y); */
- //gtk_button_get_event_window(xwgir_create_debug);
- gtk_main_do_event(eventcopy); //TODO this will leak events. they should be
deallocated later, perhaps in xwgir_event_callback
- return TRUE; //dont propagate this event furter
+ //gtk_button_get_event_window(xwgir_create_debug);
+ gtk_main_do_event (eventcopy); //TODO this will leak events. they
should be deallocated later, perhaps in xwgir_event_callback
+ return TRUE; //dont propagate this event furter
}
-GIRepository *girepository ;
+GIRepository *girepository;
-DEFUN ("xwgir-require-namespace", Fxwgir_require_namespace,
Sxwgir_require_namespace, 2,2,0,
- doc: /* Require a GObject Introspection namespace.
- This must be done for all namespaces we want to use, before
using other xwgir functions.*/)
+DEFUN ("xwgir-require-namespace", Fxwgir_require_namespace,
Sxwgir_require_namespace, 2, 2, 0, doc: /* Require a GObject Introspection
namespace.
+
This must be done for all namespaces we want to use,
before using other xwgir functions. */ )
(Lisp_Object lnamespace, Lisp_Object lnamespace_version)
{
- const gchar* namespace = SSDATA(lnamespace);
- const gchar* namespace_version = SSDATA(lnamespace_version);
+ const gchar *namespace = SSDATA (lnamespace);
+ const gchar *namespace_version = SSDATA (lnamespace_version);
GError *error = NULL;
- girepository = g_irepository_get_default();
- g_irepository_require(girepository, namespace, namespace_version, 0, &error);
- if (error) {
- g_error("ERROR: %s\n", error->message);
- return Qnil;
- }
+ girepository = g_irepository_get_default ();
+ g_irepository_require (girepository, namespace, namespace_version, 0,
+ &error);
+ if (error)
+ {
+ g_error ("ERROR: %s\n", error->message);
+ return Qnil;
+ }
return Qt;
}
@@ -628,71 +710,67 @@ xwgir_create (char *class, char *namespace)
GIArgument return_value;
- GIObjectInfo* obj_info = g_irepository_find_by_name(girepository, namespace,
class);
- GIFunctionInfo* f_info = g_object_info_find_method (obj_info, "new");
- g_function_info_invoke(f_info,
- NULL, 0,
- NULL, 0,
- &return_value,
- NULL);
+ GIObjectInfo *obj_info =
+ g_irepository_find_by_name (girepository, namespace, class);
+ GIFunctionInfo *f_info = g_object_info_find_method (obj_info, "new");
+ g_function_info_invoke (f_info, NULL, 0, NULL, 0, &return_value, NULL);
xwgir_create_debug = return_value.v_pointer;
return return_value.v_pointer;
}
static int
-xwgir_convert_lisp_to_gir_arg(GIArgument* giarg,
- GIArgInfo* arginfo,
- Lisp_Object lisparg )
+xwgir_convert_lisp_to_gir_arg (GIArgument * giarg,
+ GIArgInfo * arginfo, Lisp_Object lisparg)
{
- GITypeTag tag;
- tag = g_type_info_get_tag (g_arg_info_get_type (arginfo));
+ GITypeTag tag;
+ tag = g_type_info_get_tag (g_arg_info_get_type (arginfo));
switch (tag)
{
case GI_TYPE_TAG_BOOLEAN:
- giarg->v_boolean = XFASTINT(lisparg);
+ giarg->v_boolean = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_INT8:
- giarg->v_int8 = XFASTINT(lisparg);
+ giarg->v_int8 = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_UINT8:
- giarg->v_uint8 = XFASTINT(lisparg);
+ giarg->v_uint8 = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_INT16:
- giarg->v_int16 = XFASTINT(lisparg);
+ giarg->v_int16 = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_UINT16:
- giarg->v_uint16 = XFASTINT(lisparg);
+ giarg->v_uint16 = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_INT32:
- giarg->v_int32 = XFASTINT(lisparg);
+ giarg->v_int32 = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_UINT32:
- giarg->v_uint32 = XFASTINT(lisparg);
+ giarg->v_uint32 = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_INT64:
- giarg->v_int64 = XFASTINT(lisparg);
+ giarg->v_int64 = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_UINT64:
- giarg->v_uint64 = XFASTINT(lisparg);
+ giarg->v_uint64 = XFASTINT (lisparg);
break;
case GI_TYPE_TAG_FLOAT:
- giarg->v_float = XFLOAT_DATA(lisparg);
+ giarg->v_float = XFLOAT_DATA (lisparg);
break;
case GI_TYPE_TAG_DOUBLE:
- giarg->v_double = XFLOAT_DATA(lisparg);
+ giarg->v_double = XFLOAT_DATA (lisparg);
break;
case GI_TYPE_TAG_UTF8:
case GI_TYPE_TAG_FILENAME:
//giarg->v_string = SDATA(lisparg);
- giarg->v_pointer = SDATA(lisparg);
+ giarg->v_pointer = SDATA (lisparg);
break;
case GI_TYPE_TAG_ARRAY:
@@ -705,19 +783,18 @@ xwgir_convert_lisp_to_gir_arg(GIArgument* giarg,
case GI_TYPE_TAG_UNICHAR:
case GI_TYPE_TAG_GTYPE:
//?? i dont know how to handle these yet TODO
- printf("failed in my lisp to gir arg conversion duties. sob!\n");
+ printf ("failed in my lisp to gir arg conversion duties. sob!\n");
return -1;
break;
}
return 0;
}
-DEFUN ("xwgir-xwidget-call-method", Fxwgir_xwidget_call_method,
Sxwgir_xwidget_call_method, 3, 3, 0,
- doc: /* Call Xwidget object method using GObject Introspection.
- XWIDGET is the xwidget instance to act upon.
- METHOD is the Gobject intrsopsection method name.
- ARGUMENTS is a list of arguments for the call. They will
be converted to GObject types from Lisp types.
- */)
+DEFUN ("xwgir-xwidget-call-method", Fxwgir_xwidget_call_method,
Sxwgir_xwidget_call_method, 3, 3, 0, doc: /* Call Xwidget object method
using GObject Introspection.
+
XWIDGET is the xwidget instance to act upon.
+
METHOD is the Gobject intrsopsection method
name.
+
ARGUMENTS is a list of arguments for the
call. They will be converted to GObject types from Lisp types.
+
*/ )
(Lisp_Object xwidget, Lisp_Object method, Lisp_Object arguments)
{
CHECK_XWIDGET (xwidget);
@@ -726,18 +803,29 @@ DEFUN ("xwgir-xwidget-call-method",
Fxwgir_xwidget_call_method, Sxwgir_xwidget_
GIArgument in_args[20];
- struct xwidget* xw;
- if (NILP (xwidget)) { printf("ERROR xwidget nil\n"); return Qnil; };
- xw = XXWIDGET(xwidget);
- if(NULL == xw) printf("ERROR xw is 0\n");
- char* namespace = SSDATA(Fcar(Fget(xw->type, QCxwgir_class)));
+ struct xwidget *xw;
+ if (NILP (xwidget))
+ {
+ printf ("ERROR xwidget nil\n");
+ return Qnil;
+ };
+ xw = XXWIDGET (xwidget);
+ if (NULL == xw)
+ printf ("ERROR xw is 0\n");
+ char *namespace = SSDATA (Fcar (Fget (xw->type, QCxwgir_class)));
//we need the concrete widget, which happens in 2 ways depending on OSR or
not TODO
- GtkWidget* widget = NULL;
- if(NULL == xw->widget_osr) {
- widget = xwidget_view_lookup (xw, XWINDOW(FRAME_SELECTED_WINDOW
(SELECTED_FRAME ()))) -> widget;
- } else {
- widget = xw->widget_osr;
- }
+ GtkWidget *widget = NULL;
+ if (NULL == xw->widget_osr)
+ {
+ widget =
+ xwidget_view_lookup (xw,
+ XWINDOW (FRAME_SELECTED_WINDOW
+ (SELECTED_FRAME ())))->widget;
+ }
+ else
+ {
+ widget = xw->widget_osr;
+ }
//char* class = SDATA(SYMBOL_NAME(xw->type)); //this works but is unflexible
//figure out the class from the widget instead
@@ -745,44 +833,46 @@ DEFUN ("xwgir-xwidget-call-method",
Fxwgir_xwidget_call_method, Sxwgir_xwidget_
/* char* class = G_OBJECT_TYPE_NAME(widget); //gives "GtkButton"(I want
"Button") */
/* class += strlen(namespace); //TODO check for corresponding api method.
but this seems to work. */
- char* class = SSDATA(Fcar(Fcdr(Fget(xw->type, QCxwgir_class))));
+ char *class = SSDATA (Fcar (Fcdr (Fget (xw->type, QCxwgir_class))));
- GIObjectInfo* obj_info = g_irepository_find_by_name(girepository, namespace,
class);
- GIFunctionInfo* f_info = g_object_info_find_method (obj_info,
SSDATA(method));
+ GIObjectInfo *obj_info =
+ g_irepository_find_by_name (girepository, namespace, class);
+ GIFunctionInfo *f_info =
+ g_object_info_find_method (obj_info, SSDATA (method));
//loop over args, convert from lisp to primitive type, given arg
introspection data
//TODO g_callable_info_get_n_args(f_info) should match
- int argscount = XFASTINT(Flength(arguments));
- if(argscount != g_callable_info_get_n_args(f_info)){
- printf("xwgir call method arg count doesn match! \n");
- return Qnil;
- }
+ int argscount = XFASTINT (Flength (arguments));
+ if (argscount != g_callable_info_get_n_args (f_info))
+ {
+ printf ("xwgir call method arg count doesn match! \n");
+ return Qnil;
+ }
int i;
Lisp_Object n;
for (i = 1; i < argscount + 1; ++i)
{
- XSETFASTINT (n, i - 1);
- xwgir_convert_lisp_to_gir_arg(&in_args[i],
g_callable_info_get_arg(f_info, i - 1), Fnth(n, arguments));
+ XSETFASTINT (n, i - 1);
+ xwgir_convert_lisp_to_gir_arg (&in_args[i],
+ g_callable_info_get_arg (f_info, i - 1),
+ Fnth (n, arguments));
}
in_args[0].v_pointer = widget;
- if(g_function_info_invoke(f_info,
- in_args, argscount + 1,
- NULL, 0,
- &return_value,
- &error)) {
- //g_error("ERROR: %s\n", error->message);
- printf("invokation error\n");
- return Qnil;
- }
+ if (g_function_info_invoke (f_info,
+ in_args, argscount + 1,
+ NULL, 0, &return_value, &error))
+ {
+ //g_error("ERROR: %s\n", error->message);
+ printf ("invokation error\n");
+ return Qnil;
+ }
return Qt;
}
static GdkWindow *
-offscreen_pick_embedded_child (GdkWindow *window,
- double x,
- double y,
- gpointer *data)
+offscreen_pick_embedded_child (GdkWindow * window,
+ double x, double y, gpointer * data)
{
//in this simple case we assume the window contains a single widget. easy.
//but then we get the problem that the widget cant be embedded in several
windows
@@ -790,123 +880,135 @@ offscreen_pick_embedded_child (GdkWindow *window,
}
static void
-offscreen_to_embedder (GdkWindow *window,
- gdouble offscreen_x,
- gdouble offscreen_y,
- gpointer embedder_x,
- gpointer embedder_y,
- gpointer data)
+offscreen_to_embedder (GdkWindow * window,
+ gdouble offscreen_x,
+ gdouble offscreen_y,
+ gpointer embedder_x,
+ gpointer embedder_y, gpointer data)
{
- * (gdouble *) embedder_x = offscreen_x;
- * (gdouble *) embedder_y = offscreen_y;
+ *(gdouble *) embedder_x = offscreen_x;
+ *(gdouble *) embedder_y = offscreen_y;
}
static void
-offscreen_from_embedder (GdkWindow *window,
- gdouble embedder_x,
- gdouble embedder_y,
- gpointer offscreen_x,
- gpointer offscreen_y,
- gpointer user_data)
+offscreen_from_embedder (GdkWindow * window,
+ gdouble embedder_x,
+ gdouble embedder_y,
+ gpointer offscreen_x,
+ gpointer offscreen_y, gpointer user_data)
{
- * (gdouble *) offscreen_x = embedder_x;
- * (gdouble *) offscreen_y = embedder_y;
+ *(gdouble *) offscreen_x = embedder_x;
+ *(gdouble *) offscreen_y = embedder_y;
}
static gboolean
-xwidget_osr_event_set_embedder (GtkWidget *widget,
- GdkEvent *event,
- gpointer data)
+xwidget_osr_event_set_embedder (GtkWidget * widget,
+ GdkEvent * event, gpointer data)
{
struct xwidget_view *xv = (struct xwidget_view *) data;
struct xwidget *xww = XXWIDGET (xv->model);
- printf("gdk_offscreen_window_set_embedder %d %d\n",
- GDK_IS_WINDOW(gtk_widget_get_window (xww->widget_osr)),
- GDK_IS_WINDOW(gtk_widget_get_window (GTK_WIDGET (xv->widget))));
- gdk_offscreen_window_set_embedder (gtk_widget_get_window
(xww->widgetwindow_osr),
- gtk_widget_get_window (xv->widget));
+ printf ("gdk_offscreen_window_set_embedder %d %d\n",
+ GDK_IS_WINDOW (gtk_widget_get_window (xww->widget_osr)),
+ GDK_IS_WINDOW (gtk_widget_get_window (GTK_WIDGET (xv->widget))));
+ gdk_offscreen_window_set_embedder (gtk_widget_get_window
+ (xww->widgetwindow_osr),
+ gtk_widget_get_window (xv->widget));
return FALSE;
}
/* initializes and does initial placement of an xwidget view on screen */
-static struct xwidget_view*
-xwidget_init_view (struct xwidget *xww,
- struct glyph_string *s,
- int x, int y)
+static struct xwidget_view *
+xwidget_init_view (struct xwidget *xww, struct glyph_string *s, int x, int y)
{
- struct xwidget_view *xv = allocate_xwidget_view();
+ struct xwidget_view *xv = allocate_xwidget_view ();
Lisp_Object val;
- XSETXWIDGET_VIEW (val, xv) ;
+ XSETXWIDGET_VIEW (val, xv);
Vxwidget_view_list = Fcons (val, Vxwidget_view_list);
- XSETWINDOW(xv->w, s->w);
- XSETXWIDGET(xv->model, xww);
+ XSETWINDOW (xv->w, s->w);
+ XSETXWIDGET (xv->model, xww);
//widget creation
- if(EQ(xww->type, Qbutton))
+ if (EQ (xww->type, Qbutton))
{
- 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 (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), 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);
- } else if (EQ(xww->type, Qslider)) {
- xv->widget =
- //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), gstr("slider changed"));
- } else if (EQ(xww->type, Qcairo)) {
- //Cairo view
- //uhm cairo is differentish in gtk 3.
- //gdk_cairo_create (gtk_widget_get_window (FRAME_GTK_WIDGET (s->f)));
- xv->widget = gtk_drawing_area_new();
- g_signal_connect (G_OBJECT ( xv->widget), "draw",
- G_CALLBACK (xwidget_osr_draw_callback), NULL);
-
- } else if (EQ(xww->type, Qwebkit_osr)||
- EQ(xww->type, Qsocket_osr)||
- (!NILP (Fget(xww->type, QCxwgir_class))))//xwgir widgets are OSR
- {
- printf("osr init:%s\n",SDATA(SYMBOL_NAME(xww->type)));
- xv->widget = gtk_drawing_area_new();
- gtk_widget_set_app_paintable ( xv->widget, TRUE); //because expose event
handling
- gtk_widget_add_events(xv->widget, GDK_ALL_EVENTS_MASK);
-
- /* Draw the view on damage-event */
- g_signal_connect (G_OBJECT (xww->widgetwindow_osr), "damage-event",
- G_CALLBACK (offscreen_damage_event), xv->widget);
-
- if (EQ(xww->type, Qwebkit_osr)){
- /* ///xwgir debug */
- /* //forward events. this isnt compatible with the set_embedded strategy
*/
- g_signal_connect (G_OBJECT ( xv->widget), "button-press-event",
- G_CALLBACK (xwidget_osr_event_forward), NULL);
- g_signal_connect (G_OBJECT ( xv->widget), "button-release-event",
- G_CALLBACK (xwidget_osr_event_forward), NULL);
- g_signal_connect (G_OBJECT ( xv->widget), "motion-notify-event",
- G_CALLBACK (xwidget_osr_event_forward), NULL);
- }else{
- //xwgir debug , orthogonal to forwarding
- g_signal_connect (G_OBJECT (xv->widget), "enter-notify-event",
- G_CALLBACK (xwidget_osr_event_set_embedder), xv);
+ 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 (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),
+ 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);
+ }
+ else if (EQ (xww->type, Qslider))
+ {
+ xv->widget =
+ //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),
+ gstr ("slider changed"));
+ }
+ else if (EQ (xww->type, Qcairo))
+ {
+ //Cairo view
+ //uhm cairo is differentish in gtk 3.
+ //gdk_cairo_create (gtk_widget_get_window (FRAME_GTK_WIDGET (s->f)));
+ xv->widget = gtk_drawing_area_new ();
+ g_signal_connect (G_OBJECT (xv->widget), "draw",
+ G_CALLBACK (xwidget_osr_draw_callback), NULL);
- //draw
- g_signal_connect (G_OBJECT (xv->widget), "draw",
- G_CALLBACK (xwidget_osr_draw_callback), NULL);
+ }
+ else if (EQ (xww->type, Qwebkit_osr) || EQ (xww->type, Qsocket_osr) ||
(!NILP (Fget (xww->type, QCxwgir_class)))) //xwgir widgets are OSR
+ {
+ printf ("osr init:%s\n", SDATA (SYMBOL_NAME (xww->type)));
+ xv->widget = gtk_drawing_area_new ();
+ gtk_widget_set_app_paintable (xv->widget, TRUE); //because expose event
handling
+ gtk_widget_add_events (xv->widget, GDK_ALL_EVENTS_MASK);
+
+ /* Draw the view on damage-event */
+ g_signal_connect (G_OBJECT (xww->widgetwindow_osr), "damage-event",
+ G_CALLBACK (offscreen_damage_event), xv->widget);
+
+ if (EQ (xww->type, Qwebkit_osr))
+ {
+ /* ///xwgir debug */
+ /* //forward events. this isnt compatible with the set_embedded
strategy */
+ g_signal_connect (G_OBJECT (xv->widget), "button-press-event",
+ G_CALLBACK (xwidget_osr_event_forward), NULL);
+ g_signal_connect (G_OBJECT (xv->widget), "button-release-event",
+ G_CALLBACK (xwidget_osr_event_forward), NULL);
+ g_signal_connect (G_OBJECT (xv->widget), "motion-notify-event",
+ G_CALLBACK (xwidget_osr_event_forward), NULL);
+ }
+ else
+ {
+ //xwgir debug , orthogonal to forwarding
+ g_signal_connect (G_OBJECT (xv->widget), "enter-notify-event",
+ G_CALLBACK (xwidget_osr_event_set_embedder), xv);
+ }
+
+ //draw
+ g_signal_connect (G_OBJECT (xv->widget), "draw",
+ G_CALLBACK (xwidget_osr_draw_callback), NULL);
- }
+ }
//else return NULL;
//widget realization
@@ -916,55 +1018,63 @@ xwidget_init_view (struct xwidget *xww,
//other containers than gtk_fixed where explored, but gtk_fixed had the most
predictable behaviour so far.
xv->emacswindow = FRAME_GTK_WIDGET (s->f);
xv->widgetwindow = gtk_fixed_new ();
- gtk_widget_set_has_window(xv->widgetwindow, TRUE);
+ gtk_widget_set_has_window (xv->widgetwindow, TRUE);
gtk_container_add (GTK_CONTAINER (xv->widgetwindow), xv->widget);
//store some xwidget data in the gtk widgets
- g_object_set_data (G_OBJECT (xv->widget), XG_FRAME_DATA, (gpointer) (s->f));
//the emacs frame
- g_object_set_data (G_OBJECT (xv->widget), XG_XWIDGET, (gpointer) (xww));
//the xwidget
- g_object_set_data (G_OBJECT (xv->widget), XG_XWIDGET_VIEW, (gpointer) (xv));
//the xwidget
- g_object_set_data (G_OBJECT (xv->widgetwindow), XG_XWIDGET, (gpointer)
(xww)); //the xwidget window
- g_object_set_data (G_OBJECT (xv->widgetwindow), XG_XWIDGET_VIEW, (gpointer)
(xv)); //the xwidget window
+ g_object_set_data (G_OBJECT (xv->widget), XG_FRAME_DATA, (gpointer) (s->f));
//the emacs frame
+ g_object_set_data (G_OBJECT (xv->widget), XG_XWIDGET, (gpointer) (xww));
//the xwidget
+ g_object_set_data (G_OBJECT (xv->widget), XG_XWIDGET_VIEW, (gpointer) (xv));
//the xwidget
+ g_object_set_data (G_OBJECT (xv->widgetwindow), XG_XWIDGET, (gpointer)
(xww)); //the xwidget window
+ g_object_set_data (G_OBJECT (xv->widgetwindow), XG_XWIDGET_VIEW, (gpointer)
(xv)); //the xwidget window
- gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xww->width,
xww->height);
+ gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xww->width,
+ xww->height);
gtk_widget_set_size_request (xv->widgetwindow, xww->width, xww->height);
gtk_fixed_put (GTK_FIXED (FRAME_GTK_WIDGET (s->f)), xv->widgetwindow, x, y);
- xv->x = x; xv->y = y;
+ xv->x = x;
+ xv->y = y;
gtk_widget_show_all (xv->widgetwindow);
//widgettype specific initialization only possible after realization
- if (EQ(xww->type, Qsocket)) {
- printf ("xwid:%p socket id:%p %p\n",
- (void*)xww,
- (void*)gtk_socket_get_id (GTK_SOCKET (xv->widget)),
- (void*)gtk_socket_get_id (GTK_SOCKET (xv->widget)));
- send_xembed_ready_event (xww,
- gtk_socket_get_id (GTK_SOCKET (xv->widget)));
- //gtk_widget_realize(xw->widget);
- }
+ if (EQ (xww->type, Qsocket))
+ {
+ printf ("xwid:%p socket id:%p %p\n",
+ (void *) xww,
+ (void *) gtk_socket_get_id (GTK_SOCKET (xv->widget)),
+ (void *) gtk_socket_get_id (GTK_SOCKET (xv->widget)));
+ send_xembed_ready_event (xww,
+ gtk_socket_get_id (GTK_SOCKET (xv->widget)));
+ //gtk_widget_realize(xw->widget);
+ }
//////////////////////////////////////////////////////////////
// xwgir debug
- if (//EQ(xww->type, Qwebkit_osr)|| //TODO should be able to choose compile
time which method to use with webkit
- EQ(xww->type, Qsocket_osr)||
- (!NILP (Fget(xww->type, QCxwgir_class))))//xwgir widgets are OSR
+ if ( //EQ(xww->type, Qwebkit_osr)|| //TODO should be
able to choose compile time which method to use with webkit
+ EQ (xww->type, Qsocket_osr) || (!NILP (Fget (xww->type,
QCxwgir_class)))) //xwgir widgets are OSR
{
- printf("gdk_offscreen_window_set_embedder %d %d\n",
- GDK_IS_WINDOW(gtk_widget_get_window (xww->widget_osr)),
- GDK_IS_WINDOW(gtk_widget_get_window (GTK_WIDGET (xv->widget))));
+ printf ("gdk_offscreen_window_set_embedder %d %d\n",
+ GDK_IS_WINDOW (gtk_widget_get_window (xww->widget_osr)),
+ GDK_IS_WINDOW (gtk_widget_get_window
+ (GTK_WIDGET (xv->widget))));
// set_embedder needs to be called after xv->widget realization
- gdk_offscreen_window_set_embedder (gtk_widget_get_window
(xww->widgetwindow_osr),
- gtk_widget_get_window (xv->widget));
- g_signal_connect (gtk_widget_get_window (xv->widget),
"pick-embedded-child",
- G_CALLBACK (offscreen_pick_embedded_child),
xww->widgetwindow_osr);
-
- g_signal_connect (gtk_widget_get_window (xww->widgetwindow_osr),
"from-embedder",
- G_CALLBACK (offscreen_from_embedder), NULL);
- g_signal_connect (gtk_widget_get_window (xww->widgetwindow_osr),
"to-embedder",
- G_CALLBACK (offscreen_to_embedder), NULL);
+ gdk_offscreen_window_set_embedder (gtk_widget_get_window
+ (xww->widgetwindow_osr),
+ gtk_widget_get_window (xv->widget));
+ g_signal_connect (gtk_widget_get_window (xv->widget),
+ "pick-embedded-child",
+ G_CALLBACK (offscreen_pick_embedded_child),
+ xww->widgetwindow_osr);
+
+ g_signal_connect (gtk_widget_get_window (xww->widgetwindow_osr),
+ "from-embedder", G_CALLBACK (offscreen_from_embedder),
+ NULL);
+ g_signal_connect (gtk_widget_get_window (xww->widgetwindow_osr),
+ "to-embedder", G_CALLBACK (offscreen_to_embedder),
+ NULL);
}
////////////////////////////////////////
@@ -976,69 +1086,87 @@ void
x_draw_xwidget_glyph_string (struct glyph_string *s)
{
/*
- this method is called by the redisplay engine and places the xwidget on
screen.
- moving and clipping is done here. also view init.
+ this method is called by the redisplay engine and places the xwidget on
screen.
+ moving and clipping is done here. also view init.
- */
+ */
struct xwidget *xww = s->xwidget;
- struct xwidget_view *xv = xwidget_view_lookup(xww, s->w);
- int clip_right; int clip_bottom; int clip_top; int clip_left;
+ struct xwidget_view *xv = xwidget_view_lookup (xww, s->w);
+ int clip_right;
+ int clip_bottom;
+ int clip_top;
+ int clip_left;
int x = s->x;
int y = s->y + (s->height / 2) - (xww->height / 2);
- int moved=0;
+ int moved = 0;
/* We do it here in the display loop because there is no other
time to know things like window placement etc.
- */
+ */
xv = xwidget_init_view (xww, s, x, y);
//calculate clipping, which is used for all manner of onscreen xwidget views
//each widget border can get clipped by other emacs objects so there are
four clipping variables
- clip_right = min (xww->width, WINDOW_RIGHT_EDGE_X (s->w) - x -
WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH(s->w) - WINDOW_RIGHT_FRINGE_WIDTH(s->w));
- clip_left = max (0, WINDOW_LEFT_EDGE_X (s->w) - x +
WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH(s->w) + WINDOW_LEFT_FRINGE_WIDTH(s->w));
-
- clip_bottom = min (xww->height, WINDOW_BOTTOM_EDGE_Y (s->w) -
WINDOW_MODE_LINE_HEIGHT (s->w) - y);
- clip_top = max(0, WINDOW_TOP_EDGE_Y(s->w) -y );
+ clip_right =
+ min (xww->width,
+ WINDOW_RIGHT_EDGE_X (s->w) - x -
+ WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH (s->w) -
+ WINDOW_RIGHT_FRINGE_WIDTH (s->w));
+ clip_left =
+ max (0,
+ WINDOW_LEFT_EDGE_X (s->w) - x +
+ WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH (s->w) +
+ WINDOW_LEFT_FRINGE_WIDTH (s->w));
+
+ clip_bottom =
+ min (xww->height,
+ WINDOW_BOTTOM_EDGE_Y (s->w) - WINDOW_MODE_LINE_HEIGHT (s->w) - y);
+ clip_top = max (0, WINDOW_TOP_EDGE_Y (s->w) - y);
//we are conserned with movement of the onscreen area. the area might sit
still when the widget actually moves
//this happens when an emacs window border moves across a widget window
//so, if any corner of the outer widget clippng window moves, that counts as
movement here, even
//if it looks like no movement happens because the widget sits still inside
the clipping area.
//the widget can also move inside the clipping area, which happens later
- moved = (xv->x + xv->clip_left != x+clip_left)
- || ((xv->y + xv->clip_top)!= (y+clip_top));
+ moved = (xv->x + xv->clip_left != x + clip_left)
+ || ((xv->y + xv->clip_top) != (y + clip_top));
xv->x = x;
xv->y = y;
- if (moved) //has it moved?
+ if (moved) //has it moved?
{
- if (1)//!xwidget_hidden(xv)) //hidden equals not being seen during
redisplay
- {
- //TODO should be possible to use xwidget_show_view here
- gtk_fixed_move (GTK_FIXED (FRAME_GTK_WIDGET (s->f)),
- xv->widgetwindow,
- x + clip_left, y + clip_top);
- }
+ if (1) //!xwidget_hidden(xv)) //hidden equals not
being seen during redisplay
+ {
+ //TODO should be possible to use xwidget_show_view here
+ gtk_fixed_move (GTK_FIXED (FRAME_GTK_WIDGET (s->f)),
+ xv->widgetwindow, x + clip_left, y + clip_top);
+ }
}
//clip the widget window if some parts happen to be outside drawable area
//an emacs window is not a gtk window, a gtk window covers the entire frame
//cliping might have changed even if we havent actualy moved, we try figure
out when we need to reclip for real
- if((xv->clip_right != clip_right)
- || (xv->clip_bottom != clip_bottom)
- || (xv->clip_top != clip_top)
- || (xv->clip_left != clip_left)){
- gtk_widget_set_size_request (xv->widgetwindow, clip_right + clip_left,
clip_bottom + clip_top);
- gtk_fixed_move(GTK_FIXED(xv->widgetwindow), xv->widget, -clip_left,
-clip_top);
-
- xv->clip_right = clip_right; xv->clip_bottom = clip_bottom; xv->clip_top =
clip_top;xv->clip_left = clip_left;
- }
+ if ((xv->clip_right != clip_right)
+ || (xv->clip_bottom != clip_bottom)
+ || (xv->clip_top != clip_top) || (xv->clip_left != clip_left))
+ {
+ gtk_widget_set_size_request (xv->widgetwindow, clip_right + clip_left,
+ clip_bottom + clip_top);
+ gtk_fixed_move (GTK_FIXED (xv->widgetwindow), xv->widget, -clip_left,
+ -clip_top);
+
+ xv->clip_right = clip_right;
+ xv->clip_bottom = clip_bottom;
+ xv->clip_top = clip_top;
+ xv->clip_left = clip_left;
+ }
//if emacs wants to repaint the area where the widget lives, queue a redraw
//TODO it seems its possible to get out of sync with emacs redraws so emacs
bg sometimes shows up instead of xwidget
//its just a visual glitch though
- if (!xwidget_hidden(xv)){
- gtk_widget_queue_draw (xv->widgetwindow);
- gtk_widget_queue_draw (xv->widget);
- }
+ if (!xwidget_hidden (xv))
+ {
+ gtk_widget_queue_draw (xv->widgetwindow);
+ gtk_widget_queue_draw (xv->widget);
+ }
}
@@ -1057,60 +1185,60 @@ x_draw_xwidget_glyph_string (struct glyph_string *s)
};
-DEFUN ("xwidget-webkit-goto-uri", Fxwidget_webkit_goto_uri,
Sxwidget_webkit_goto_uri,
- 2, 2, 0,
- doc: /* Make the webkit instance referenced by XWIDGET browse URI.
*/)
+DEFUN ("xwidget-webkit-goto-uri", Fxwidget_webkit_goto_uri,
Sxwidget_webkit_goto_uri, 2, 2, 0, doc: /* Make the webkit instance
referenced by XWIDGET browse URI. */
+ )
(Lisp_Object xwidget, Lisp_Object uri)
{
- WEBKIT_FN_INIT();
- CHECK_STRING(uri);
- webkit_web_view_load_uri ( WEBKIT_WEB_VIEW(xw->widget_osr), SSDATA(uri));
+ WEBKIT_FN_INIT ();
+ CHECK_STRING (uri);
+ webkit_web_view_load_uri (WEBKIT_WEB_VIEW (xw->widget_osr), SSDATA (uri));
return Qnil;
}
-DEFUN ("xwidget-webkit-execute-script", Fxwidget_webkit_execute_script,
Sxwidget_webkit_execute_script,
- 2, 2, 0,
- doc: /* webkit exec js.*/)
+DEFUN ("xwidget-webkit-execute-script", Fxwidget_webkit_execute_script,
Sxwidget_webkit_execute_script, 2, 2, 0, doc: /* webkit exec js. */
+ )
(Lisp_Object xwidget, Lisp_Object script)
{
- WEBKIT_FN_INIT();
- CHECK_STRING(script);
- webkit_web_view_execute_script( WEBKIT_WEB_VIEW(xw->widget_osr),
SSDATA(script));
+ WEBKIT_FN_INIT ();
+ CHECK_STRING (script);
+ webkit_web_view_execute_script (WEBKIT_WEB_VIEW (xw->widget_osr),
+ SSDATA (script));
return Qnil;
}
-DEFUN ("xwidget-webkit-get-title", Fxwidget_webkit_get_title,
Sxwidget_webkit_get_title,
- 1, 1, 0,
- doc: /* Get the title from the Webkit instance in XWIDGET.
- This can be used to work around the lack of a return value
from the exec method.
- */)
+DEFUN ("xwidget-webkit-get-title", Fxwidget_webkit_get_title,
Sxwidget_webkit_get_title, 1, 1, 0, doc: /* Get the title from the Webkit
instance in XWIDGET.
+
This can be used to work around the lack of a return
value from the exec method.
+
*/ )
(Lisp_Object xwidget)
{
//TODO support multibyte strings
- WEBKIT_FN_INIT();
- const gchar* str=webkit_web_view_get_title( WEBKIT_WEB_VIEW(xw->widget_osr));
+ WEBKIT_FN_INIT ();
+ const gchar *str =
+ webkit_web_view_get_title (WEBKIT_WEB_VIEW (xw->widget_osr));
//return make_string_from_bytes(str, wcslen((const wchar_t *)str),
strlen(str));
- if(str == 0){
- //TODO maybe return Qnil instead. I suppose webkit returns nullpointer
when doc is not properly loaded or something
- printf("xwidget-webkit-get-title null webkit title\n");
- return build_string("");
- }
- return build_string(str);
+ if (str == 0)
+ {
+ //TODO maybe return Qnil instead. I suppose webkit returns nullpointer
when doc is not properly loaded or something
+ printf ("xwidget-webkit-get-title null webkit title\n");
+ return build_string ("");
+ }
+ return build_string (str);
}
//TODO missnamed
-DEFUN ("xwidget-disable-plugin-for-mime", Fxwidget_disable_plugin_for_mime ,
Sxwidget_disable_plugin_for_mime,
- 1,1,0, doc: /* */)
+DEFUN ("xwidget-disable-plugin-for-mime", Fxwidget_disable_plugin_for_mime,
Sxwidget_disable_plugin_for_mime, 1, 1, 0, doc: /* */ )
(Lisp_Object mime)
{
WebKitWebPlugin *wp = webkit_web_plugin_database_get_plugin_for_mimetype
- (webkit_get_web_plugin_database(), SSDATA(mime));
- if(wp == NULL) return Qnil;
- if(webkit_web_plugin_get_enabled (wp)){
- webkit_web_plugin_set_enabled (wp, FALSE);
- return Qt;
- }
+ (webkit_get_web_plugin_database (), SSDATA (mime));
+ if (wp == NULL)
+ return Qnil;
+ if (webkit_web_plugin_get_enabled (wp))
+ {
+ webkit_web_plugin_set_enabled (wp, FALSE);
+ return Qt;
+ }
return Qnil;
}
@@ -1119,100 +1247,113 @@ DEFUN ("xwidget-disable-plugin-for-mime",
Fxwidget_disable_plugin_for_mime , Sxw
2 of the methods used from webkit are deprecated nowm and replacements
sought
*/
static void
-xwidget_webkit_dom_dump(WebKitDOMNode* parent)
+xwidget_webkit_dom_dump (WebKitDOMNode * parent)
{
- WebKitDOMNodeList* list;
+ WebKitDOMNodeList *list;
int length;
- WebKitDOMNode* attribute;
- WebKitDOMNamedNodeMap* attrs;
- WebKitDOMNode* child;
- printf("node:%d type:%d name:%s content:%s\n",
- parent,
- webkit_dom_node_get_node_type(parent),//1 element 3 text 8 comment 2
attribute
- webkit_dom_node_get_local_name(parent),
- webkit_dom_node_get_text_content(parent));
-
- if(webkit_dom_node_has_attributes(parent)){
- attrs = webkit_dom_node_get_attributes(parent);
-
- length = webkit_dom_named_node_map_get_length(attrs);
- for (int i = 0; i < length; i++) {
- attribute = webkit_dom_named_node_map_item(attrs,i);
- printf(" attr node:%d type:%d name:%s content:%s\n",
- attribute,
- webkit_dom_node_get_node_type(attribute),//1 element 3 text 8
comment
- webkit_dom_node_get_local_name(attribute),
- webkit_dom_node_get_text_content(attribute));
+ WebKitDOMNode *attribute;
+ WebKitDOMNamedNodeMap *attrs;
+ WebKitDOMNode *child;
+ printf ("node:%d type:%d name:%s content:%s\n", parent,
webkit_dom_node_get_node_type (parent), //1 element 3 text 8 comment 2
attribute
+ webkit_dom_node_get_local_name (parent),
+ webkit_dom_node_get_text_content (parent));
+
+ if (webkit_dom_node_has_attributes (parent))
+ {
+ attrs = webkit_dom_node_get_attributes (parent);
+
+ length = webkit_dom_named_node_map_get_length (attrs);
+ for (int i = 0; i < length; i++)
+ {
+ attribute = webkit_dom_named_node_map_item (attrs, i);
+ printf (" attr node:%d type:%d name:%s content:%s\n", attribute,
webkit_dom_node_get_node_type (attribute), //1 element 3 text 8 comment
+ webkit_dom_node_get_local_name (attribute),
+ webkit_dom_node_get_text_content (attribute));
+ }
}
- }
- list = webkit_dom_node_get_child_nodes(parent);
- length = webkit_dom_node_list_get_length(list);
+ list = webkit_dom_node_get_child_nodes (parent);
+ length = webkit_dom_node_list_get_length (list);
- for (int i = 0; i < length; i++) {
- child = webkit_dom_node_list_item(list, i);
- //if(webkit_dom_node_has_child_nodes(child))
- xwidget_webkit_dom_dump(child);
- }
+ for (int i = 0; i < length; i++)
+ {
+ child = webkit_dom_node_list_item (list, i);
+ //if(webkit_dom_node_has_child_nodes(child))
+ xwidget_webkit_dom_dump (child);
+ }
}
-DEFUN ("xwidget-webkit-dom-dump", Fxwidget_webkit_dom_dump,
Sxwidget_webkit_dom_dump,
- 1, 1, 0,
- doc: /*Dump the DOM contained in the webkit instance in XWIDGET.*/)
+DEFUN ("xwidget-webkit-dom-dump", Fxwidget_webkit_dom_dump,
Sxwidget_webkit_dom_dump, 1, 1, 0, doc: /*Dump the DOM contained in the
webkit instance in XWIDGET. */
+ )
(Lisp_Object xwidget)
{
- WEBKIT_FN_INIT();
- xwidget_webkit_dom_dump(WEBKIT_DOM_NODE(webkit_web_view_get_dom_document(
WEBKIT_WEB_VIEW(xw->widget_osr))));
+ WEBKIT_FN_INIT ();
+ xwidget_webkit_dom_dump (WEBKIT_DOM_NODE
+ (webkit_web_view_get_dom_document
+ (WEBKIT_WEB_VIEW (xw->widget_osr))));
return Qnil;
}
-#endif /* HAVE_XLXW_DOMDUMP */
+#endif /* HAVE_XLXW_DOMDUMP */
-#endif /* HAVE_WEBKIT_OSR */
+#endif /* HAVE_WEBKIT_OSR */
DEFUN ("xwidget-resize", Fxwidget_resize, Sxwidget_resize, 3, 3, 0, doc:
/* Resize XWIDGET.
NEW_WIDTH NEW_HEIGHT defines the new size.)
- */)
+ */ )
(Lisp_Object xwidget, Lisp_Object new_width, Lisp_Object new_height)
{
CHECK_XWIDGET (xwidget);
- struct xwidget* xw = XXWIDGET(xwidget);
+ struct xwidget *xw = XXWIDGET (xwidget);
struct xwidget_view *xv;
- int w, h;
+ int w, h;
CHECK_NUMBER (new_width);
CHECK_NUMBER (new_height);
w = XFASTINT (new_width);
h = XFASTINT (new_height);
- xw->width=w;
- xw->height=h;
+ xw->width = w;
+ xw->height = h;
//if theres a osr resize it 1st
- if(xw->widget_osr){
- gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width,
xw->height); //minimum size
- //gtk_window_resize( GTK_WINDOW(xw->widget_osr), xw->width, xw->height);
- gtk_window_resize( GTK_WINDOW(xw->widgetwindow_osr), xw->width,
xw->height);
- gtk_window_resize( GTK_WINDOW(xw->widgetscrolledwindow_osr), xw->width,
xw->height);
-
gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(xw->widgetscrolledwindow_osr
),xw->height);
-
gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(xw->widgetscrolledwindow_osr
),xw->width);
-
- //gtk_container_resize_children ( GTK_WINDOW(xw->widgetwindow_osr));
- gtk_container_resize_children (GTK_CONTAINER(xw->widgetwindow_osr));
+ if (xw->widget_osr)
+ {
+ gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width,
xw->height); //minimum size
+ //gtk_window_resize( GTK_WINDOW(xw->widget_osr), xw->width,
xw->height);
+ gtk_window_resize (GTK_WINDOW (xw->widgetwindow_osr), xw->width,
+ xw->height);
+ gtk_window_resize (GTK_WINDOW (xw->widgetscrolledwindow_osr), xw->width,
+ xw->height);
+ gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW
+ (xw->
+ widgetscrolledwindow_osr),
+ xw->height);
+ gtk_scrolled_window_set_min_content_width (GTK_SCROLLED_WINDOW
+ (xw->
+ widgetscrolledwindow_osr),
+ xw->width);
+
+ //gtk_container_resize_children ( GTK_WINDOW(xw->widgetwindow_osr));
+ gtk_container_resize_children (GTK_CONTAINER (xw->widgetwindow_osr));
- }
+ }
- for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR
(tail)) //TODO MVC refactor lazy linear search
+ for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR
(tail)) //TODO MVC refactor lazy linear search
{
- if (XWIDGET_VIEW_P (XCAR (tail))) {
- xv = XXWIDGET_VIEW (XCAR (tail));
- if(XXWIDGET (xv->model) == xw) {
- gtk_layout_set_size (GTK_LAYOUT (xv->widgetwindow), xw->width,
xw->height);
- gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xw->width,
xw->height);
- }
- }
+ if (XWIDGET_VIEW_P (XCAR (tail)))
+ {
+ xv = XXWIDGET_VIEW (XCAR (tail));
+ if (XXWIDGET (xv->model) == xw)
+ {
+ gtk_layout_set_size (GTK_LAYOUT (xv->widgetwindow), xw->width,
+ xw->height);
+ gtk_widget_set_size_request (GTK_WIDGET (xv->widget), xw->width,
+ xw->height);
+ }
+ }
}
return Qnil;
@@ -1221,29 +1362,42 @@ DEFUN ("xwidget-resize", Fxwidget_resize,
Sxwidget_resize, 3, 3, 0, doc:
DEFUN ("xwidget-set-adjustment", Fxwidget_set_adjustment,
Sxwidget_set_adjustment, 4, 4, 0, doc:
- /* set scrolling */)
- (Lisp_Object xwidget, Lisp_Object axis, Lisp_Object relative, Lisp_Object
value)
+ /* set scrolling */
+)
+ (Lisp_Object xwidget, Lisp_Object axis, Lisp_Object relative,
+ Lisp_Object value)
{
CHECK_XWIDGET (xwidget);
- struct xwidget* xw = XXWIDGET(xwidget);
- GtkAdjustment* adjustment;
- float final_value=0.0;
-
- adjustment =
gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(xw->widgetscrolledwindow_osr));
- if(EQ(Qvertical, axis)){
- adjustment =
gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(xw->widgetscrolledwindow_osr));
- }
- if(EQ(Qhorizontal, axis)){
- adjustment =
gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(xw->widgetscrolledwindow_osr));
- }
-
- if(EQ(Qt, relative)){
- final_value=gtk_adjustment_get_value(adjustment)+XFASTINT(value);
- }else{
- final_value=0.0+XFASTINT(value);
- }
-
- gtk_adjustment_set_value(adjustment, final_value);
+ struct xwidget *xw = XXWIDGET (xwidget);
+ GtkAdjustment *adjustment;
+ float final_value = 0.0;
+
+ adjustment =
+ gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW
+ (xw->widgetscrolledwindow_osr));
+ if (EQ (Qvertical, axis))
+ {
+ adjustment =
+ gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW
+ (xw->widgetscrolledwindow_osr));
+ }
+ if (EQ (Qhorizontal, axis))
+ {
+ adjustment =
+ gtk_scrolled_window_get_hadjustment (GTK_SCROLLED_WINDOW
+ (xw->widgetscrolledwindow_osr));
+ }
+
+ if (EQ (Qt, relative))
+ {
+ final_value = gtk_adjustment_get_value (adjustment) + XFASTINT (value);
+ }
+ else
+ {
+ final_value = 0.0 + XFASTINT (value);
+ }
+
+ gtk_adjustment_set_value (adjustment, final_value);
return Qnil;
}
@@ -1252,59 +1406,60 @@ DEFUN ("xwidget-set-adjustment",
Fxwidget_set_adjustment, Sxwidget_set_adjustmen
DEFUN ("xwidget-size-request", Fxwidget_size_request, Sxwidget_size_request,
1, 1, 0, doc:
/* Desired size of the XWIDGET.
- This can be used to read the xwidget desired size, and resizes the Emacs
allocated area accordingly.
+ This can be used to read the xwidget desired size, and resizes the
Emacs allocated area accordingly.
-(TODO crashes if arg not osr widget)*/)
+ (TODO crashes if arg not osr widget) */
+)
(Lisp_Object xwidget)
{
CHECK_XWIDGET (xwidget);
GtkRequisition requisition;
Lisp_Object rv;
- gtk_widget_size_request(XXWIDGET(xwidget)->widget_osr, &requisition);
+ gtk_widget_size_request (XXWIDGET (xwidget)->widget_osr, &requisition);
rv = Qnil;
- rv = Fcons (make_number(requisition.height), rv);
- rv = Fcons (make_number(requisition.width), rv);
+ rv = Fcons (make_number (requisition.height), rv);
+ rv = Fcons (make_number (requisition.width), rv);
return rv;
}
-DEFUN ("xwidgetp", Fxwidgetp, Sxwidgetp, 1, 1, 0,
- doc: /* Return t if OBJECT is a xwidget. */)
+DEFUN ("xwidgetp", Fxwidgetp, Sxwidgetp, 1, 1, 0, doc: /* Return t if OBJECT
is a xwidget. */
+ )
(Lisp_Object object)
{
return XWIDGETP (object) ? Qt : Qnil;
}
-DEFUN ("xwidget-view-p", Fxwidget_view_p, Sxwidget_view_p, 1, 1, 0,
- doc: /* Return t if OBJECT is a xwidget-view. */)
+DEFUN ("xwidget-view-p", Fxwidget_view_p, Sxwidget_view_p, 1, 1, 0, doc:/*
Return t if OBJECT is a xwidget-view. */
+ )
(Lisp_Object object)
{
return XWIDGET_VIEW_P (object) ? Qt : Qnil;
}
-DEFUN ("xwidget-info", Fxwidget_info , Sxwidget_info, 1,1,0,
- doc: /* Get XWIDGET properties.
- Currently type, title, width, height.*/)
+DEFUN ("xwidget-info", Fxwidget_info, Sxwidget_info, 1, 1, 0, doc: /* Get
XWIDGET properties.
+
Currently type, title, width, height. */ )
(Lisp_Object xwidget)
{
CHECK_XWIDGET (xwidget);
Lisp_Object info, n;
- struct xwidget* xw = XXWIDGET(xwidget);
+ struct xwidget *xw = XXWIDGET (xwidget);
info = Fmake_vector (make_number (4), Qnil);
ASET (info, 0, xw->type);
ASET (info, 1, xw->title);
- XSETFASTINT(n, xw->width);
+ XSETFASTINT (n, xw->width);
ASET (info, 2, n);
- XSETFASTINT(n, xw->height);
+ XSETFASTINT (n, xw->height);
ASET (info, 3, n);
return info;
}
-DEFUN ("xwidget-view-info", Fxwidget_view_info , Sxwidget_view_info, 1, 1, 0,
doc:
+DEFUN ("xwidget-view-info", Fxwidget_view_info, Sxwidget_view_info, 1, 1, 0,
doc:
/* Get XWIDGET-VIEW properties.
- Currently x,y clip right, clip bottom, clip top, clip left*/)
+ Currently x,y clip right, clip bottom, clip top, clip left */
+)
(Lisp_Object xwidget_view)
{
CHECK_XWIDGET_VIEW (xwidget_view);
@@ -1312,55 +1467,53 @@ DEFUN ("xwidget-view-info", Fxwidget_view_info ,
Sxwidget_view_info, 1, 1, 0, do
Lisp_Object info;
info = Fmake_vector (make_number (6), Qnil);
- ASET (info, 0, make_number(xv->x));
- ASET (info, 1, make_number(xv->y));
- ASET (info, 2, make_number(xv->clip_right));
- ASET (info, 3, make_number(xv->clip_bottom));
- ASET (info, 4, make_number(xv->clip_top));
- ASET (info, 5, make_number(xv->clip_left));
+ ASET (info, 0, make_number (xv->x));
+ ASET (info, 1, make_number (xv->y));
+ ASET (info, 2, make_number (xv->clip_right));
+ ASET (info, 3, make_number (xv->clip_bottom));
+ ASET (info, 4, make_number (xv->clip_top));
+ ASET (info, 5, make_number (xv->clip_left));
return info;
}
-DEFUN ("xwidget-view-model", Fxwidget_view_model, Sxwidget_view_model,
- 1, 1, 0,
- doc: /* Get XWIDGET-VIEW model. */)
+DEFUN ("xwidget-view-model", Fxwidget_view_model, Sxwidget_view_model, 1, 1,
0, doc: /* Get XWIDGET-VIEW model. */
+ )
(Lisp_Object xwidget_view)
{
CHECK_XWIDGET_VIEW (xwidget_view);
return XXWIDGET_VIEW (xwidget_view)->model;
}
-DEFUN ("xwidget-view-window", Fxwidget_view_window, Sxwidget_view_window,
- 1, 1, 0,
- doc: /* Get XWIDGET-VIEW window. */)
+DEFUN ("xwidget-view-window", Fxwidget_view_window, Sxwidget_view_window, 1,
1, 0, doc:/* Get XWIDGET-VIEW window. */
+ )
(Lisp_Object xwidget_view)
{
CHECK_XWIDGET_VIEW (xwidget_view);
return XXWIDGET_VIEW (xwidget_view)->w;
}
-DEFUN ("xwidget-send-keyboard-event", Fxwidget_send_keyboard_event,
Sxwidget_send_keyboard_event, 2, 2, 0,
- doc:/* Synthesize a kbd event for XWIDGET. TODO crashes atm.. */
- )
- (Lisp_Object xwidget, Lisp_Object keydescriptor)
+DEFUN ("xwidget-send-keyboard-event", Fxwidget_send_keyboard_event,
Sxwidget_send_keyboard_event, 2, 2, 0, doc:/* Synthesize a kbd event for
XWIDGET. TODO crashes atm.. */
+)(Lisp_Object xwidget,
+ Lisp_Object keydescriptor)
{
//TODO this code crashes for offscreen widgets and ive tried many different
strategies
//int keyval = 0x058; //X
- int keyval = XFASTINT(keydescriptor); //X
- GdkKeymapKey* keys;
+ int keyval = XFASTINT (keydescriptor); //X
+ GdkKeymapKey *keys;
gint n_keys;
- GdkDeviceManager* manager;
+ GdkDeviceManager *manager;
struct xwidget *xw;
- GtkWidget* widget;
- GdkEventKey* ev;
+ GtkWidget *widget;
+ GdkEventKey *ev;
Lisp_Object window;
//popup_activated_flag = 1; //TODO just a hack
- gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), keyval, &keys,
&n_keys);
+ gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), keyval, &keys,
+ &n_keys);
- xw = XXWIDGET(xwidget);
+ xw = XXWIDGET (xwidget);
- ev = (GdkEventKey*)gdk_event_new(GDK_KEY_PRESS);
+ ev = (GdkEventKey *) gdk_event_new (GDK_KEY_PRESS);
//todo what about windowless widgets?
@@ -1369,13 +1522,13 @@ DEFUN ("xwidget-send-keyboard-event",
Fxwidget_send_keyboard_event, Sxwidget_sen
//TODO maybe we also need to special case sockets by picking up the plug
rather than the socket
- if(xw->widget_osr)
+ if (xw->widget_osr)
widget = xw->widget_osr;
else
- widget = xwidget_view_lookup(xw, XWINDOW(window))->widget;
+ widget = xwidget_view_lookup (xw, XWINDOW (window))->widget;
- ev->window = gtk_widget_get_window(widget);
- gtk_widget_grab_focus(widget);
+ ev->window = gtk_widget_get_window (widget);
+ gtk_widget_grab_focus (widget);
ev->send_event = FALSE;
ev->hardware_keycode = keys[0].keycode;
@@ -1385,13 +1538,15 @@ DEFUN ("xwidget-send-keyboard-event",
Fxwidget_send_keyboard_event, Sxwidget_sen
ev->time = GDK_CURRENT_TIME;
//ev->device = gdk_device_get_core_pointer();
- manager = gdk_display_get_device_manager(gdk_window_get_display(ev->window));
- gdk_event_set_device ((GdkEvent*)ev,
gdk_device_manager_get_client_pointer(manager));
- gdk_event_put((GdkEvent*)ev);
+ manager =
+ gdk_display_get_device_manager (gdk_window_get_display (ev->window));
+ gdk_event_set_device ((GdkEvent *) ev,
+ gdk_device_manager_get_client_pointer (manager));
+ gdk_event_put ((GdkEvent *) ev);
//g_signal_emit_by_name(ev->window,"key-press-event", ev);
ev->type = GDK_KEY_RELEASE;
- gdk_event_put((GdkEvent*)ev);
+ gdk_event_put ((GdkEvent *) ev);
//g_signal_emit_by_name(ev->window,"key-release-event", ev);
//gtk_main_do_event(ev);
@@ -1404,44 +1559,42 @@ DEFUN ("xwidget-send-keyboard-event",
Fxwidget_send_keyboard_event, Sxwidget_sen
return Qnil;
}
-DEFUN ("delete-xwidget-view", Fdelete_xwidget_view, Sdelete_xwidget_view,
- 1, 1, 0,
- doc: /* Delete the XWIDGET-VIEW. */)
+DEFUN ("delete-xwidget-view", Fdelete_xwidget_view, Sdelete_xwidget_view, 1,
1, 0, doc:/* Delete the XWIDGET-VIEW. */
+ )
(Lisp_Object xwidget_view)
{
CHECK_XWIDGET_VIEW (xwidget_view);
struct xwidget_view *xv = XXWIDGET_VIEW (xwidget_view);
- gtk_widget_destroy(xv->widgetwindow);
+ gtk_widget_destroy (xv->widgetwindow);
Vxwidget_view_list = Fdelq (xwidget_view, Vxwidget_view_list);
return Qnil;
}
-DEFUN ("xwidget-view-lookup", Fxwidget_view_lookup, Sxwidget_view_lookup,
- 1, 2, 0,
- doc: /* Return the xwidget-view associated to XWIDGET in
-WINDOW if specified, otherwise it uses the selected window. */)
+DEFUN ("xwidget-view-lookup", Fxwidget_view_lookup, Sxwidget_view_lookup, 1,
2, 0, doc:/* Return the xwidget-view associated to XWIDGET in
+
WINDOW if specified, otherwise it uses the selected window. */
+)
(Lisp_Object xwidget, Lisp_Object window)
{
CHECK_XWIDGET (xwidget);
if (NILP (window))
- window = Fselected_window();
+ window = Fselected_window ();
CHECK_WINDOW (window);
- for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail))
+ for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail);
+ tail = XCDR (tail))
{
Lisp_Object xwidget_view = XCAR (tail);
if (EQ (Fxwidget_view_model (xwidget_view), xwidget)
- && EQ (Fxwidget_view_window (xwidget_view), window))
- return xwidget_view;
+ && EQ (Fxwidget_view_window (xwidget_view), window))
+ return xwidget_view;
}
return Qnil;
}
-DEFUN ("set-frame-visible", Fset_frame_visible, Sset_frame_visible,
- 2, 2, 0,
- doc: /* HACKY */)
+DEFUN ("set-frame-visible", Fset_frame_visible, Sset_frame_visible, 2, 2, 0,
doc: /* HACKY */
+ )
(Lisp_Object frame, Lisp_Object flag)
{
CHECK_FRAME (frame);
@@ -1450,27 +1603,24 @@ DEFUN ("set-frame-visible", Fset_frame_visible,
Sset_frame_visible,
return flag;
}
-DEFUN ("xwidget-plist", Fxwidget_plist, Sxwidget_plist,
- 1, 1, 0,
- doc: /* Return the plist of XWIDGET. */)
+DEFUN ("xwidget-plist", Fxwidget_plist, Sxwidget_plist, 1, 1, 0, doc: /*
Return the plist of XWIDGET. */
+ )
(register Lisp_Object xwidget)
{
CHECK_XWIDGET (xwidget);
return XXWIDGET (xwidget)->plist;
}
-DEFUN ("xwidget-buffer", Fxwidget_buffer, Sxwidget_buffer,
- 1, 1, 0,
- doc: /* Return the buffer of XWIDGET. */)
+DEFUN ("xwidget-buffer", Fxwidget_buffer, Sxwidget_buffer, 1, 1, 0, doc:/*
Return the buffer of XWIDGET. */
+ )
(register Lisp_Object xwidget)
{
CHECK_XWIDGET (xwidget);
return XXWIDGET (xwidget)->buffer;
}
-DEFUN ("set-xwidget-plist", Fset_xwidget_plist, Sset_xwidget_plist,
- 2, 2, 0,
- doc: /* Replace the plist of XWIDGET with PLIST. Returns PLIST. */)
+DEFUN ("set-xwidget-plist", Fset_xwidget_plist, Sset_xwidget_plist, 2, 2, 0,
doc: /* Replace the plist of XWIDGET with PLIST. Returns PLIST. */
+ )
(register Lisp_Object xwidget, Lisp_Object plist)
{
CHECK_XWIDGET (xwidget);
@@ -1480,13 +1630,12 @@ DEFUN ("set-xwidget-plist", Fset_xwidget_plist,
Sset_xwidget_plist,
return plist;
}
-DEFUN ("set-xwidget-query-on-exit-flag",
- Fset_xwidget_query_on_exit_flag, Sset_xwidget_query_on_exit_flag,
- 2, 2, 0,
- doc: /* Specify if query is needed for XWIDGET when Emacs is
-exited. If the second argument FLAG is non-nil, Emacs will query the
-user before exiting or killing a buffer if XWIDGET is running. This
-function returns FLAG. */)
+DEFUN ("set-xwidget-query-on-exit-flag", Fset_xwidget_query_on_exit_flag,
Sset_xwidget_query_on_exit_flag, 2, 2, 0, doc:
+
/* Specify if query is needed for
XWIDGET when Emacs is
+
exited. If the second argument FLAG
is non-nil, Emacs will query the
+
user before exiting or killing a
buffer if XWIDGET is running. This
+
function returns FLAG. */
+)
(Lisp_Object xwidget, Lisp_Object flag)
{
CHECK_XWIDGET (xwidget);
@@ -1494,10 +1643,8 @@ function returns FLAG. */)
return flag;
}
-DEFUN ("xwidget-query-on-exit-flag",
- Fxwidget_query_on_exit_flag, Sxwidget_query_on_exit_flag,
- 1, 1, 0,
- doc: /* Return the current value of query-on-exit flag for XWIDGET. */)
+DEFUN ("xwidget-query-on-exit-flag", Fxwidget_query_on_exit_flag,
Sxwidget_query_on_exit_flag, 1, 1, 0, doc: /* Return the current value of
query-on-exit flag for XWIDGET. */
+ )
(Lisp_Object xwidget)
{
CHECK_XWIDGET (xwidget);
@@ -1524,23 +1671,23 @@ syms_of_xwidget (void)
defsubr (&Sset_xwidget_query_on_exit_flag);
defsubr (&Sset_frame_visible);
- #ifdef HAVE_WEBKIT_OSR
+#ifdef HAVE_WEBKIT_OSR
defsubr (&Sxwidget_webkit_goto_uri);
defsubr (&Sxwidget_webkit_execute_script);
defsubr (&Sxwidget_webkit_get_title);
DEFSYM (Qwebkit_osr, "webkit-osr");
- #endif
+#endif
- defsubr (&Sxwgir_xwidget_call_method );
+ defsubr (&Sxwgir_xwidget_call_method);
defsubr (&Sxwgir_require_namespace);
- defsubr (&Sxwidget_size_request );
+ defsubr (&Sxwidget_size_request);
defsubr (&Sdelete_xwidget_view);
defsubr (&Sxwidget_disable_plugin_for_mime);
defsubr (&Sxwidget_send_keyboard_event);
- #ifdef HAVE_XLXW_DOMDUMP
+#ifdef HAVE_XLXW_DOMDUMP
defsubr (&Sxwidget_webkit_dom_dump);
- #endif
+#endif
defsubr (&Sxwidget_plist);
defsubr (&Sxwidget_buffer);
@@ -1556,7 +1703,7 @@ syms_of_xwidget (void)
/* Do not forget to update the docstring of make-xwidget if you add
new types. */
- DEFSYM (Qbutton, "Button"); //changed to match the gtk class because
xwgir(experimental and not really needed)
+ DEFSYM (Qbutton, "Button"); //changed to match the gtk class because
xwgir(experimental and not really needed)
DEFSYM (Qtoggle, "ToggleButton");
DEFSYM (Qslider, "slider");
DEFSYM (Qsocket, "socket");
@@ -1568,10 +1715,12 @@ syms_of_xwidget (void)
DEFSYM (QCplist, ":plist");
- DEFVAR_LISP ("xwidget-list", Vxwidget_list, doc: /*xwidgets list*/);
+ DEFVAR_LISP ("xwidget-list", Vxwidget_list,
+ doc: /* xwidgets list. */);
Vxwidget_list = Qnil;
- DEFVAR_LISP ("xwidget-view-list", Vxwidget_view_list, doc: /*xwidget views
list*/);
+ DEFVAR_LISP ("xwidget-view-list", Vxwidget_view_list,
+ doc: /* xwidget views list. */);
Vxwidget_view_list = Qnil;
Fprovide (intern ("xwidget-internal"), Qnil);
@@ -1620,8 +1769,7 @@ valid_xwidget_spec_p (Lisp_Object object)
/* find a value associated with key in spec */
Lisp_Object
-xwidget_spec_value ( Lisp_Object spec, Lisp_Object key,
- int *found)
+xwidget_spec_value (Lisp_Object spec, Lisp_Object key, int *found)
{
Lisp_Object tail;
@@ -1631,11 +1779,11 @@ xwidget_spec_value ( Lisp_Object spec, Lisp_Object key,
CONSP (tail) && CONSP (XCDR (tail)); tail = XCDR (XCDR (tail)))
{
if (EQ (XCAR (tail), key))
- {
- if (found)
- *found = 1;
- return XCAR (XCDR (tail));
- }
+ {
+ if (found)
+ *found = 1;
+ return XCAR (XCDR (tail));
+ }
}
if (found)
@@ -1647,21 +1795,24 @@ xwidget_spec_value ( Lisp_Object spec, Lisp_Object key,
void
xwidget_view_delete_all_in_window (struct window *w)
{
- struct xwidget_view* xv = NULL;
- for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail))
+ struct xwidget_view *xv = NULL;
+ for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail);
+ tail = XCDR (tail))
{
- if (XWIDGET_VIEW_P (XCAR (tail))) {
- xv = XXWIDGET_VIEW (XCAR (tail));
- if(XWINDOW (xv->w) == w) {
- gtk_widget_destroy(xv->widgetwindow);
- Vxwidget_view_list = Fdelq (XCAR (tail), Vxwidget_view_list);
- }
- }
+ if (XWIDGET_VIEW_P (XCAR (tail)))
+ {
+ xv = XXWIDGET_VIEW (XCAR (tail));
+ if (XWINDOW (xv->w) == w)
+ {
+ gtk_widget_destroy (xv->widgetwindow);
+ Vxwidget_view_list = Fdelq (XCAR (tail), Vxwidget_view_list);
+ }
+ }
}
}
-struct xwidget_view*
-xwidget_view_lookup (struct xwidget* xw, struct window *w)
+struct xwidget_view *
+xwidget_view_lookup (struct xwidget *xw, struct window *w)
{
Lisp_Object xwidget, window, ret;
XSETXWIDGET (xwidget, xw);
@@ -1672,8 +1823,8 @@ xwidget_view_lookup (struct xwidget* xw, struct window *w)
return EQ (ret, Qnil) ? NULL : XXWIDGET_VIEW (ret);
}
-struct xwidget*
-lookup_xwidget (Lisp_Object spec)
+struct xwidget *
+lookup_xwidget (Lisp_Object spec)
{
/* When a xwidget lisp spec is found initialize the C struct that is used in
the C code.
This is done by redisplay so values change if the spec changes.
@@ -1681,13 +1832,13 @@ lookup_xwidget (Lisp_Object spec)
TODO remove xwidget init from display spec. simply store an xwidget
reference only and set
size etc when creating the xwidget, which should happen before insertion
into buffer
- */
+ */
int found = 0;
Lisp_Object value;
struct xwidget *xw;
value = xwidget_spec_value (spec, QCxwidget, &found);
- xw = XXWIDGET(value);
+ xw = XXWIDGET (value);
return xw;
}
@@ -1696,10 +1847,11 @@ lookup_xwidget (Lisp_Object spec)
void
xwidget_start_redisplay (void)
{
- for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail))
+ for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail);
+ tail = XCDR (tail))
{
if (XWIDGET_VIEW_P (XCAR (tail)))
- XXWIDGET_VIEW (XCAR (tail))->redisplayed = 0;
+ XXWIDGET_VIEW (XCAR (tail))->redisplayed = 0;
}
}
@@ -1713,7 +1865,7 @@ xwidget_touch (struct xwidget_view *xv)
static int
xwidget_touched (struct xwidget_view *xv)
{
- return xv->redisplayed;
+ return xv->redisplayed;
}
/* redisplay has ended, now we should hide untouched xwidgets
@@ -1740,40 +1892,43 @@ xwidget_end_redisplay (struct window *w, struct
glyph_matrix *matrix)
struct glyph_row *row;
row = MATRIX_ROW (matrix, i);
if (row->enabled_p != 0)
- {
- for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
- {
- struct glyph *glyph = row->glyphs[area];
- struct glyph *glyph_end = glyph + row->used[area];
- for (; glyph < glyph_end; ++glyph)
- {
- if (glyph->type == XWIDGET_GLYPH)
- {
- /*
- the only call to xwidget_end_redisplay is in dispnew
- xwidget_end_redisplay(w->current_matrix);
- */
- xwidget_touch (xwidget_view_lookup(glyph->u.xwidget,
- w));
- }
- }
- }
- }
+ {
+ for (area = LEFT_MARGIN_AREA; area < LAST_AREA; ++area)
+ {
+ struct glyph *glyph = row->glyphs[area];
+ struct glyph *glyph_end = glyph + row->used[area];
+ for (; glyph < glyph_end; ++glyph)
+ {
+ if (glyph->type == XWIDGET_GLYPH)
+ {
+ /*
+ the only call to xwidget_end_redisplay is in dispnew
+ xwidget_end_redisplay(w->current_matrix);
+ */
+ xwidget_touch (xwidget_view_lookup (glyph->u.xwidget,
+ w));
+ }
+ }
+ }
+ }
}
- for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail); tail = XCDR (tail))
+ for (Lisp_Object tail = Vxwidget_view_list; CONSP (tail);
+ tail = XCDR (tail))
{
- if (XWIDGET_VIEW_P (XCAR (tail))) {
- struct xwidget_view* xv = XXWIDGET_VIEW (XCAR (tail));
-
- //"touched" is only meaningful for the current window, so disregard
other views
- if (XWINDOW (xv->w) == w) {
- if (xwidget_touched(xv))
- xwidget_show_view (xv);
- else
- xwidget_hide_view (xv);
- }
- }
+ if (XWIDGET_VIEW_P (XCAR (tail)))
+ {
+ struct xwidget_view *xv = XXWIDGET_VIEW (XCAR (tail));
+
+ //"touched" is only meaningful for the current window, so disregard
other views
+ if (XWINDOW (xv->w) == w)
+ {
+ if (xwidget_touched (xv))
+ xwidget_show_view (xv);
+ else
+ xwidget_hide_view (xv);
+ }
+ }
}
}
@@ -1788,15 +1943,15 @@ kill_buffer_xwidgets (Lisp_Object buffer)
Vxwidget_list = Fdelq (xwidget, Vxwidget_list);
/* TODO free the GTK things in xw */
{
- CHECK_XWIDGET (xwidget);
- struct xwidget *xw = XXWIDGET (xwidget);
- if (xw->widget_osr && xw->widgetwindow_osr)
- {
- gtk_widget_destroy(xw->widget_osr);
- gtk_widget_destroy(xw->widgetwindow_osr);
- }
+ CHECK_XWIDGET (xwidget);
+ struct xwidget *xw = XXWIDGET (xwidget);
+ if (xw->widget_osr && xw->widgetwindow_osr)
+ {
+ gtk_widget_destroy (xw->widget_osr);
+ gtk_widget_destroy (xw->widgetwindow_osr);
+ }
}
}
}
-#endif /* HAVE_XWIDGETS */
+#endif /* HAVE_XWIDGETS */
diff --git a/src/xwidget.h b/src/xwidget.h
index 3431750..dcce0ea 100644
--- a/src/xwidget.h
+++ b/src/xwidget.h
@@ -7,7 +7,7 @@ void syms_of_xwidget (void);
//extern Lisp_Object Qxwidget;
-int valid_xwidget_spec_p (Lisp_Object object) ;
+int valid_xwidget_spec_p (Lisp_Object object);
#include <gtk/gtk.h>
@@ -19,12 +19,13 @@ lisp pseudovector.
*/
-struct xwidget{
+struct xwidget
+{
struct vectorlike_header header;
- Lisp_Object plist;//auxilliary data
- Lisp_Object type;//the widget type
- Lisp_Object buffer; //buffer where xwidget lives
- Lisp_Object title;//a title that is used for button labels for instance
+ Lisp_Object plist; //auxilliary data
+ Lisp_Object type; //the widget type
+ Lisp_Object buffer; //buffer where xwidget lives
+ Lisp_Object title; //a title that is used for button labels for
instance
//here ends the lisp part.
//"height" is the marker field
@@ -32,33 +33,38 @@ struct xwidget{
int width;
//for offscreen widgets, unused if not osr
- GtkWidget* widget_osr;
- GtkWidget* widgetwindow_osr;
+ GtkWidget *widget_osr;
+ GtkWidget *widgetwindow_osr;
//this is used if the widget (webkit) is to be wrapped in a scrolled window,
- GtkWidget* widgetscrolledwindow_osr;
+ GtkWidget *widgetscrolledwindow_osr;
/* Non-nil means kill silently if Emacs is exited. */
- unsigned int kill_without_query : 1;
+ unsigned int kill_without_query:1;
};
//struct for each xwidget view
-struct xwidget_view {
+struct xwidget_view
+{
struct vectorlike_header header;
Lisp_Object model;
Lisp_Object w;
//here ends the lisp part.
//"redisplayed" is the marker field
- int redisplayed; //if touched by redisplay
+ int redisplayed; //if touched by redisplay
- int hidden;//if the "live" instance isnt drawn
+ int hidden; //if the "live" instance isnt drawn
- GtkWidget* widget;
- GtkWidget* widgetwindow;
- GtkWidget* emacswindow;
- int x; int y;
- int clip_right; int clip_bottom; int clip_top; int clip_left;
+ GtkWidget *widget;
+ GtkWidget *widgetwindow;
+ GtkWidget *emacswindow;
+ int x;
+ int y;
+ int clip_right;
+ int clip_bottom;
+ int clip_top;
+ int clip_left;
long handler_id;
@@ -87,28 +93,28 @@ struct xwidget_type
/* Check that SPEC is a valid image specification for the given
image type. Value is non-zero if SPEC is valid. */
- int (* valid_p) (Lisp_Object spec);
+ int (*valid_p) (Lisp_Object spec);
/* Next in list of all supported image types. */
struct xwidget_type *next;
};
-struct xwidget* xwidget_from_id(int id);
+struct xwidget *xwidget_from_id (int id);
//extern int xwidget_owns_kbd;
-void xwidget_start_redisplay(void);
+void xwidget_start_redisplay (void);
void xwidget_end_redisplay (struct window *w, struct glyph_matrix *matrix);
void xwidget_touch (struct xwidget_view *xw);
//void assert_valid_xwidget_id(int id,char *str);
-struct xwidget* lookup_xwidget (Lisp_Object spec);
+struct xwidget *lookup_xwidget (Lisp_Object spec);
#define XG_XWIDGET "emacs_xwidget"
#define XG_XWIDGET_VIEW "emacs_xwidget_view"
-void xwidget_view_delete_all_in_window( struct window *w );
+void xwidget_view_delete_all_in_window (struct window *w);
void kill_buffer_xwidgets (Lisp_Object buffer);
-#endif /* XWIDGET_H_INCLUDED */
+#endif /* XWIDGET_H_INCLUDED */