all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
blob cbaddf6cec7142608315abfd4d5a473adf106e49 3041 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
 
#ifndef XWIDGET_H_INCLUDED
#define XWIDGET_H_INCLUDED

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

//extern Lisp_Object Qxwidget;


int valid_xwidget_spec_p (Lisp_Object object) ;

#include <gtk/gtk.h>


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

lisp pseudovector.


 */
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

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

static struct xwidget_type *lookup_xwidget_type (Lisp_Object symbol);

struct xwidget* xwidget_from_id(int id);

//extern int xwidget_owns_kbd;

void xwidget_start_redisplay();
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);
#define XG_XWIDGET "emacs_xwidget"
#define XG_XWIDGET_VIEW "emacs_xwidget_view"
void      xwidget_view_delete_all_in_window(  struct window *w );

void kill_buffer_xwidgets (Lisp_Object buffer);
#endif  /* XWIDGET_H_INCLUDED */

debug log:

solving cbaddf6 ...
found cbaddf6 in https://git.savannah.gnu.org/cgit/emacs.git

(*) 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.