all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
blob e52b4486da847da79b6bc89de8a3e5a9230e41a7 3551 bytes (raw)
name: src/xwidget.h 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
/* Embed GTK widgets inside Emacs buffers.

Copyright 2015 Free Software Foundation, Inc.

This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */

#ifndef XWIDGET_H_INCLUDED
#define XWIDGET_H_INCLUDED

void x_draw_xwidget_glyph_string (struct glyph_string *);
void syms_of_xwidget (void);

int valid_xwidget_spec_p (Lisp_Object);

#include <gtk/gtk.h>

/* Each xwidget instance/model is described by this struct.  */

struct xwidget
{
  struct vectorlike_header header;
  Lisp_Object plist;	// Auxiliary data.
  Lisp_Object type;	// The widget type.
  Lisp_Object buffer;	// Buffer where xwidget lives.
  Lisp_Object title;	// A title used for button labels for instance.

  // Here ends the Lisp part.
  // "height" is the marker field.
  int height;
  int width;

  // For offscreen widgets, unused if not 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;
  // Non-nil means kill silently if Emacs is exited.
  unsigned int kill_without_query : 1;

};

// struct for each 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 hidden; // If the "live" instance isn't drawn.

  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;
};

/* Test for xwidget pseudovector*/
#define XWIDGETP(x) PSEUDOVECTORP (x, PVEC_XWIDGET)
#define XXWIDGET(a) (eassert (XWIDGETP (a)), \
                     (struct xwidget *) XUNTAG (a, Lisp_Vectorlike))

#define CHECK_XWIDGET(x) \
  CHECK_TYPE (XWIDGETP (x), Qxwidgetp, x)

/* Test for xwidget_view pseudovector */
#define XWIDGET_VIEW_P(x) PSEUDOVECTORP (x, PVEC_XWIDGET_VIEW)
#define XXWIDGET_VIEW(a) (eassert (XWIDGET_VIEW_P (a)), \
                          (struct xwidget_view *) XUNTAG (a, Lisp_Vectorlike))

#define CHECK_XWIDGET_VIEW(x) \
  CHECK_TYPE (XWIDGET_VIEW_P (x), Qxwidget_view_p, x)

struct xwidget_type
{
  /* A symbol uniquely identifying the xwidget type.  */
  Lisp_Object *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);

  /* Next in list of all supported image types.  */
  struct xwidget_type *next;
};

struct xwidget *xwidget_from_id (int);

void xwidget_start_redisplay (void);
void xwidget_end_redisplay (struct window *, struct glyph_matrix *);

void xwidget_touch (struct xwidget_view *);

struct xwidget *lookup_xwidget (Lisp_Object);
#define XG_XWIDGET "emacs_xwidget"
#define XG_XWIDGET_VIEW "emacs_xwidget_view"
void xwidget_view_delete_all_in_window (struct window *);

void kill_buffer_xwidgets (Lisp_Object);

#endif /* XWIDGET_H_INCLUDED */

debug log:

solving e52b448 ...
found e52b448 in https://yhetil.org/emacs/54CE05A0.2090701@cs.ucla.edu/
found cbaddf6 in https://git.savannah.gnu.org/cgit/emacs.git
preparing index
index prepared:
100644 cbaddf6cec7142608315abfd4d5a473adf106e49	src/xwidget.h

applying [1/1] https://yhetil.org/emacs/54CE05A0.2090701@cs.ucla.edu/
diff --git a/src/xwidget.h b/src/xwidget.h
index cbaddf6..e52b448 100644

Checking patch src/xwidget.h...
Applied patch src/xwidget.h cleanly.

index at:
100644 e52b4486da847da79b6bc89de8a3e5a9230e41a7	src/xwidget.h

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.