((f)->output_data.pgtk->cr_surface_desired_height)
-struct pgtk_display_info *x_display_list; /* Chain of existing displays */
+struct pgtk_display_info *x_display_list; /* Chain of existing displays */
extern Lisp_Object tip_frame;
-static struct event_queue_t {
+static struct event_queue_t
+{
union buffered_input_event *q;
int nr, cap;
} event_q = {
static Lisp_Object xg_default_icon_file;
static void pgtk_delete_display (struct pgtk_display_info *dpyinfo);
-static void pgtk_clear_frame_area(struct frame *f, int x, int y, int width, int height);
-static void pgtk_fill_rectangle(struct frame *f, unsigned long color, int x, int y, int width, int height);
+static void pgtk_clear_frame_area (struct frame *f, int x, int y, int width,
+ int height);
+static void pgtk_fill_rectangle (struct frame *f, unsigned long color, int x,
+ int y, int width, int height);
static void pgtk_clip_to_row (struct window *w, struct glyph_row *row,
- enum glyph_row_area area, cairo_t *cr);
-static struct frame *
-pgtk_any_window_to_frame (GdkWindow *window);
+ enum glyph_row_area area, cairo_t * cr);
+static struct frame *pgtk_any_window_to_frame (GdkWindow * window);
/*
* This is not a flip context in the same sense as gpu rendering
* context's surface has completed drawing
*/
-static void flip_cr_context(struct frame *f)
+static void
+flip_cr_context (struct frame *f)
{
- PGTK_TRACE("flip_cr_context");
- cairo_t * cr = FRAME_CR_ACTIVE_CONTEXT(f);
+ PGTK_TRACE ("flip_cr_context");
+ cairo_t *cr = FRAME_CR_ACTIVE_CONTEXT (f);
- block_input();
- if ( cr != FRAME_CR_CONTEXT(f))
+ block_input ();
+ if (cr != FRAME_CR_CONTEXT (f))
{
- cairo_destroy(cr);
- FRAME_CR_ACTIVE_CONTEXT(f) = cairo_reference(FRAME_CR_CONTEXT(f));
+ cairo_destroy (cr);
+ FRAME_CR_ACTIVE_CONTEXT (f) = cairo_reference (FRAME_CR_CONTEXT (f));
}
- unblock_input();
+ unblock_input ();
}
-static void evq_enqueue(union buffered_input_event *ev)
+static void
+evq_enqueue (union buffered_input_event *ev)
{
struct event_queue_t *evq = &event_q;
- if (evq->cap == 0) {
- evq->cap = 4;
- evq->q = xmalloc(sizeof *evq->q * evq->cap);
- }
+ if (evq->cap == 0)
+ {
+ evq->cap = 4;
+ evq->q = xmalloc (sizeof *evq->q * evq->cap);
+ }
- if (evq->nr >= evq->cap) {
- evq->cap += evq->cap / 2;
- evq->q = xrealloc(evq->q, sizeof *evq->q * evq->cap);
- }
+ if (evq->nr >= evq->cap)
+ {
+ evq->cap += evq->cap / 2;
+ evq->q = xrealloc (evq->q, sizeof *evq->q * evq->cap);
+ }
evq->q[evq->nr++] = *ev;
- raise(SIGIO);
+ raise (SIGIO);
}
-static int evq_flush(struct input_event *hold_quit)
+static int
+evq_flush (struct input_event *hold_quit)
{
struct event_queue_t *evq = &event_q;
int i, n = evq->nr;
}
void
-mark_pgtkterm(void)
+mark_pgtkterm (void)
{
struct event_queue_t *evq = &event_q;
int i, n = evq->nr;
- for (i = 0; i < n; i++) {
- union buffered_input_event *ev = &evq->q[i];
- mark_object (ev->ie.x);
- mark_object (ev->ie.y);
- mark_object (ev->ie.frame_or_window);
- mark_object (ev->ie.arg);
- }
+ for (i = 0; i < n; i++)
+ {
+ union buffered_input_event *ev = &evq->q[i];
+ mark_object (ev->ie.x);
+ mark_object (ev->ie.y);
+ mark_object (ev->ie.frame_or_window);
+ mark_object (ev->ie.arg);
+ }
}
char *
that it be unique.
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("x_get_ksysym_name");
+ PGTK_TRACE ("x_get_ksysym_name");
static char value[16];
sprintf (value, "%d", keysym);
return value;
Programmatically reposition mouse pointer in pixel coordinates
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("frame_set_mouse_pixel_position");
+ PGTK_TRACE ("frame_set_mouse_pixel_position");
}
/* Free X resources of frame F. */
#define CLEAR_IF_EQ(FIELD) \
do { if (f == dpyinfo->FIELD) dpyinfo->FIELD = 0; } while (false)
- CLEAR_IF_EQ(x_focus_frame);
- CLEAR_IF_EQ(highlight_frame);
- CLEAR_IF_EQ(x_focus_event_frame);
- CLEAR_IF_EQ(last_mouse_frame);
- CLEAR_IF_EQ(last_mouse_motion_frame);
- CLEAR_IF_EQ(last_mouse_glyph_frame);
- CLEAR_IF_EQ(im.focused_frame);
+ CLEAR_IF_EQ (x_focus_frame);
+ CLEAR_IF_EQ (highlight_frame);
+ CLEAR_IF_EQ (x_focus_event_frame);
+ CLEAR_IF_EQ (last_mouse_frame);
+ CLEAR_IF_EQ (last_mouse_motion_frame);
+ CLEAR_IF_EQ (last_mouse_glyph_frame);
+ CLEAR_IF_EQ (im.focused_frame);
#undef CLEAR_IF_EQ
if (f == hlinfo->mouse_face_mouse_frame)
reset_mouse_highlight (hlinfo);
- if (FRAME_X_OUTPUT(f)->border_color_css_provider != NULL) {
- GtkStyleContext *ctxt = gtk_widget_get_style_context(FRAME_GTK_OUTER_WIDGET(f));
- GtkCssProvider *old = FRAME_X_OUTPUT(f)->border_color_css_provider;
- gtk_style_context_remove_provider(ctxt, GTK_STYLE_PROVIDER(old));
- FRAME_X_OUTPUT(f)->border_color_css_provider = NULL;
- }
+ if (FRAME_X_OUTPUT (f)->border_color_css_provider != NULL)
+ {
+ GtkStyleContext *ctxt =
+ gtk_widget_get_style_context (FRAME_GTK_OUTER_WIDGET (f));
+ GtkCssProvider *old = FRAME_X_OUTPUT (f)->border_color_css_provider;
+ gtk_style_context_remove_provider (ctxt, GTK_STYLE_PROVIDER (old));
+ FRAME_X_OUTPUT (f)->border_color_css_provider = NULL;
+ }
- if (FRAME_X_OUTPUT(f)->scrollbar_foreground_css_provider != NULL) {
- GtkCssProvider *old = FRAME_X_OUTPUT(f)->scrollbar_foreground_css_provider;
- g_object_unref (old);
- FRAME_X_OUTPUT(f)->scrollbar_foreground_css_provider = NULL;
- }
+ if (FRAME_X_OUTPUT (f)->scrollbar_foreground_css_provider != NULL)
+ {
+ GtkCssProvider *old =
+ FRAME_X_OUTPUT (f)->scrollbar_foreground_css_provider;
+ g_object_unref (old);
+ FRAME_X_OUTPUT (f)->scrollbar_foreground_css_provider = NULL;
+ }
- if (FRAME_X_OUTPUT(f)->scrollbar_background_css_provider != NULL) {
- GtkCssProvider *old = FRAME_X_OUTPUT(f)->scrollbar_background_css_provider;
- g_object_unref (old);
- FRAME_X_OUTPUT(f)->scrollbar_background_css_provider = NULL;
- }
+ if (FRAME_X_OUTPUT (f)->scrollbar_background_css_provider != NULL)
+ {
+ GtkCssProvider *old =
+ FRAME_X_OUTPUT (f)->scrollbar_background_css_provider;
+ g_object_unref (old);
+ FRAME_X_OUTPUT (f)->scrollbar_background_css_provider = NULL;
+ }
- gtk_widget_destroy(FRAME_GTK_OUTER_WIDGET(f));
+ gtk_widget_destroy (FRAME_GTK_OUTER_WIDGET (f));
- if (FRAME_X_OUTPUT(f)->cr_surface_visible_bell != NULL) {
- cairo_surface_destroy(FRAME_X_OUTPUT(f)->cr_surface_visible_bell);
- FRAME_X_OUTPUT(f)->cr_surface_visible_bell = NULL;
- }
+ if (FRAME_X_OUTPUT (f)->cr_surface_visible_bell != NULL)
+ {
+ cairo_surface_destroy (FRAME_X_OUTPUT (f)->cr_surface_visible_bell);
+ FRAME_X_OUTPUT (f)->cr_surface_visible_bell = NULL;
+ }
- if (FRAME_X_OUTPUT(f)->atimer_visible_bell != NULL) {
- cancel_atimer(FRAME_X_OUTPUT(f)->atimer_visible_bell);
- FRAME_X_OUTPUT(f)->atimer_visible_bell = NULL;
- }
+ if (FRAME_X_OUTPUT (f)->atimer_visible_bell != NULL)
+ {
+ cancel_atimer (FRAME_X_OUTPUT (f)->atimer_visible_bell);
+ FRAME_X_OUTPUT (f)->atimer_visible_bell = NULL;
+ }
xfree (f->output_data.pgtk);
f->output_data.pgtk = NULL;
/* We have nothing to do if the current position
is already for the top-left corner. */
- if (! ((flags & XNegative) || (flags & YNegative)))
+ if (!((flags & XNegative) || (flags & YNegative)))
return;
/* Treat negative positions as relative to the leftmost bottommost
int width = FRAME_PIXEL_WIDTH (f);
/* A frame that has been visible at least once should have outer
- edges. */
- if (FRAME_X_OUTPUT(f)->has_been_visible && !p)
+ edges. */
+ if (FRAME_X_OUTPUT (f)->has_been_visible && !p)
{
Lisp_Object frame;
Lisp_Object edges = Qnil;
{
int height = FRAME_PIXEL_HEIGHT (f);
- if (FRAME_X_OUTPUT(f)->has_been_visible && !p)
+ if (FRAME_X_OUTPUT (f)->has_been_visible && !p)
{
Lisp_Object frame;
Lisp_Object edges = Qnil;
if (p)
f->top_pos = (FRAME_PIXEL_HEIGHT (p) - height - 2 * f->border_width
- + f->top_pos);
+ + f->top_pos);
else
f->top_pos = (x_display_pixel_height (FRAME_DISPLAY_INFO (f))
- height + f->top_pos);
- }
+ }
/* The left_pos and top_pos
are now relative to the top and left screen edges,
so the flags should correspond. */
- f->size_hint_flags &= ~ (XNegative | YNegative);
+ f->size_hint_flags &= ~(XNegative | YNegative);
}
/* CHANGE_GRAVITY is 1 when calling from Fset_frame_position,
External: Position the window
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("x_set_offset: %d,%d,%d.", xoff, yoff, change_gravity);
+ PGTK_TRACE ("x_set_offset: %d,%d,%d.", xoff, yoff, change_gravity);
- struct frame *parent = FRAME_PARENT_FRAME(f);
- GtkAllocation a = {0};
- if (change_gravity > 0) {
- if (parent) {
- /* determing the "height" of the titlebar, by finding the
- location of the "emacsfixed" widget on the surface/window */
- GtkWidget *w = FRAME_GTK_WIDGET(parent);
- gtk_widget_get_allocation(w, &a);
- }
+ struct frame *parent = FRAME_PARENT_FRAME (f);
+ GtkAllocation a = { 0 };
+ if (change_gravity > 0)
+ {
+ if (parent)
+ {
+ /* determing the "height" of the titlebar, by finding the
+ location of the "emacsfixed" widget on the surface/window */
+ GtkWidget *w = FRAME_GTK_WIDGET (parent);
+ gtk_widget_get_allocation (w, &a);
+ }
- f->size_hint_flags &= ~ (XNegative | YNegative);
- /* if the value is negative, don't include the titlebar offset */
- if (xoff < 0) {
- f->size_hint_flags |= XNegative;
- f->left_pos = xoff;
- } else {
- f->left_pos = xoff + a.x; //~25
- }
+ f->size_hint_flags &= ~(XNegative | YNegative);
+ /* if the value is negative, don't include the titlebar offset */
+ if (xoff < 0)
+ {
+ f->size_hint_flags |= XNegative;
+ f->left_pos = xoff;
+ }
+ else
+ {
+ f->left_pos = xoff + a.x; //~25
+ }
- if (yoff < 0){
- f->size_hint_flags |= YNegative;
- f->top_pos = yoff;
- } else {
- f->top_pos = yoff + a.y; //~60
+ if (yoff < 0)
+ {
+ f->size_hint_flags |= YNegative;
+ f->top_pos = yoff;
+ }
+ else
+ {
+ f->top_pos = yoff + a.y; //~60
+ }
+ f->win_gravity = NorthWestGravity;
}
- f->win_gravity = NorthWestGravity;
- }
x_calc_absolute_position (f);
/* When a position change was requested and the outer GTK widget
has been realized already, leave it to gtk_window_move to DTRT
and return. Used for Bug#25851 and Bug#25943. */
- if (change_gravity != 0 && FRAME_GTK_OUTER_WIDGET (f)) {
- PGTK_TRACE("x_set_offset: move to %d,%d.", f->left_pos, f->top_pos);
- gtk_window_move (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
- f->left_pos, f->top_pos);
- }
+ if (change_gravity != 0 && FRAME_GTK_OUTER_WIDGET (f))
+ {
+ PGTK_TRACE ("x_set_offset: move to %d,%d.", f->left_pos, f->top_pos);
+ gtk_window_move (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
+ f->left_pos, f->top_pos);
+ }
unblock_input ();
}
static void
pgtk_set_window_size (struct frame *f,
- bool change_gravity,
- int width,
- int height,
- bool pixelwise)
+ bool change_gravity,
+ int width, int height, bool pixelwise)
/* --------------------------------------------------------------------------
Adjust window pixel size based on given character grid size
Impl is a bit more complex than other terms, need to do some
internal clipping.
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("pgtk_set_window_size(%dx%d, %s)", width, height, pixelwise ? "pixel" : "char");
+ PGTK_TRACE ("pgtk_set_window_size(%dx%d, %s)", width, height,
+ pixelwise ? "pixel" : "char");
int pixelwidth, pixelheight;
block_input ();
- gtk_widget_get_size_request(FRAME_GTK_WIDGET(f), &pixelwidth, &pixelheight);
+ gtk_widget_get_size_request (FRAME_GTK_WIDGET (f), &pixelwidth,
+ &pixelheight);
if (pixelwise)
{
}
else
{
- pixelwidth = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, width);
+ pixelwidth = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, width);
pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, height);
}
make_fixnum (FRAME_PGTK_TITLEBAR_HEIGHT (f)),
make_fixnum (FRAME_TOOLBAR_HEIGHT (f))));
- for (GtkWidget *w = FRAME_GTK_WIDGET(f); w != NULL; w = gtk_widget_get_parent(w)) {
- gint wd, hi;
- gtk_widget_get_size_request(w, &wd, &hi);
- }
+ for (GtkWidget * w = FRAME_GTK_WIDGET (f); w != NULL;
+ w = gtk_widget_get_parent (w))
+ {
+ gint wd, hi;
+ gtk_widget_get_size_request (w, &wd, &hi);
+ }
f->output_data.pgtk->preferred_width = pixelwidth;
f->output_data.pgtk->preferred_height = pixelheight;
- x_wm_set_size_hint(f, 0, 0);
- xg_frame_set_char_size (f, FRAME_PIXEL_TO_TEXT_WIDTH(f, pixelwidth), FRAME_PIXEL_TO_TEXT_HEIGHT(f, pixelheight));
+ x_wm_set_size_hint (f, 0, 0);
+ xg_frame_set_char_size (f, FRAME_PIXEL_TO_TEXT_WIDTH (f, pixelwidth),
+ FRAME_PIXEL_TO_TEXT_HEIGHT (f, pixelheight));
gtk_widget_queue_resize (FRAME_GTK_OUTER_WIDGET (f));
unblock_input ();
External: Iconify window
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("pgtk_iconify_frame");
+ PGTK_TRACE ("pgtk_iconify_frame");
/* Don't keep the highlight on an invisible frame. */
if (FRAME_DISPLAY_INFO (f)->highlight_frame == f)
if (FRAME_GTK_OUTER_WIDGET (f))
{
- if (! FRAME_VISIBLE_P (f))
- gtk_widget_show_all (FRAME_GTK_OUTER_WIDGET (f));
+ if (!FRAME_VISIBLE_P (f))
+ gtk_widget_show_all (FRAME_GTK_OUTER_WIDGET (f));
gtk_window_iconify (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)));
SET_FRAME_VISIBLE (f, 0);
/* Make sure the X server knows where the window should be positioned,
in case the user deiconifies with the window manager. */
- if (! FRAME_VISIBLE_P (f)
- && ! FRAME_ICONIFIED_P (f)
+ if (!FRAME_VISIBLE_P (f) && !FRAME_ICONIFIED_P (f)
#if 0
- && ! FRAME_X_EMBEDDED_P (f)
+ && !FRAME_X_EMBEDDED_P (f)
#endif
- )
+ )
x_set_offset (f, f->left_pos, f->top_pos, 0);
#if 0
}
static gboolean
-pgtk_make_frame_visible_wait_for_map_event_cb (GtkWidget *widget, GdkEventAny *event, gpointer user_data)
+pgtk_make_frame_visible_wait_for_map_event_cb (GtkWidget * widget,
+ GdkEventAny * event,
+ gpointer user_data)
{
int *foundptr = user_data;
*foundptr = 1;
External: Show the window (X11 semantics)
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("pgtk_make_frame_visible");
+ PGTK_TRACE ("pgtk_make_frame_visible");
GtkWidget *win = FRAME_GTK_OUTER_WIDGET (f);
- if (! FRAME_VISIBLE_P (f))
- {
- gtk_widget_show(win);
- gtk_window_deiconify(GTK_WINDOW(win));
-
- if (FLOATP (Vpgtk_wait_for_event_timeout)) {
- guint msec = (guint) (XFLOAT_DATA (Vpgtk_wait_for_event_timeout) * 1000);
- int found = 0;
- int timed_out = 0;
- gulong id = g_signal_connect(win, "map-event", G_CALLBACK(pgtk_make_frame_visible_wait_for_map_event_cb), &found);
- guint src = g_timeout_add(msec, pgtk_make_frame_visible_wait_for_map_event_timeout, &timed_out);
- while (!found && !timed_out)
- gtk_main_iteration();
- g_signal_handler_disconnect (win, id);
- if (!timed_out)
- g_source_remove(src);
- }
+ if (!FRAME_VISIBLE_P (f))
+ {
+ gtk_widget_show (win);
+ gtk_window_deiconify (GTK_WINDOW (win));
+
+ if (FLOATP (Vpgtk_wait_for_event_timeout))
+ {
+ guint msec =
+ (guint) (XFLOAT_DATA (Vpgtk_wait_for_event_timeout) * 1000);
+ int found = 0;
+ int timed_out = 0;
+ gulong id =
+ g_signal_connect (win, "map-event",
+ G_CALLBACK
+ (pgtk_make_frame_visible_wait_for_map_event_cb),
+ &found);
+ guint src =
+ g_timeout_add (msec,
+ pgtk_make_frame_visible_wait_for_map_event_timeout,
+ &timed_out);
+ while (!found && !timed_out)
+ gtk_main_iteration ();
+ g_signal_handler_disconnect (win, id);
+ if (!timed_out)
+ g_source_remove (src);
+ }
}
}
External: Hide the window (X11 semantics)
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("pgtk_make_frame_invisible");
+ PGTK_TRACE ("pgtk_make_frame_invisible");
- GtkWidget *win = FRAME_OUTPUT_DATA(f)->widget;
+ GtkWidget *win = FRAME_OUTPUT_DATA (f)->widget;
- gtk_widget_hide(win);
+ gtk_widget_hide (win);
SET_FRAME_VISIBLE (f, 0);
SET_FRAME_ICONIFIED (f, false);
static Lisp_Object
pgtk_new_font (struct frame *f, Lisp_Object font_object, int fontset)
{
- PGTK_TRACE("pgtk_new_font");
+ PGTK_TRACE ("pgtk_new_font");
struct font *font = XFONT_OBJECT (font_object);
int font_ascent, font_descent;
fontset = fontset_from_font (font_object);
FRAME_FONTSET (f) = fontset;
- if (FRAME_FONT (f) == font) {
- /* This font is already set in frame F. There's nothing more to
- do. */
- PGTK_TRACE("already set.");
- return font_object;
- }
+ if (FRAME_FONT (f) == font)
+ {
+ /* This font is already set in frame F. There's nothing more to
+ do. */
+ PGTK_TRACE ("already set.");
+ return font_object;
+ }
FRAME_FONT (f) = font;
- PGTK_TRACE("font:");
- PGTK_TRACE(" %p", font);
- PGTK_TRACE(" name: %s", SSDATA(font_get_name(font_object)));
- PGTK_TRACE(" width: %d..%d", font->min_width, font->max_width);
- PGTK_TRACE(" pixel_size: %d", font->pixel_size);
- PGTK_TRACE(" height: %d", font->height);
- PGTK_TRACE(" space_width: %d", font->space_width);
- PGTK_TRACE(" average_width: %d", font->average_width);
- PGTK_TRACE(" asc/desc: %d,%d", font->ascent, font->descent);
- PGTK_TRACE(" ul thickness: %d", font->underline_thickness);
- PGTK_TRACE(" ul position: %d", font->underline_position);
- PGTK_TRACE(" vertical_centering: %d", font->vertical_centering);
- PGTK_TRACE(" baseline_offset: %d", font->baseline_offset);
- PGTK_TRACE(" relative_compose: %d", font->relative_compose);
- PGTK_TRACE(" default_ascent: %d", font->default_ascent);
- PGTK_TRACE(" encoding_charset: %d", font->encoding_charset);
- PGTK_TRACE(" repertory_charset: %d", font->repertory_charset);
+ PGTK_TRACE ("font:");
+ PGTK_TRACE (" %p", font);
+ PGTK_TRACE (" name: %s", SSDATA (font_get_name (font_object)));
+ PGTK_TRACE (" width: %d..%d", font->min_width, font->max_width);
+ PGTK_TRACE (" pixel_size: %d", font->pixel_size);
+ PGTK_TRACE (" height: %d", font->height);
+ PGTK_TRACE (" space_width: %d", font->space_width);
+ PGTK_TRACE (" average_width: %d", font->average_width);
+ PGTK_TRACE (" asc/desc: %d,%d", font->ascent, font->descent);
+ PGTK_TRACE (" ul thickness: %d", font->underline_thickness);
+ PGTK_TRACE (" ul position: %d", font->underline_position);
+ PGTK_TRACE (" vertical_centering: %d", font->vertical_centering);
+ PGTK_TRACE (" baseline_offset: %d", font->baseline_offset);
+ PGTK_TRACE (" relative_compose: %d", font->relative_compose);
+ PGTK_TRACE (" default_ascent: %d", font->default_ascent);
+ PGTK_TRACE (" encoding_charset: %d", font->encoding_charset);
+ PGTK_TRACE (" repertory_charset: %d", font->repertory_charset);
FRAME_BASELINE_OFFSET (f) = font->baseline_offset;
FRAME_COLUMN_WIDTH (f) = font->average_width;
FRAME_LINES (f) * FRAME_LINE_HEIGHT (f), 3,
false, Qfont);
- PGTK_TRACE("set new.");
+ PGTK_TRACE ("set new.");
return font_object;
}
int
x_display_pixel_height (struct pgtk_display_info *dpyinfo)
{
- PGTK_TRACE("x_display_pixel_height");
+ PGTK_TRACE ("x_display_pixel_height");
GdkDisplay *gdpy = dpyinfo->gdpy;
- GdkScreen *gscr = gdk_display_get_default_screen(gdpy);
- PGTK_TRACE(" = %d", gdk_screen_get_height(gscr));
- return gdk_screen_get_height(gscr);
+ GdkScreen *gscr = gdk_display_get_default_screen (gdpy);
+ PGTK_TRACE (" = %d", gdk_screen_get_height (gscr));
+ return gdk_screen_get_height (gscr);
}
int
x_display_pixel_width (struct pgtk_display_info *dpyinfo)
{
- PGTK_TRACE("x_display_pixel_width");
+ PGTK_TRACE ("x_display_pixel_width");
GdkDisplay *gdpy = dpyinfo->gdpy;
- GdkScreen *gscr = gdk_display_get_default_screen(gdpy);
- PGTK_TRACE(" = %d", gdk_screen_get_width(gscr));
- return gdk_screen_get_width(gscr);
+ GdkScreen *gscr = gdk_display_get_default_screen (gdpy);
+ PGTK_TRACE (" = %d", gdk_screen_get_width (gscr));
+ return gdk_screen_get_width (gscr);
}
void
-x_set_parent_frame (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
+x_set_parent_frame (struct frame *f, Lisp_Object new_value,
+ Lisp_Object old_value)
/* --------------------------------------------------------------------------
Set frame F's `parent-frame' parameter. If non-nil, make F a child
frame of the frame specified by that parameter. Technically, this
if (!NILP (new_value)
&& (!FRAMEP (new_value)
- || !FRAME_LIVE_P (p = XFRAME (new_value))
- || !FRAME_PGTK_P (p)))
+ || !FRAME_LIVE_P (p = XFRAME (new_value)) || !FRAME_PGTK_P (p)))
{
store_frame_param (f, Qparent_frame, old_value);
error ("Invalid specification of `parent-frame'");
}
- if (p != FRAME_PARENT_FRAME (f)
- && (p != NULL))
+ if (p != FRAME_PARENT_FRAME (f) && (p != NULL))
{
block_input ();
- gtk_window_set_transient_for(FRAME_NATIVE_WINDOW(f), FRAME_NATIVE_WINDOW(p));
- gtk_window_set_attached_to(FRAME_NATIVE_WINDOW(f), FRAME_GTK_WIDGET(p));
- gtk_window_move(FRAME_NATIVE_WINDOW(f), f->left_pos, f->top_pos);
- gtk_window_set_keep_above(FRAME_NATIVE_WINDOW(f), true);
+ gtk_window_set_transient_for (FRAME_NATIVE_WINDOW (f),
+ FRAME_NATIVE_WINDOW (p));
+ gtk_window_set_attached_to (FRAME_NATIVE_WINDOW (f),
+ FRAME_GTK_WIDGET (p));
+ gtk_window_move (FRAME_NATIVE_WINDOW (f), f->left_pos, f->top_pos);
+ gtk_window_set_keep_above (FRAME_NATIVE_WINDOW (f), true);
unblock_input ();
fset_parent_frame (f, new_value);
void
-x_set_no_focus_on_map (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
+x_set_no_focus_on_map (struct frame *f, Lisp_Object new_value,
+ Lisp_Object old_value)
/* Set frame F's `no-focus-on-map' parameter which, if non-nil, means
* that F's window-system window does not want to receive input focus
* when it is mapped. (A frame's window is mapped when the frame is
*
* Some window managers may not honor this parameter. */
{
- PGTK_TRACE("x_set_no_accept_focus_on_map");
+ PGTK_TRACE ("x_set_no_accept_focus_on_map");
/* doesn't work on wayland. */
if (!EQ (new_value, old_value))
}
void
-x_set_no_accept_focus (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
+x_set_no_accept_focus (struct frame *f, Lisp_Object new_value,
+ Lisp_Object old_value)
/* Set frame F's `no-accept-focus' parameter which, if non-nil, hints
* that F's window-system window does not want to receive input focus
* via mouse clicks or by moving the mouse into it.
* Some window managers may not honor this parameter. */
{
/* doesn't work on wayland. */
- PGTK_TRACE("x_set_no_accept_focus");
+ PGTK_TRACE ("x_set_no_accept_focus");
xg_set_no_accept_focus (f, new_value);
FRAME_NO_ACCEPT_FOCUS (f) = !NILP (new_value);
Some window managers may not honor this parameter. */
{
/* doesn't work on wayland. */
- PGTK_TRACE("x_set_z_group");
+ PGTK_TRACE ("x_set_z_group");
if (NILP (new_value))
{
- gtk_window_set_keep_above (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), FALSE);
- gtk_window_set_keep_below (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), FALSE);
+ gtk_window_set_keep_above (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
+ FALSE);
+ gtk_window_set_keep_below (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
+ FALSE);
FRAME_Z_GROUP (f) = z_group_none;
}
else if (EQ (new_value, Qabove))
{
- gtk_window_set_keep_above (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), TRUE);
- gtk_window_set_keep_below (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), FALSE);
+ gtk_window_set_keep_above (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
+ TRUE);
+ gtk_window_set_keep_below (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
+ FALSE);
FRAME_Z_GROUP (f) = z_group_above;
}
else if (EQ (new_value, Qabove_suspended))
{
- gtk_window_set_keep_above (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), FALSE);
+ gtk_window_set_keep_above (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
+ FALSE);
FRAME_Z_GROUP (f) = z_group_above_suspended;
}
else if (EQ (new_value, Qbelow))
{
- gtk_window_set_keep_above (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), FALSE);
- gtk_window_set_keep_below (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), TRUE);
+ gtk_window_set_keep_above (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
+ FALSE);
+ gtk_window_set_keep_below (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
+ TRUE);
FRAME_Z_GROUP (f) = z_group_below;
}
else
Initialize global info and storage for display.
-------------------------------------------------------------------------- */
{
- dpyinfo->resx = 96;
- dpyinfo->resy = 96;
- dpyinfo->color_p = 1;
- dpyinfo->n_planes = 32;
- dpyinfo->root_window = 42; /* a placeholder.. */
- dpyinfo->highlight_frame = dpyinfo->x_focus_frame = NULL;
- dpyinfo->n_fonts = 0;
- dpyinfo->smallest_font_height = 1;
- dpyinfo->smallest_char_width = 1;
+ dpyinfo->resx = 96;
+ dpyinfo->resy = 96;
+ dpyinfo->color_p = 1;
+ dpyinfo->n_planes = 32;
+ dpyinfo->root_window = 42; /* a placeholder.. */
+ dpyinfo->highlight_frame = dpyinfo->x_focus_frame = NULL;
+ dpyinfo->n_fonts = 0;
+ dpyinfo->smallest_font_height = 1;
+ dpyinfo->smallest_char_width = 1;
- reset_mouse_highlight (&dpyinfo->mouse_highlight);
+ reset_mouse_highlight (&dpyinfo->mouse_highlight);
}
/* Set S->gc to a suitable GC for drawing glyph string S in cursor
static void
x_set_cursor_gc (struct glyph_string *s)
{
- PGTK_TRACE("x_set_cursor_gc.");
+ PGTK_TRACE ("x_set_cursor_gc.");
if (s->font == FRAME_FONT (s->f)
&& s->face->background == FRAME_BACKGROUND_PIXEL (s->f)
- && s->face->foreground == FRAME_FOREGROUND_PIXEL (s->f)
- && !s->cmp)
- PGTK_TRACE("x_set_cursor_gc: 1."),
- s->xgcv = FRAME_X_OUTPUT(s->f)->cursor_xgcv;
+ && s->face->foreground == FRAME_FOREGROUND_PIXEL (s->f) && !s->cmp)
+ PGTK_TRACE ("x_set_cursor_gc: 1."),
+ s->xgcv = FRAME_X_OUTPUT (s->f)->cursor_xgcv;
else
{
/* Cursor on non-default face: must merge. */
Emacs_GC xgcv;
- PGTK_TRACE("x_set_cursor_gc: 2.");
- xgcv.background = FRAME_X_OUTPUT(s->f)->cursor_color;
+ PGTK_TRACE ("x_set_cursor_gc: 2.");
+ xgcv.background = FRAME_X_OUTPUT (s->f)->cursor_color;
xgcv.foreground = s->face->background;
- PGTK_TRACE("x_set_cursor_gc: 3. %08lx, %08lx.", xgcv.background, xgcv.foreground);
+ PGTK_TRACE ("x_set_cursor_gc: 3. %08lx, %08lx.", xgcv.background,
+ xgcv.foreground);
/* If the glyph would be invisible, try a different foreground. */
if (xgcv.foreground == xgcv.background)
xgcv.foreground = s->face->foreground;
- PGTK_TRACE("x_set_cursor_gc: 4. %08lx, %08lx.", xgcv.background, xgcv.foreground);
+ PGTK_TRACE ("x_set_cursor_gc: 4. %08lx, %08lx.", xgcv.background,
+ xgcv.foreground);
if (xgcv.foreground == xgcv.background)
- xgcv.foreground = FRAME_X_OUTPUT(s->f)->cursor_foreground_color;
+ xgcv.foreground = FRAME_X_OUTPUT (s->f)->cursor_foreground_color;
if (xgcv.foreground == xgcv.background)
xgcv.foreground = s->face->foreground;
- PGTK_TRACE("x_set_cursor_gc: 5. %08lx, %08lx.", xgcv.background, xgcv.foreground);
+ PGTK_TRACE ("x_set_cursor_gc: 5. %08lx, %08lx.", xgcv.background,
+ xgcv.foreground);
/* Make sure the cursor is distinct from text in this face. */
if (xgcv.background == s->face->background
xgcv.background = s->face->foreground;
xgcv.foreground = s->face->background;
}
- PGTK_TRACE("x_set_cursor_gc: 6. %08lx, %08lx.", xgcv.background, xgcv.foreground);
+ PGTK_TRACE ("x_set_cursor_gc: 6. %08lx, %08lx.", xgcv.background,
+ xgcv.foreground);
IF_DEBUG (x_check_font (s->f, s->font));
s->face = FACE_FROM_ID (s->f, face_id);
prepare_face_for_display (s->f, s->face);
- if (s->font == s->face->font) {
- s->xgcv.foreground = s->face->foreground;
- s->xgcv.background = s->face->background;
- } else
+ if (s->font == s->face->font)
+ {
+ s->xgcv.foreground = s->face->foreground;
+ s->xgcv.background = s->face->background;
+ }
+ else
{
/* Otherwise construct scratch_cursor_gc with values from FACE
- except for FONT. */
+ except for FONT. */
Emacs_GC xgcv;
xgcv.background = s->face->background;
static void
x_set_glyph_string_gc (struct glyph_string *s)
{
- PGTK_TRACE("x_set_glyph_string_gc: s->f: %08lx, %08lx", s->f->background_pixel, s->f->foreground_pixel);
- PGTK_TRACE("x_set_glyph_string_gc: s->face: %08lx, %08lx", s->face->background, s->face->foreground);
+ PGTK_TRACE ("x_set_glyph_string_gc: s->f: %08lx, %08lx",
+ s->f->background_pixel, s->f->foreground_pixel);
+ PGTK_TRACE ("x_set_glyph_string_gc: s->face: %08lx, %08lx",
+ s->face->background, s->face->foreground);
prepare_face_for_display (s->f, s->face);
- PGTK_TRACE("x_set_glyph_string_gc: s->face: %08lx, %08lx", s->face->background, s->face->foreground);
+ PGTK_TRACE ("x_set_glyph_string_gc: s->face: %08lx, %08lx",
+ s->face->background, s->face->foreground);
if (s->hl == DRAW_NORMAL_TEXT)
{
s->xgcv.foreground = s->face->foreground;
s->xgcv.background = s->face->background;
s->stippled_p = s->face->stipple != 0;
- PGTK_TRACE("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background, s->xgcv.foreground);
+ PGTK_TRACE ("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background,
+ s->xgcv.foreground);
}
else if (s->hl == DRAW_INVERSE_VIDEO)
{
x_set_mode_line_face_gc (s);
s->stippled_p = s->face->stipple != 0;
- PGTK_TRACE("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background, s->xgcv.foreground);
+ PGTK_TRACE ("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background,
+ s->xgcv.foreground);
}
else if (s->hl == DRAW_CURSOR)
{
x_set_cursor_gc (s);
s->stippled_p = false;
- PGTK_TRACE("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background, s->xgcv.foreground);
+ PGTK_TRACE ("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background,
+ s->xgcv.foreground);
}
else if (s->hl == DRAW_MOUSE_FACE)
{
x_set_mouse_face_gc (s);
s->stippled_p = s->face->stipple != 0;
- PGTK_TRACE("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background, s->xgcv.foreground);
+ PGTK_TRACE ("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background,
+ s->xgcv.foreground);
}
- else if (s->hl == DRAW_IMAGE_RAISED
- || s->hl == DRAW_IMAGE_SUNKEN)
+ else if (s->hl == DRAW_IMAGE_RAISED || s->hl == DRAW_IMAGE_SUNKEN)
{
s->xgcv.foreground = s->face->foreground;
s->xgcv.background = s->face->background;
s->stippled_p = s->face->stipple != 0;
- PGTK_TRACE("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background, s->xgcv.foreground);
+ PGTK_TRACE ("x_set_glyph_string_gc: %08lx, %08lx", s->xgcv.background,
+ s->xgcv.foreground);
}
else
emacs_abort ();
line or menu if we don't have X toolkit support. */
static void
-x_set_glyph_string_clipping (struct glyph_string *s, cairo_t *cr)
+x_set_glyph_string_clipping (struct glyph_string *s, cairo_t * cr)
{
XRectangle r[2];
int n = get_glyph_string_clip_rects (s, r, 2);
- PGTK_TRACE("x_set_glyph_string_clipping: n=%d.", n);
+ PGTK_TRACE ("x_set_glyph_string_clipping: n=%d.", n);
- if (n > 0) {
- for (int i = 0; i < n; i++) {
- PGTK_TRACE("x_set_glyph_string_clipping: r[%d]: %ux%u+%d+%d.",
- i, r[i].width, r[i].height, r[i].x, r[i].y);
- cairo_rectangle(cr, r[i].x, r[i].y, r[i].width, r[i].height);
+ if (n > 0)
+ {
+ for (int i = 0; i < n; i++)
+ {
+ PGTK_TRACE ("x_set_glyph_string_clipping: r[%d]: %ux%u+%d+%d.",
+ i, r[i].width, r[i].height, r[i].x, r[i].y);
+ cairo_rectangle (cr, r[i].x, r[i].y, r[i].width, r[i].height);
+ }
+ cairo_clip (cr);
}
- cairo_clip(cr);
- }
- PGTK_TRACE("clip result:");
- cairo_rectangle_list_t *rects = cairo_copy_clip_rectangle_list(cr);
- for (int i = 0; i < rects->num_rectangles; i++) {
- PGTK_TRACE(" rect[%d]: %dx%d+%d+%d.",
- i,
- (int) rects->rectangles[i].width,
- (int) rects->rectangles[i].height,
- (int) rects->rectangles[i].x,
- (int) rects->rectangles[i].y);
- }
- cairo_rectangle_list_destroy(rects);
+ PGTK_TRACE ("clip result:");
+ cairo_rectangle_list_t *rects = cairo_copy_clip_rectangle_list (cr);
+ for (int i = 0; i < rects->num_rectangles; i++)
+ {
+ PGTK_TRACE (" rect[%d]: %dx%d+%d+%d.",
+ i,
+ (int) rects->rectangles[i].width,
+ (int) rects->rectangles[i].height,
+ (int) rects->rectangles[i].x, (int) rects->rectangles[i].y);
+ }
+ cairo_rectangle_list_destroy (rects);
}
the area of SRC. */
static void
-x_set_glyph_string_clipping_exactly (struct glyph_string *src, struct glyph_string *dst, cairo_t *cr)
+x_set_glyph_string_clipping_exactly (struct glyph_string *src,
+ struct glyph_string *dst, cairo_t * cr)
{
dst->clip[0].x = src->x;
dst->clip[0].y = src->y;
dst->clip[0].height = src->height;
dst->num_clips = 1;
- cairo_rectangle(cr, src->x, src->y, src->width, src->height);
- cairo_clip(cr);
+ cairo_rectangle (cr, src->x, src->y, src->width, src->height);
+ cairo_clip (cr);
}
{
Lisp_Object gstring = composition_gstring_from_id (s->cmp_id);
- composition_gstring_width (gstring, s->cmp_from, s->cmp_to, &metrics);
+ composition_gstring_width (gstring, s->cmp_from, s->cmp_to,
+ &metrics);
}
s->right_overhang = (metrics.rbearing > metrics.width
? metrics.rbearing - metrics.width : 0);
- s->left_overhang = metrics.lbearing < 0 ? - metrics.lbearing : 0;
+ s->left_overhang = metrics.lbearing < 0 ? -metrics.lbearing : 0;
}
else if (s->cmp)
{
s->right_overhang = s->cmp->rbearing - s->cmp->pixel_width;
- s->left_overhang = - s->cmp->lbearing;
+ s->left_overhang = -s->cmp->lbearing;
}
}
static void
x_clear_glyph_string_rect (struct glyph_string *s, int x, int y, int w, int h)
{
- pgtk_fill_rectangle(s->f, s->xgcv.background, x, y, w, h);
+ pgtk_fill_rectangle (s->f, s->xgcv.background, x, y, w, h);
}
static void
-fill_background_by_face (struct frame *f, struct face *face, int x, int y, int width, int height)
+fill_background_by_face (struct frame *f, struct face *face, int x, int y,
+ int width, int height)
{
- cairo_t *cr = pgtk_begin_cr_clip(f);
+ cairo_t *cr = pgtk_begin_cr_clip (f);
cairo_rectangle (cr, x, y, width, height);
cairo_clip (cr);
double r = ((face->background >> 16) & 0xff) / 255.0;
- double g = ((face->background >> 8) & 0xff) / 255.0;
- double b = ((face->background >> 0) & 0xff) / 255.0;
+ double g = ((face->background >> 8) & 0xff) / 255.0;
+ double b = ((face->background >> 0) & 0xff) / 255.0;
cairo_set_source_rgb (cr, r, g, b);
cairo_paint (cr);
- if (face->stipple != 0) {
- cairo_pattern_t *mask = FRAME_DISPLAY_INFO (f)->bitmaps[face->stipple - 1].pattern;
+ if (face->stipple != 0)
+ {
+ cairo_pattern_t *mask =
+ FRAME_DISPLAY_INFO (f)->bitmaps[face->stipple - 1].pattern;
- double r = ((face->foreground >> 16) & 0xff) / 255.0;
- double g = ((face->foreground >> 8) & 0xff) / 255.0;
- double b = ((face->foreground >> 0) & 0xff) / 255.0;
- cairo_set_source_rgb (cr, r, g, b);
- cairo_mask (cr, mask);
- }
+ double r = ((face->foreground >> 16) & 0xff) / 255.0;
+ double g = ((face->foreground >> 8) & 0xff) / 255.0;
+ double b = ((face->foreground >> 0) & 0xff) / 255.0;
+ cairo_set_source_rgb (cr, r, g, b);
+ cairo_mask (cr, mask);
+ }
pgtk_end_cr_clip (f);
}
static void
x_draw_glyph_string_background (struct glyph_string *s, bool force_p)
{
- PGTK_TRACE("x_draw_glyph_string_background: 0.");
+ PGTK_TRACE ("x_draw_glyph_string_background: 0.");
/* Nothing to do if background has already been drawn or if it
shouldn't be drawn in the first place. */
if (!s->background_filled_p)
{
- PGTK_TRACE("x_draw_glyph_string_background: 1.");
+ PGTK_TRACE ("x_draw_glyph_string_background: 1.");
int box_line_width = max (s->face->box_horizontal_line_width, 0);
- PGTK_TRACE("x_draw_glyph_string_background: 2. %d, %d.",
- FONT_HEIGHT (s->font), s->height - 2 * box_line_width);
- PGTK_TRACE("x_draw_glyph_string_background: 2. %d.", FONT_TOO_HIGH(s->font));
- PGTK_TRACE("x_draw_glyph_string_background: 2. %d.", s->font_not_found_p);
- PGTK_TRACE("x_draw_glyph_string_background: 2. %d.", s->extends_to_end_of_line_p);
- PGTK_TRACE("x_draw_glyph_string_background: 2. %d.", force_p);
+ PGTK_TRACE ("x_draw_glyph_string_background: 2. %d, %d.",
+ FONT_HEIGHT (s->font), s->height - 2 * box_line_width);
+ PGTK_TRACE ("x_draw_glyph_string_background: 2. %d.",
+ FONT_TOO_HIGH (s->font));
+ PGTK_TRACE ("x_draw_glyph_string_background: 2. %d.",
+ s->font_not_found_p);
+ PGTK_TRACE ("x_draw_glyph_string_background: 2. %d.",
+ s->extends_to_end_of_line_p);
+ PGTK_TRACE ("x_draw_glyph_string_background: 2. %d.", force_p);
if (s->stippled_p)
{
fill_background (s,
s->x, s->y + box_line_width,
- s->background_width, s->height - 2 * box_line_width);
+ s->background_width,
+ s->height - 2 * box_line_width);
s->background_filled_p = true;
}
- else
- if (FONT_HEIGHT (s->font) < s->height - 2 * box_line_width
+ else if (FONT_HEIGHT (s->font) < s->height - 2 * box_line_width
/* When xdisp.c ignores FONT_HEIGHT, we cannot trust
- font dimensions, since the actual glyphs might be
- much smaller. So in that case we always clear the
- rectangle with background color. */
+ font dimensions, since the actual glyphs might be
+ much smaller. So in that case we always clear the
+ rectangle with background color. */
|| FONT_TOO_HIGH (s->font)
|| s->font_not_found_p
- || s->extends_to_end_of_line_p
- || force_p)
+ || s->extends_to_end_of_line_p || force_p)
{
- PGTK_TRACE("x_draw_glyph_string_background: 3.");
+ PGTK_TRACE ("x_draw_glyph_string_background: 3.");
x_clear_glyph_string_rect (s, s->x, s->y + box_line_width,
s->background_width,
s->height - 2 * box_line_width);
static void
-pgtk_draw_rectangle (struct frame *f, unsigned long color, int x, int y, int width, int height)
+pgtk_draw_rectangle (struct frame *f, unsigned long color, int x, int y,
+ int width, int height)
{
cairo_t *cr;
/* If first glyph of S has a left box line, start drawing the text
of S to the right of that box line. */
- if (s->face->box != FACE_NO_BOX
- && s->first_glyph->left_box_line_p)
+ if (s->face->box != FACE_NO_BOX && s->first_glyph->left_box_line_p)
x = s->x + max (s->face->box_vertical_line_width, 0);
else
x = s->x;
{
struct glyph *g = s->first_glyph + i;
pgtk_draw_rectangle (s->f,
- s->face->foreground, x, s->y, g->pixel_width - 1,
- s->height - 1);
+ s->face->foreground, x, s->y,
+ g->pixel_width - 1, s->height - 1);
x += g->pixel_width;
}
}
boff = VCENTER_BASELINE_OFFSET (font, s->f) - boff;
y = s->ybase - boff;
- if (s->for_overlaps
- || (s->background_filled_p && s->hl != DRAW_CURSOR))
+ if (s->for_overlaps || (s->background_filled_p && s->hl != DRAW_CURSOR))
font->driver->draw (s, 0, s->nchars, x, y, false);
else
font->driver->draw (s, 0, s->nchars, x, y, true);
{
if (s->cmp_from == 0)
pgtk_draw_rectangle (s->f, s->face->foreground, x, s->y,
- s->width - 1, s->height - 1);
+ s->width - 1, s->height - 1);
}
- else if (! s->first_glyph->u.cmp.automatic)
+ else if (!s->first_glyph->u.cmp.automatic)
{
int y = s->ybase;
for (i = 0; i < s->nchars; i++, glyph++)
{
#ifdef GCC_LINT
- enum { PACIFY_GCC_BUG_81401 = 1 };
+ enum
+ { PACIFY_GCC_BUG_81401 = 1 };
#else
- enum { PACIFY_GCC_BUG_81401 = 0 };
+ enum
+ { PACIFY_GCC_BUG_81401 = 0 };
#endif
char buf[7 + PACIFY_GCC_BUG_81401];
char *str = NULL;
{
if (len > 0
&& CHAR_TABLE_P (Vglyphless_char_display)
- && (CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (Vglyphless_char_display))
- >= 1))
+ &&
+ (CHAR_TABLE_EXTRA_SLOTS (XCHAR_TABLE (Vglyphless_char_display))
+ >= 1))
{
Lisp_Object acronym
- = (! glyph->u.glyphless.for_no_font
+ = (!glyph->u.glyphless.for_no_font
? CHAR_TABLE_REF (Vglyphless_char_display,
glyph->u.glyphless.ch)
: XCHAR_TABLE (Vglyphless_char_display)->extras[0]);
/* It is assured that all LEN characters in STR is ASCII. */
for (j = 0; j < len; j++)
- char2b[j] = s->font->driver->encode_char (s->font, str[j]) & 0xFFFF;
+ char2b[j] =
+ s->font->driver->encode_char (s->font, str[j]) & 0xFFFF;
s->font->driver->draw (s, 0, upper_len,
x + glyph->slice.glyphless.upper_xoff,
s->ybase + glyph->slice.glyphless.upper_yoff,
}
if (glyph->u.glyphless.method != GLYPHLESS_DISPLAY_THIN_SPACE)
pgtk_draw_rectangle (s->f, s->face->foreground,
- x, s->ybase - glyph->ascent,
- glyph->pixel_width - 1,
- glyph->ascent + glyph->descent - 1);
+ x, s->ybase - glyph->ascent,
+ glyph->pixel_width - 1,
+ glyph->ascent + glyph->descent - 1);
x += glyph->pixel_width;
- }
+ }
}
/* Brightness beyond which a color won't have its highlight brightness
Value is non-zero if successful. */
static bool
-x_alloc_lighter_color (struct frame *f, unsigned long *pixel, double factor, int delta)
+x_alloc_lighter_color (struct frame *f, unsigned long *pixel, double factor,
+ int delta)
{
Emacs_Color color, new;
long bright;
that scaling by FACTOR alone isn't enough. */
{
/* How far below the limit this color is (0 - 1, 1 being darker). */
- double dimness = 1 - (double)bright / HIGHLIGHT_COLOR_DARK_BOOST_LIMIT;
+ double dimness = 1 - (double) bright / HIGHLIGHT_COLOR_DARK_BOOST_LIMIT;
/* The additive adjustment. */
int min_delta = delta * dimness * factor / 2;
if (factor < 1)
{
- new.red = max (0, new.red - min_delta);
+ new.red = max (0, new.red - min_delta);
new.green = max (0, new.green - min_delta);
- new.blue = max (0, new.blue - min_delta);
+ new.blue = max (0, new.blue - min_delta);
}
else
{
- new.red = min (0xffff, min_delta + new.red);
+ new.red = min (0xffff, min_delta + new.red);
new.green = min (0xffff, min_delta + new.green);
- new.blue = min (0xffff, min_delta + new.blue);
+ new.blue = min (0xffff, min_delta + new.blue);
}
}
new.red = min (0xffff, delta + color.red);
new.green = min (0xffff, delta + color.green);
new.blue = min (0xffff, delta + color.blue);
- new.pixel = new.red >> 8 << 16 | new.green >> 8 << 8 | new.blue >> 8;
+ new.pixel =
+ new.red >> 8 << 16 | new.green >> 8 << 8 | new.blue >> 8;
success_p = true;
}
else
}
static void
-x_fill_trapezoid_for_relief (struct frame *f, unsigned long color, int x, int y,
- int width, int height, int top_p)
+x_fill_trapezoid_for_relief (struct frame *f, unsigned long color, int x,
+ int y, int width, int height, int top_p)
{
cairo_t *cr;
}
enum corners
- {
- CORNER_BOTTOM_RIGHT, /* 0 -> pi/2 */
- CORNER_BOTTOM_LEFT, /* pi/2 -> pi */
- CORNER_TOP_LEFT, /* pi -> 3pi/2 */
- CORNER_TOP_RIGHT, /* 3pi/2 -> 2pi */
- CORNER_LAST
- };
+{
+ CORNER_BOTTOM_RIGHT, /* 0 -> pi/2 */
+ CORNER_BOTTOM_LEFT, /* pi/2 -> pi */
+ CORNER_TOP_LEFT, /* pi -> 3pi/2 */
+ CORNER_TOP_RIGHT, /* 3pi/2 -> 2pi */
+ CORNER_LAST
+};
static void
-x_erase_corners_for_relief (struct frame *f, unsigned long color, int x, int y,
- int width, int height,
- double radius, double margin, int corners)
+x_erase_corners_for_relief (struct frame *f, unsigned long color, int x,
+ int y, int width, int height, double radius,
+ double margin, int corners)
{
cairo_t *cr;
int i;
int delta, unsigned long default_pixel)
{
Emacs_GC xgcv;
- struct pgtk_output *di = FRAME_X_OUTPUT(f);
+ struct pgtk_output *di = FRAME_X_OUTPUT (f);
unsigned long pixel;
unsigned long background = di->relief_background;
static void
x_setup_relief_colors (struct glyph_string *s)
{
- struct pgtk_output *di = FRAME_X_OUTPUT(s->f);
+ struct pgtk_output *di = FRAME_X_OUTPUT (s->f);
unsigned long color;
if (s->face->use_box_color_for_shadows_p)
static void
-x_set_clip_rectangles (struct frame *f, cairo_t *cr, XRectangle *rectangles, int n)
+x_set_clip_rectangles (struct frame *f, cairo_t * cr, XRectangle * rectangles,
+ int n)
{
- if (n > 0) {
- for (int i = 0; i < n; i++) {
- cairo_rectangle(cr,
- rectangles[i].x,
- rectangles[i].y,
- rectangles[i].width,
- rectangles[i].height);
+ if (n > 0)
+ {
+ for (int i = 0; i < n; i++)
+ {
+ cairo_rectangle (cr,
+ rectangles[i].x,
+ rectangles[i].y,
+ rectangles[i].width, rectangles[i].height);
+ }
+ cairo_clip (cr);
}
- cairo_clip(cr);
- }
}
/* Draw a relief on frame F inside the rectangle given by LEFT_X,
static void
x_draw_relief_rect (struct frame *f,
int left_x, int top_y, int right_x, int bottom_y,
- int hwidth, int vwidth, bool raised_p, bool top_p, bool bot_p,
- bool left_p, bool right_p,
- XRectangle *clip_rect)
+ int hwidth, int vwidth, bool raised_p, bool top_p,
+ bool bot_p, bool left_p, bool right_p,
+ XRectangle * clip_rect)
{
unsigned long top_left_color, bottom_right_color;
int corners = 0;
- cairo_t *cr = pgtk_begin_cr_clip(f);
+ cairo_t *cr = pgtk_begin_cr_clip (f);
if (raised_p)
{
- top_left_color = FRAME_X_OUTPUT(f)->white_relief.xgcv.foreground;
- bottom_right_color = FRAME_X_OUTPUT(f)->black_relief.xgcv.foreground;
+ top_left_color = FRAME_X_OUTPUT (f)->white_relief.xgcv.foreground;
+ bottom_right_color = FRAME_X_OUTPUT (f)->black_relief.xgcv.foreground;
}
else
{
- top_left_color = FRAME_X_OUTPUT(f)->black_relief.xgcv.foreground;
- bottom_right_color = FRAME_X_OUTPUT(f)->white_relief.xgcv.foreground;
+ top_left_color = FRAME_X_OUTPUT (f)->black_relief.xgcv.foreground;
+ bottom_right_color = FRAME_X_OUTPUT (f)->white_relief.xgcv.foreground;
}
x_set_clip_rectangles (f, cr, clip_rect, 1);
if (left_p)
{
pgtk_fill_rectangle (f, top_left_color, left_x, top_y,
- vwidth, bottom_y + 1 - top_y);
+ vwidth, bottom_y + 1 - top_y);
if (top_p)
corners |= 1 << CORNER_TOP_LEFT;
if (bot_p)
if (right_p)
{
pgtk_fill_rectangle (f, bottom_right_color, right_x + 1 - vwidth, top_y,
- vwidth, bottom_y + 1 - top_y);
+ vwidth, bottom_y + 1 - top_y);
if (top_p)
corners |= 1 << CORNER_TOP_RIGHT;
if (bot_p)
{
if (!right_p)
pgtk_fill_rectangle (f, top_left_color, left_x, top_y,
- right_x + 1 - left_x, hwidth);
+ right_x + 1 - left_x, hwidth);
else
x_fill_trapezoid_for_relief (f, top_left_color, left_x, top_y,
right_x + 1 - left_x, hwidth, 1);
if (bot_p)
{
if (!left_p)
- pgtk_fill_rectangle (f, bottom_right_color, left_x, bottom_y + 1 - hwidth,
- right_x + 1 - left_x, hwidth);
+ pgtk_fill_rectangle (f, bottom_right_color, left_x,
+ bottom_y + 1 - hwidth, right_x + 1 - left_x,
+ hwidth);
else
x_fill_trapezoid_for_relief (f, bottom_right_color,
left_x, bottom_y + 1 - hwidth,
}
if (left_p && vwidth > 1)
pgtk_fill_rectangle (f, bottom_right_color, left_x, top_y,
- 1, bottom_y + 1 - top_y);
+ 1, bottom_y + 1 - top_y);
if (top_p && hwidth > 1)
pgtk_fill_rectangle (f, bottom_right_color, left_x, top_y,
- right_x + 1 - left_x, 1);
+ right_x + 1 - left_x, 1);
if (corners)
{
- x_erase_corners_for_relief (f, FRAME_BACKGROUND_PIXEL (f), left_x, top_y,
- right_x - left_x + 1, bottom_y - top_y + 1,
- 6, 1, corners);
+ x_erase_corners_for_relief (f, FRAME_BACKGROUND_PIXEL (f), left_x,
+ top_y, right_x - left_x + 1,
+ bottom_y - top_y + 1, 6, 1, corners);
}
- pgtk_end_cr_clip(f);
+ pgtk_end_cr_clip (f);
}
/* Draw a box on frame F inside the rectangle given by LEFT_X, TOP_Y,
static void
x_draw_box_rect (struct glyph_string *s,
int left_x, int top_y, int right_x, int bottom_y, int hwidth,
- int vwidth, bool left_p, bool right_p, XRectangle *clip_rect)
+ int vwidth, bool left_p, bool right_p,
+ XRectangle * clip_rect)
{
unsigned long foreground_backup;
- cairo_t *cr = pgtk_begin_cr_clip(s->f);
+ cairo_t *cr = pgtk_begin_cr_clip (s->f);
foreground_backup = s->xgcv.foreground;
s->xgcv.foreground = s->face->box_color;
/* Top. */
pgtk_fill_rectangle (s->f, s->xgcv.foreground,
- left_x, top_y, right_x - left_x + 1, hwidth);
+ left_x, top_y, right_x - left_x + 1, hwidth);
/* Left. */
if (left_p)
pgtk_fill_rectangle (s->f, s->xgcv.foreground,
- left_x, top_y, vwidth, bottom_y - top_y + 1);
+ left_x, top_y, vwidth, bottom_y - top_y + 1);
/* Bottom. */
pgtk_fill_rectangle (s->f, s->xgcv.foreground,
- left_x, bottom_y - hwidth + 1, right_x - left_x + 1, hwidth);
+ left_x, bottom_y - hwidth + 1, right_x - left_x + 1,
+ hwidth);
/* Right. */
if (right_p)
pgtk_fill_rectangle (s->f, s->xgcv.foreground,
- right_x - vwidth + 1, top_y, vwidth, bottom_y - top_y + 1);
+ right_x - vwidth + 1, top_y, vwidth,
+ bottom_y - top_y + 1);
s->xgcv.foreground = foreground_backup;
- pgtk_end_cr_clip(s->f);
+ pgtk_end_cr_clip (s->f);
}
XRectangle clip_rect;
last_x = ((s->row->full_width_p && !s->w->pseudo_window_p)
- ? WINDOW_RIGHT_EDGE_X (s->w)
- : window_box_right (s->w, s->area));
+ ? WINDOW_RIGHT_EDGE_X (s->w) : window_box_right (s->w, s->area));
/* The glyph that may have a right box line. */
last_glyph = (s->cmp || s->img
- ? s->first_glyph
- : s->first_glyph + s->nchars - 1);
+ ? s->first_glyph : s->first_glyph + s->nchars - 1);
vwidth = eabs (s->face->box_vertical_line_width);
hwidth = eabs (s->face->box_horizontal_line_width);
raised_p = s->face->box == FACE_RAISED_BOX;
left_x = s->x;
right_x = (s->row->full_width_p && s->extends_to_end_of_line_p
- ? last_x - 1
- : min (last_x, s->x + s->background_width) - 1);
+ ? last_x - 1 : min (last_x, s->x + s->background_width) - 1);
top_y = s->y;
bottom_y = top_y + s->height - 1;
left_p = (s->first_glyph->left_box_line_p
|| (s->hl == DRAW_MOUSE_FACE
- && (s->prev == NULL
- || s->prev->hl != s->hl)));
+ && (s->prev == NULL || s->prev->hl != s->hl)));
right_p = (last_glyph->right_box_line_p
|| (s->hl == DRAW_MOUSE_FACE
- && (s->next == NULL
- || s->next->hl != s->hl)));
+ && (s->next == NULL || s->next->hl != s->hl)));
get_glyph_string_clip_rect (s, &clip_rect);
}
static void
-x_get_scale_factor(int *scale_x, int *scale_y)
+x_get_scale_factor (int *scale_x, int *scale_y)
{
*scale_x = *scale_y = 1;
}
/* If first glyph of S has a left box line, start drawing it to the
right of that line. */
if (s->face->box != FACE_NO_BOX
- && s->first_glyph->left_box_line_p
- && s->slice.x == 0)
+ && s->first_glyph->left_box_line_p && s->slice.x == 0)
x += max (s->face->box_vertical_line_width, 0);
/* If there is a margin around the image, adjust x- and y-position
if (s->slice.y == 0)
y += s->img->vmargin;
- if (s->hl == DRAW_IMAGE_SUNKEN
- || s->hl == DRAW_IMAGE_RAISED)
+ if (s->hl == DRAW_IMAGE_SUNKEN || s->hl == DRAW_IMAGE_RAISED)
{
thick = (tab_bar_button_relief < 0
? DEFAULT_TAB_BAR_BUTTON_RELIEF
give the rectangle to draw. */
static void
-x_draw_glyph_string_bg_rect (struct glyph_string *s, int x, int y, int w, int h)
+x_draw_glyph_string_bg_rect (struct glyph_string *s, int x, int y, int w,
+ int h)
{
if (s->stippled_p)
{
/* If first glyph of S has a left box line, start drawing it to the
right of that line. */
if (s->face->box != FACE_NO_BOX
- && s->first_glyph->left_box_line_p
- && s->slice.x == 0)
+ && s->first_glyph->left_box_line_p && s->slice.x == 0)
x += max (s->face->box_vertical_line_width, 0);
/* If there is a margin around the image, adjust x- and y-position
|| s->img->vmargin
|| s->img->mask
|| s->img->pixmap == 0
- || s->stippled_p
- || s->width != s->background_width)
+ || s->stippled_p || s->width != s->background_width)
{
if (s->img->mask)
{
int y = s->y;
int width = s->background_width;
- if (s->first_glyph->left_box_line_p
- && s->slice.x == 0)
+ if (s->first_glyph->left_box_line_p && s->slice.x == 0)
{
x += box_line_hwidth;
width -= box_line_hwidth;
/* If we must draw a relief around the image, do it. */
if (s->img->relief
- || s->hl == DRAW_IMAGE_RAISED
- || s->hl == DRAW_IMAGE_SUNKEN)
+ || s->hl == DRAW_IMAGE_RAISED || s->hl == DRAW_IMAGE_SUNKEN)
x_draw_image_relief (s);
}
{
eassert (s->first_glyph->type == STRETCH_GLYPH);
- if (s->hl == DRAW_CURSOR
- && !x_stretch_cursor_p)
+ if (s->hl == DRAW_CURSOR && !x_stretch_cursor_p)
{
/* If `x-stretch-cursor' is nil, don't draw a block cursor as
- wide as the stretch glyph. */
+ wide as the stretch glyph. */
int width, background_width = s->background_width;
int x = s->x;
x += width;
else
x = s->x;
- if (s->row->mouse_face_p
- && cursor_in_mouse_face_p (s->w))
+ if (s->row->mouse_face_p && cursor_in_mouse_face_p (s->w))
{
x_set_mouse_face_gc (s);
color = s->xgcv.foreground;
else
color = s->face->foreground;
- cairo_t *cr = pgtk_begin_cr_clip(s->f);
+ cairo_t *cr = pgtk_begin_cr_clip (s->f);
get_glyph_string_clip_rect (s, &r);
x_set_clip_rectangles (s->f, cr, &r, 1);
}
else
{
- pgtk_fill_rectangle(s->f, color, x, y, w, h);
+ pgtk_fill_rectangle (s->f, color, x, y, w, h);
}
- pgtk_end_cr_clip(s->f);
+ pgtk_end_cr_clip (s->f);
}
}
else if (!s->background_filled_p)
s->background_filled_p = true;
}
-static void pgtk_draw_glyph_string(struct glyph_string *s)
+static void
+pgtk_draw_glyph_string (struct glyph_string *s)
{
- PGTK_TRACE("draw_glyph_string.");
- PGTK_TRACE("draw_glyph_string: x=%d, y=%d, width=%d, height=%d.",
- s->x, s->y, s->width, s->height);
+ PGTK_TRACE ("draw_glyph_string.");
+ PGTK_TRACE ("draw_glyph_string: x=%d, y=%d, width=%d, height=%d.",
+ s->x, s->y, s->width, s->height);
bool relief_drawn_p = false;
width += next->width, next = next->next)
if (next->first_glyph->type != IMAGE_GLYPH)
{
- cairo_t *cr = pgtk_begin_cr_clip(next->f);
- PGTK_TRACE("pgtk_draw_glyph_string: 1.");
+ cairo_t *cr = pgtk_begin_cr_clip (next->f);
+ PGTK_TRACE ("pgtk_draw_glyph_string: 1.");
x_set_glyph_string_gc (next);
x_set_glyph_string_clipping (next, cr);
if (next->first_glyph->type == STRETCH_GLYPH)
else
x_draw_glyph_string_background (next, true);
next->num_clips = 0;
- pgtk_end_cr_clip(next->f);
+ pgtk_end_cr_clip (next->f);
}
}
/* Set up S->gc, set clipping and draw S. */
- PGTK_TRACE("pgtk_draw_glyph_string: 2.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.");
x_set_glyph_string_gc (s);
- cairo_t *cr = pgtk_begin_cr_clip(s->f);
+ cairo_t *cr = pgtk_begin_cr_clip (s->f);
/* Draw relief (if any) in advance for char/composition so that the
glyph string can be drawn over it. */
|| s->first_glyph->type == COMPOSITE_GLYPH))
{
- PGTK_TRACE("pgtk_draw_glyph_string: 2.1.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.1.");
x_set_glyph_string_clipping (s, cr);
x_draw_glyph_string_background (s, true);
x_draw_glyph_string_box (s);
x_set_glyph_string_clipping (s, cr);
relief_drawn_p = true;
}
- else if (!s->clip_head /* draw_glyphs didn't specify a clip mask. */
+ else if (!s->clip_head /* draw_glyphs didn't specify a clip mask. */
&& !s->clip_tail
&& ((s->prev && s->prev->hl != s->hl && s->left_overhang)
|| (s->next && s->next->hl != s->hl && s->right_overhang)))
/* We must clip just this glyph. left_overhang part has already
drawn when s->prev was drawn, and right_overhang part will be
drawn later when s->next is drawn. */
- PGTK_TRACE("pgtk_draw_glyph_string: 2.2."),
- x_set_glyph_string_clipping_exactly (s, s, cr);
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.2."),
+ x_set_glyph_string_clipping_exactly (s, s, cr);
else
- PGTK_TRACE("pgtk_draw_glyph_string: 2.3."),
- x_set_glyph_string_clipping (s, cr);
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.3."),
+ x_set_glyph_string_clipping (s, cr);
switch (s->first_glyph->type)
{
case IMAGE_GLYPH:
- PGTK_TRACE("pgtk_draw_glyph_string: 2.4.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.4.");
x_draw_image_glyph_string (s);
break;
case XWIDGET_GLYPH:
- PGTK_TRACE("pgtk_draw_glyph_string: 2.5.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.5.");
x_draw_xwidget_glyph_string (s);
break;
case STRETCH_GLYPH:
- PGTK_TRACE("pgtk_draw_glyph_string: 2.6.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.6.");
x_draw_stretch_glyph_string (s);
break;
case CHAR_GLYPH:
- PGTK_TRACE("pgtk_draw_glyph_string: 2.7.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.7.");
if (s->for_overlaps)
s->background_filled_p = true;
else
break;
case COMPOSITE_GLYPH:
- PGTK_TRACE("pgtk_draw_glyph_string: 2.8.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.8.");
if (s->for_overlaps || (s->cmp_from > 0
- && ! s->first_glyph->u.cmp.automatic))
+ && !s->first_glyph->u.cmp.automatic))
s->background_filled_p = true;
else
x_draw_glyph_string_background (s, true);
break;
case GLYPHLESS_GLYPH:
- PGTK_TRACE("pgtk_draw_glyph_string: 2.9.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 2.9.");
if (s->for_overlaps)
s->background_filled_p = true;
else
{
struct font *font = font_for_underline_metrics (s);
- /* Get the underline thickness. Default is 1 pixel. */
- if (font && font->underline_thickness > 0)
- thickness = font->underline_thickness;
- else
- thickness = 1;
- if (x_underline_at_descent_line)
- position = (s->height - thickness) - (s->ybase - s->y);
- else
- {
- /* Get the underline position. This is the recommended
- vertical offset in pixels from the baseline to the top of
- the underline. This is a signed value according to the
- specs, and its default is
-
- ROUND ((maximum descent) / 2), with
- ROUND(x) = floor (x + 0.5) */
-
- if (x_use_underline_position_properties
- && font && font->underline_position >= 0)
- position = font->underline_position;
- else if (font)
- position = (font->descent + 1) / 2;
- else
- position = underline_minimum_offset;
- }
- position = max (position, underline_minimum_offset);
- }
- /* Check the sanity of thickness and position. We should
- avoid drawing underline out of the current line area. */
- if (s->y + s->height <= s->ybase + position)
- position = (s->height - 1) - (s->ybase - s->y);
- if (s->y + s->height < s->ybase + position + thickness)
- thickness = (s->y + s->height) - (s->ybase + position);
- s->underline_thickness = thickness;
- s->underline_position = position;
- y = s->ybase + position;
- if (s->face->underline_defaulted_p)
- pgtk_fill_rectangle (s->f, s->xgcv.foreground,
+ /* Get the underline thickness. Default is 1 pixel. */
+ if (font && font->underline_thickness > 0)
+ thickness = font->underline_thickness;
+ else
+ thickness = 1;
+ if (x_underline_at_descent_line)
+ position = (s->height - thickness) - (s->ybase - s->y);
+ else
+ {
+ /* Get the underline position. This is the recommended
+ vertical offset in pixels from the baseline to the top of
+ the underline. This is a signed value according to the
+ specs, and its default is
+
+ ROUND ((maximum descent) / 2), with
+ ROUND(x) = floor (x + 0.5) */
+
+ if (x_use_underline_position_properties
+ && font && font->underline_position >= 0)
+ position = font->underline_position;
+ else if (font)
+ position = (font->descent + 1) / 2;
+ else
+ position = underline_minimum_offset;
+ }
+ position = max (position, underline_minimum_offset);
+ }
+ /* Check the sanity of thickness and position. We should
+ avoid drawing underline out of the current line area. */
+ if (s->y + s->height <= s->ybase + position)
+ position = (s->height - 1) - (s->ybase - s->y);
+ if (s->y + s->height < s->ybase + position + thickness)
+ thickness = (s->y + s->height) - (s->ybase + position);
+ s->underline_thickness = thickness;
+ s->underline_position = position;
+ y = s->ybase + position;
+ if (s->face->underline_defaulted_p)
+ pgtk_fill_rectangle (s->f, s->xgcv.foreground,
+ s->x, y, s->width, thickness);
+ else
+ {
+ pgtk_fill_rectangle (s->f, s->face->underline_color,
s->x, y, s->width, thickness);
- else
- {
- pgtk_fill_rectangle (s->f, s->face->underline_color,
- s->x, y, s->width, thickness);
- }
- }
- }
+ }
+ }
+ }
/* Draw overline. */
if (s->face->overline_p)
{
if (s->face->overline_color_defaulted_p)
pgtk_fill_rectangle (s->f, s->xgcv.foreground, s->x, s->y + dy,
- s->width, h);
+ s->width, h);
else
{
- pgtk_fill_rectangle (s->f, s->face->overline_color, s->x, s->y + dy,
- s->width, h);
+ pgtk_fill_rectangle (s->f, s->face->overline_color, s->x,
+ s->y + dy, s->width, h);
}
}
if (s->face->strike_through_color_defaulted_p)
pgtk_fill_rectangle (s->f, s->xgcv.foreground, s->x, glyph_y + dy,
- s->width, h);
+ s->width, h);
else
{
- pgtk_fill_rectangle (s->f, s->face->strike_through_color, s->x, glyph_y + dy,
- s->width, h);
+ pgtk_fill_rectangle (s->f, s->face->strike_through_color, s->x,
+ glyph_y + dy, s->width, h);
}
}
enum draw_glyphs_face save = prev->hl;
prev->hl = s->hl;
- PGTK_TRACE("pgtk_draw_glyph_string: 3.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 3.");
x_set_glyph_string_gc (prev);
- cairo_save(cr);
+ cairo_save (cr);
x_set_glyph_string_clipping_exactly (s, prev, cr);
if (prev->first_glyph->type == CHAR_GLYPH)
x_draw_glyph_string_foreground (prev);
x_draw_composite_glyph_string_foreground (prev);
prev->hl = save;
prev->num_clips = 0;
- cairo_restore(cr);
+ cairo_restore (cr);
}
}
enum draw_glyphs_face save = next->hl;
next->hl = s->hl;
- PGTK_TRACE("pgtk_draw_glyph_string: 4.");
+ PGTK_TRACE ("pgtk_draw_glyph_string: 4.");
x_set_glyph_string_gc (next);
- cairo_save(cr);
+ cairo_save (cr);
x_set_glyph_string_clipping_exactly (s, next, cr);
if (next->first_glyph->type == CHAR_GLYPH)
x_draw_glyph_string_foreground (next);
else
x_draw_composite_glyph_string_foreground (next);
- cairo_restore(cr);
+ cairo_restore (cr);
next->hl = save;
next->num_clips = 0;
next->clip_head = s->next;
}
/* Reset clipping. */
- pgtk_end_cr_clip(s->f);
+ pgtk_end_cr_clip (s->f);
s->num_clips = 0;
}
static void
pgtk_define_frame_cursor (struct frame *f, Emacs_Cursor cursor)
{
- if (!f->pointer_invisible
- && FRAME_X_OUTPUT(f)->current_cursor != cursor)
- gdk_window_set_cursor(gtk_widget_get_window(FRAME_GTK_WIDGET(f)), cursor);
- FRAME_X_OUTPUT(f)->current_cursor = cursor;
+ if (!f->pointer_invisible && FRAME_X_OUTPUT (f)->current_cursor != cursor)
+ gdk_window_set_cursor (gtk_widget_get_window (FRAME_GTK_WIDGET (f)),
+ cursor);
+ FRAME_X_OUTPUT (f)->current_cursor = cursor;
}
-static void pgtk_after_update_window_line(struct window *w, struct glyph_row *desired_row)
+static void
+pgtk_after_update_window_line (struct window *w,
+ struct glyph_row *desired_row)
{
- PGTK_TRACE("after_update_window_line.");
+ PGTK_TRACE ("after_update_window_line.");
struct frame *f;
int width, height;
&& desired_row->full_width_p
&& (f = XFRAME (w->frame),
width = FRAME_INTERNAL_BORDER_WIDTH (f),
- width != 0)
- && (height = desired_row->visible_height,
- height > 0))
+ width != 0) && (height = desired_row->visible_height, height > 0))
{
int y = WINDOW_TO_FRAME_PIXEL_Y (w, max (0, desired_row->y));
block_input ();
pgtk_clear_frame_area (f, 0, y, width, height);
pgtk_clear_frame_area (f,
- FRAME_PIXEL_WIDTH (f) - width,
- y, width, height);
+ FRAME_PIXEL_WIDTH (f) - width, y, width, height);
unblock_input ();
}
}
-static void pgtk_clear_frame_area(struct frame *f, int x, int y, int width, int height)
+static void
+pgtk_clear_frame_area (struct frame *f, int x, int y, int width, int height)
{
- PGTK_TRACE("clear_frame_area.");
+ PGTK_TRACE ("clear_frame_area.");
pgtk_clear_area (f, x, y, width, height);
}
/* The foreground of cursor_gc is typically the same as the normal
background color, which can cause the cursor box to be invisible. */
- cairo_t *cr = pgtk_begin_cr_clip(f);
- pgtk_set_cr_source_with_color(f, FRAME_X_OUTPUT(f)->cursor_color);
+ cairo_t *cr = pgtk_begin_cr_clip (f);
+ pgtk_set_cr_source_with_color (f, FRAME_X_OUTPUT (f)->cursor_color);
/* When on R2L character, show cursor at the right edge of the
glyph, unless the cursor box is as wide as the glyph or wider
}
/* Set clipping, draw the rectangle, and reset clipping again. */
pgtk_clip_to_row (w, row, TEXT_AREA, cr);
- pgtk_draw_rectangle (f, FRAME_X_OUTPUT(f)->cursor_color, x, y, wd, h - 1);
- pgtk_end_cr_clip(f);
+ pgtk_draw_rectangle (f, FRAME_X_OUTPUT (f)->cursor_color, x, y, wd, h - 1);
+ pgtk_end_cr_clip (f);
}
/* Draw a bar cursor on window W in glyph row ROW.
--gerd. */
static void
-x_draw_bar_cursor (struct window *w, struct glyph_row *row, int width, enum text_cursor_kinds kind)
+x_draw_bar_cursor (struct window *w, struct glyph_row *row, int width,
+ enum text_cursor_kinds kind)
{
struct frame *f = XFRAME (w->frame);
struct glyph *cursor_glyph;
struct face *face = FACE_FROM_ID (f, cursor_glyph->face_id);
unsigned long color;
- cairo_t *cr = pgtk_begin_cr_clip(f);
+ cairo_t *cr = pgtk_begin_cr_clip (f);
/* If the glyph's background equals the color we normally draw
- the bars cursor in, the bar cursor in its normal color is
- invisible. Use the glyph's foreground color instead in this
- case, on the assumption that the glyph's colors are chosen so
- that the glyph is legible. */
- if (face->background == FRAME_X_OUTPUT(f)->cursor_color)
+ the bars cursor in, the bar cursor in its normal color is
+ invisible. Use the glyph's foreground color instead in this
+ case, on the assumption that the glyph's colors are chosen so
+ that the glyph is legible. */
+ if (face->background == FRAME_X_OUTPUT (f)->cursor_color)
color = face->foreground;
else
- color = FRAME_X_OUTPUT(f)->cursor_color;
+ color = FRAME_X_OUTPUT (f)->cursor_color;
pgtk_clip_to_row (w, row, TEXT_AREA, cr);
x += cursor_glyph->pixel_width - width;
pgtk_fill_rectangle (f, color, x,
- WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y),
- width, row->height);
+ WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y),
+ width, row->height);
}
- else /* HBAR_CURSOR */
+ else /* HBAR_CURSOR */
{
int dummy_x, dummy_y, dummy_h;
int x = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
&& cursor_glyph->pixel_width > w->phys_cursor_width - 1)
x += cursor_glyph->pixel_width - w->phys_cursor_width + 1;
pgtk_fill_rectangle (f, color, x,
- WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y +
- row->height - width),
- w->phys_cursor_width - 1, width);
+ WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y +
+ row->height - width),
+ w->phys_cursor_width - 1, width);
}
- pgtk_end_cr_clip(f);
+ pgtk_end_cr_clip (f);
}
}
static void
pgtk_draw_window_cursor (struct window *w, struct glyph_row *glyph_row, int x,
- int y, enum text_cursor_kinds cursor_type,
- int cursor_width, bool on_p, bool active_p)
+ int y, enum text_cursor_kinds cursor_type,
+ int cursor_width, bool on_p, bool active_p)
{
- PGTK_TRACE("draw_window_cursor: %d, %d, %d, %d, %d, %d.",
- x, y, cursor_type, cursor_width, on_p, active_p);
+ PGTK_TRACE ("draw_window_cursor: %d, %d, %d, %d, %d, %d.",
+ x, y, cursor_type, cursor_width, on_p, active_p);
if (on_p)
{
w->phys_cursor_type = cursor_type;
}
static void
-pgtk_copy_bits (struct frame *f, cairo_rectangle_t *src_rect, cairo_rectangle_t *dst_rect)
+pgtk_copy_bits (struct frame *f, cairo_rectangle_t * src_rect,
+ cairo_rectangle_t * dst_rect)
{
PGTK_TRACE ("pgtk_copy_bits: %dx%d+%d+%d -> %dx%d+%d+%d",
(int) src_rect->width,
(int) src_rect->x,
(int) src_rect->y,
(int) dst_rect->width,
- (int) dst_rect->height,
- (int) dst_rect->x,
- (int) dst_rect->y);
+ (int) dst_rect->height, (int) dst_rect->x, (int) dst_rect->y);
cairo_t *cr;
- cairo_surface_t *surface; /* temporary surface */
-
- surface = cairo_surface_create_similar(FRAME_CR_SURFACE(f), CAIRO_CONTENT_COLOR_ALPHA,
- (int) src_rect->width,
- (int) src_rect->height);
-
- cr = cairo_create(surface);
- cairo_set_source_surface(cr, FRAME_CR_SURFACE(f), -src_rect->x, -src_rect->y);
- cairo_rectangle(cr, 0, 0, src_rect->width, src_rect->height);
- cairo_clip(cr);
- cairo_paint(cr);
- cairo_destroy(cr);
+ cairo_surface_t *surface; /* temporary surface */
+
+ surface =
+ cairo_surface_create_similar (FRAME_CR_SURFACE (f),
+ CAIRO_CONTENT_COLOR_ALPHA,
+ (int) src_rect->width,
+ (int) src_rect->height);
+
+ cr = cairo_create (surface);
+ cairo_set_source_surface (cr, FRAME_CR_SURFACE (f), -src_rect->x,
+ -src_rect->y);
+ cairo_rectangle (cr, 0, 0, src_rect->width, src_rect->height);
+ cairo_clip (cr);
+ cairo_paint (cr);
+ cairo_destroy (cr);
- cr = pgtk_begin_cr_clip(f);
- cairo_set_source_surface(cr, surface, dst_rect->x, dst_rect->y);
- cairo_rectangle(cr, dst_rect->x, dst_rect->y, dst_rect->width, dst_rect->height);
- cairo_clip(cr);
- cairo_paint(cr);
- pgtk_end_cr_clip(f);
+ cr = pgtk_begin_cr_clip (f);
+ cairo_set_source_surface (cr, surface, dst_rect->x, dst_rect->y);
+ cairo_rectangle (cr, dst_rect->x, dst_rect->y, dst_rect->width,
+ dst_rect->height);
+ cairo_clip (cr);
+ cairo_paint (cr);
+ pgtk_end_cr_clip (f);
- cairo_surface_destroy(surface);
+ cairo_surface_destroy (surface);
}
/* Scroll part of the display as described by RUN. */
if (to_y < from_y)
{
/* Scrolling up. Make sure we don't copy part of the mode
- line at the bottom. */
+ line at the bottom. */
if (from_y + run->height > bottom_y)
height = bottom_y - from_y;
else
else
{
/* Scrolling down. Make sure we don't copy over the mode line.
- at the bottom. */
+ at the bottom. */
if (to_y + run->height > bottom_y)
height = bottom_y - to_y;
else
{
cairo_rectangle_t src_rect = { x, from_y, width, height };
cairo_rectangle_t dst_rect = { x, to_y, width, height };
- pgtk_copy_bits (f, &src_rect , &dst_rect);
+ pgtk_copy_bits (f, &src_rect, &dst_rect);
}
unblock_input ();
if (STRINGP (file))
{
/* Use gtk_window_set_icon_from_file () if available,
- It's not restricted to bitmaps */
+ It's not restricted to bitmaps */
if (xg_set_icon (f, file))
return false;
hlinfo->mouse_face_defer = true;
/* If F needs to be redrawn, simply forget about any prior mouse
- highlighting. */
+ highlighting. */
if (FRAME_GARBAGED_P (f))
hlinfo->mouse_face_window = Qnil;
}
{
pgtk_set_cr_source_with_color (f, color_first);
cairo_rectangle (cr, x0, y0, 1, y1 - y0);
- cairo_fill(cr);
+ cairo_fill (cr);
pgtk_set_cr_source_with_color (f, color);
cairo_rectangle (cr, x0 + 1, y0, x1 - x0 - 2, y1 - y0);
- cairo_fill(cr);
+ cairo_fill (cr);
pgtk_set_cr_source_with_color (f, color_last);
cairo_rectangle (cr, x1 - 1, y0, 1, y1 - y0);
- cairo_fill(cr);
+ cairo_fill (cr);
}
else if (x1 - x0 > y1 - y0 && y1 - y0 > 3)
/* Horizontal. */
{
pgtk_set_cr_source_with_color (f, color_first);
cairo_rectangle (cr, x0, y0, x1 - x0, 1);
- cairo_fill(cr);
+ cairo_fill (cr);
pgtk_set_cr_source_with_color (f, color);
cairo_rectangle (cr, x0, y0 + 1, x1 - x0, y1 - y0 - 2);
- cairo_fill(cr);
+ cairo_fill (cr);
pgtk_set_cr_source_with_color (f, color_last);
cairo_rectangle (cr, x0, y1 - 1, x1 - x0, 1);
- cairo_fill(cr);
+ cairo_fill (cr);
}
else
{
pgtk_set_cr_source_with_color (f, color);
cairo_rectangle (cr, x0, y0, x1 - x0, y1 - y0);
- cairo_fill(cr);
+ cairo_fill (cr);
}
pgtk_end_cr_clip (f);
static void
pgtk_update_window_end (struct window *w, bool cursor_on_p,
- bool mouse_face_overwritten_p)
+ bool mouse_face_overwritten_p)
{
if (!w->pseudo_window_p)
{
static void
pgtk_update_end (struct frame *f)
{
- GtkWidget *widget = FRAME_GTK_WIDGET(f);
+ GtkWidget *widget = FRAME_GTK_WIDGET (f);
/* Mouse highlight may be displayed again. */
MOUSE_HL_INFO (f)->mouse_face_defer = false;
gtk_widget_queue_draw (widget);
- flip_cr_context(f);
+ flip_cr_context (f);
}
/* Return the current position of the mouse.
movement. */
static void
-pgtk_mouse_position (struct frame **fp, int insist, Lisp_Object *bar_window,
- enum scroll_bar_part *part, Lisp_Object *x, Lisp_Object *y,
- Time *timestamp)
+pgtk_mouse_position (struct frame **fp, int insist, Lisp_Object * bar_window,
+ enum scroll_bar_part *part, Lisp_Object * x,
+ Lisp_Object * y, Time * timestamp)
{
struct frame *f1;
struct pgtk_display_info *dpyinfo = FRAME_DISPLAY_INFO (*fp);
FOR_EACH_FRAME (tail, frame)
if (FRAME_PGTK_P (XFRAME (frame))
&& FRAME_X_DISPLAY (XFRAME (frame)) == FRAME_X_DISPLAY (*fp))
- XFRAME (frame)->mouse_moved = false;
+ XFRAME (frame)->mouse_moved = false;
dpyinfo->last_mouse_scroll_bar = NULL;
- if (gui_mouse_grabbed (dpyinfo)) {
- /* 1.1. use last_mouse_frame as frame where the pointer is on. */
- f1 = dpyinfo->last_mouse_frame;
- } else {
- f1 = *fp;
- /* 1.2. get frame where the pointer is on. */
- win = gtk_widget_get_window(FRAME_GTK_WIDGET(*fp));
- seat = gdk_display_get_default_seat(dpyinfo->gdpy);
- device = gdk_seat_get_pointer(seat);
- win = gdk_window_get_device_position(win, device, &win_x, &win_y, &mask);
- if (win != NULL)
- f1 = pgtk_any_window_to_frame(win);
- else {
- // crossing display server?
- f1 = SELECTED_FRAME();
+ if (gui_mouse_grabbed (dpyinfo))
+ {
+ /* 1.1. use last_mouse_frame as frame where the pointer is on. */
+ f1 = dpyinfo->last_mouse_frame;
+ }
+ else
+ {
+ f1 = *fp;
+ /* 1.2. get frame where the pointer is on. */
+ win = gtk_widget_get_window (FRAME_GTK_WIDGET (*fp));
+ seat = gdk_display_get_default_seat (dpyinfo->gdpy);
+ device = gdk_seat_get_pointer (seat);
+ win =
+ gdk_window_get_device_position (win, device, &win_x, &win_y, &mask);
+ if (win != NULL)
+ f1 = pgtk_any_window_to_frame (win);
+ else
+ {
+ // crossing display server?
+ f1 = SELECTED_FRAME ();
+ }
}
- }
/* 2. get the display and the device. */
- win = gtk_widget_get_window(FRAME_GTK_WIDGET(f1));
+ win = gtk_widget_get_window (FRAME_GTK_WIDGET (f1));
GdkDisplay *gdpy = gdk_window_get_display (win);
- seat = gdk_display_get_default_seat(gdpy);
- device = gdk_seat_get_pointer(seat);
+ seat = gdk_display_get_default_seat (gdpy);
+ device = gdk_seat_get_pointer (seat);
/* 3. get x, y relative to edit window of the frame. */
- win = gdk_window_get_device_position(win, device, &win_x, &win_y, &mask);
-
- if (f1 != NULL) {
- dpyinfo = FRAME_DISPLAY_INFO (f1);
- remember_mouse_glyph (f1, win_x, win_y, &dpyinfo->last_mouse_glyph);
- dpyinfo->last_mouse_glyph_frame = f1;
-
- *bar_window = Qnil;
- *part = 0;
- *fp = f1;
- XSETINT (*x, win_x);
- XSETINT (*y, win_y);
- *timestamp = dpyinfo->last_mouse_movement_time;
- }
+ win = gdk_window_get_device_position (win, device, &win_x, &win_y, &mask);
+
+ if (f1 != NULL)
+ {
+ dpyinfo = FRAME_DISPLAY_INFO (f1);
+ remember_mouse_glyph (f1, win_x, win_y, &dpyinfo->last_mouse_glyph);
+ dpyinfo->last_mouse_glyph_frame = f1;
+
+ *bar_window = Qnil;
+ *part = 0;
+ *fp = f1;
+ XSETINT (*x, win_x);
+ XSETINT (*y, win_y);
+ *timestamp = dpyinfo->last_mouse_movement_time;
+ }
unblock_input ();
}
{
i = max_fringe_bmp;
max_fringe_bmp = which + 20;
- fringe_bmp = (cairo_pattern_t **) xrealloc (fringe_bmp, max_fringe_bmp * sizeof (cairo_pattern_t *));
+ fringe_bmp =
+ (cairo_pattern_t **) xrealloc (fringe_bmp,
+ max_fringe_bmp *
+ sizeof (cairo_pattern_t *));
while (i < max_fringe_bmp)
fringe_bmp[i++] = 0;
}
static void
pgtk_clip_to_row (struct window *w, struct glyph_row *row,
- enum glyph_row_area area, cairo_t *cr)
+ enum glyph_row_area area, cairo_t * cr)
{
int window_x, window_y, window_width;
cairo_rectangle_int_t rect;
rect.width = window_width;
rect.height = row->visible_height;
- cairo_rectangle(cr, rect.x, rect.y, rect.width, rect.height);
- cairo_clip(cr);
+ cairo_rectangle (cr, rect.x, rect.y, rect.width, rect.height);
+ cairo_clip (cr);
}
static void
-pgtk_cr_draw_image (struct frame *f, Emacs_GC *gc, cairo_pattern_t *image,
- int src_x, int src_y, int width, int height,
- int dest_x, int dest_y, bool overlay_p)
+pgtk_cr_draw_image (struct frame *f, Emacs_GC * gc, cairo_pattern_t * image,
+ int src_x, int src_y, int width, int height,
+ int dest_x, int dest_y, bool overlay_p)
{
cairo_t *cr = pgtk_begin_cr_clip (f);
- PGTK_TRACE("pgtk_cr_draw_image: 0: %d,%d,%d,%d,%d,%d,%d.", src_x, src_y, width, height, dest_x, dest_y, overlay_p);
+ PGTK_TRACE ("pgtk_cr_draw_image: 0: %d,%d,%d,%d,%d,%d,%d.", src_x, src_y,
+ width, height, dest_x, dest_y, overlay_p);
if (overlay_p)
cairo_rectangle (cr, dest_x, dest_y, width, height);
}
static void
-pgtk_draw_fringe_bitmap (struct window *w, struct glyph_row *row, struct draw_fringe_bitmap_params *p)
+pgtk_draw_fringe_bitmap (struct window *w, struct glyph_row *row,
+ struct draw_fringe_bitmap_params *p)
{
- PGTK_TRACE("draw_fringe_bitmap.");
+ PGTK_TRACE ("draw_fringe_bitmap.");
struct frame *f = XFRAME (WINDOW_FRAME (w));
struct face *face = p->face;
- cairo_t *cr = pgtk_begin_cr_clip(f);
- cairo_save(cr);
+ cairo_t *cr = pgtk_begin_cr_clip (f);
+ cairo_save (cr);
/* Must clip because of partially visible lines. */
pgtk_clip_to_row (w, row, ANY_AREA, cr);
if (p->bx >= 0 && !p->overlay_p)
{
/* In case the same realized face is used for fringes and
- for something displayed in the text (e.g. face `region' on
- mono-displays, the fill style may have been changed to
- FillSolid in x_draw_glyph_string_background. */
- if (face->stipple) {
- fill_background_by_face(f, face, p->bx, p->by, p->nx, p->ny);
- } else {
- pgtk_set_cr_source_with_color(f, face->background);
- cairo_rectangle(cr, p->bx, p->by, p->nx, p->ny);
- cairo_fill(cr);
- }
+ for something displayed in the text (e.g. face `region' on
+ mono-displays, the fill style may have been changed to
+ FillSolid in x_draw_glyph_string_background. */
+ if (face->stipple)
+ {
+ fill_background_by_face (f, face, p->bx, p->by, p->nx, p->ny);
+ }
+ else
+ {
+ pgtk_set_cr_source_with_color (f, face->background);
+ cairo_rectangle (cr, p->bx, p->by, p->nx, p->ny);
+ cairo_fill (cr);
+ }
}
- PGTK_TRACE("which: %d, max_fringe_bmp: %d.", p->which, max_fringe_bmp);
+ PGTK_TRACE ("which: %d, max_fringe_bmp: %d.", p->which, max_fringe_bmp);
if (p->which && p->which < max_fringe_bmp)
{
Emacs_GC gcv;
- PGTK_TRACE("cursor_p=%d.", p->cursor_p);
- PGTK_TRACE("overlay_p_p=%d.", p->overlay_p);
- PGTK_TRACE("background=%08lx.", face->background);
- PGTK_TRACE("cursor_color=%08lx.", FRAME_X_OUTPUT(f)->cursor_color);
- PGTK_TRACE("foreground=%08lx.", face->foreground);
+ PGTK_TRACE ("cursor_p=%d.", p->cursor_p);
+ PGTK_TRACE ("overlay_p_p=%d.", p->overlay_p);
+ PGTK_TRACE ("background=%08lx.", face->background);
+ PGTK_TRACE ("cursor_color=%08lx.", FRAME_X_OUTPUT (f)->cursor_color);
+ PGTK_TRACE ("foreground=%08lx.", face->foreground);
gcv.foreground = (p->cursor_p
- ? (p->overlay_p ? face->background
- : FRAME_X_OUTPUT(f)->cursor_color)
- : face->foreground);
+ ? (p->overlay_p ? face->background
+ : FRAME_X_OUTPUT (f)->cursor_color)
+ : face->foreground);
gcv.background = face->background;
pgtk_cr_draw_image (f, &gcv, fringe_bmp[p->which], 0, p->dh,
- p->wd, p->h, p->x, p->y, p->overlay_p);
+ p->wd, p->h, p->x, p->y, p->overlay_p);
}
- cairo_restore(cr);
+ cairo_restore (cr);
}
static struct atimer *hourglass_atimer = NULL;
static int hourglass_enter_count = 0;
-static void hourglass_cb(struct atimer *timer)
+static void
+hourglass_cb (struct atimer *timer)
{
- /*NOP*/
-}
+ /*NOP*/}
static void
-pgtk_show_hourglass(struct frame *f)
+pgtk_show_hourglass (struct frame *f)
{
- struct pgtk_output *x = FRAME_X_OUTPUT(f);
+ struct pgtk_output *x = FRAME_X_OUTPUT (f);
if (x->hourglass_widget != NULL)
- gtk_widget_destroy(x->hourglass_widget);
- x->hourglass_widget = gtk_event_box_new(); /* gtk_event_box is GDK_INPUT_ONLY. */
- gtk_widget_set_has_window(x->hourglass_widget, true);
- gtk_fixed_put(GTK_FIXED(FRAME_GTK_WIDGET(f)), x->hourglass_widget, 0, 0);
- gtk_widget_show(x->hourglass_widget);
- gtk_widget_set_size_request(x->hourglass_widget, 30000, 30000);
- gdk_window_raise(gtk_widget_get_window(x->hourglass_widget));
- gdk_window_set_cursor(gtk_widget_get_window(x->hourglass_widget), x->hourglass_cursor);
+ gtk_widget_destroy (x->hourglass_widget);
+ x->hourglass_widget = gtk_event_box_new (); /* gtk_event_box is GDK_INPUT_ONLY. */
+ gtk_widget_set_has_window (x->hourglass_widget, true);
+ gtk_fixed_put (GTK_FIXED (FRAME_GTK_WIDGET (f)), x->hourglass_widget, 0, 0);
+ gtk_widget_show (x->hourglass_widget);
+ gtk_widget_set_size_request (x->hourglass_widget, 30000, 30000);
+ gdk_window_raise (gtk_widget_get_window (x->hourglass_widget));
+ gdk_window_set_cursor (gtk_widget_get_window (x->hourglass_widget),
+ x->hourglass_cursor);
/* For cursor animation, we receive signals, set pending_signals, and dispatch. */
- if (hourglass_enter_count++ == 0) {
- struct timespec ts = make_timespec(0, 50 * 1000 * 1000);
- if (hourglass_atimer != NULL)
- cancel_atimer(hourglass_atimer);
- hourglass_atimer = start_atimer(ATIMER_CONTINUOUS, ts, hourglass_cb, NULL);
- }
+ if (hourglass_enter_count++ == 0)
+ {
+ struct timespec ts = make_timespec (0, 50 * 1000 * 1000);
+ if (hourglass_atimer != NULL)
+ cancel_atimer (hourglass_atimer);
+ hourglass_atimer =
+ start_atimer (ATIMER_CONTINUOUS, ts, hourglass_cb, NULL);
+ }
/* Cursor frequently stops animation. gtk's bug? */
}
static void
-pgtk_hide_hourglass(struct frame *f)
+pgtk_hide_hourglass (struct frame *f)
{
- struct pgtk_output *x = FRAME_X_OUTPUT(f);
- if (--hourglass_enter_count == 0) {
- if (hourglass_atimer != NULL) {
- cancel_atimer(hourglass_atimer);
- hourglass_atimer = NULL;
+ struct pgtk_output *x = FRAME_X_OUTPUT (f);
+ if (--hourglass_enter_count == 0)
+ {
+ if (hourglass_atimer != NULL)
+ {
+ cancel_atimer (hourglass_atimer);
+ hourglass_atimer = NULL;
+ }
+ }
+ if (x->hourglass_widget != NULL)
+ {
+ gtk_widget_destroy (x->hourglass_widget);
+ x->hourglass_widget = NULL;
}
- }
- if (x->hourglass_widget != NULL) {
- gtk_widget_destroy(x->hourglass_widget);
- x->hourglass_widget = NULL;
- }
}
/* Flushes changes to display. */
extern frame_parm_handler pgtk_frame_parm_handlers[];
-static struct redisplay_interface pgtk_redisplay_interface =
-{
+static struct redisplay_interface pgtk_redisplay_interface = {
pgtk_frame_parm_handlers,
gui_produce_glyphs,
gui_write_glyphs,
pgtk_draw_window_cursor,
pgtk_draw_vertical_window_border,
pgtk_draw_window_divider,
- NULL, // pgtk_shift_glyphs_for_insert,
+ NULL, // pgtk_shift_glyphs_for_insert,
pgtk_show_hourglass,
pgtk_hide_hourglass,
pgtk_default_font_parameter,
static void
pgtk_redraw_scroll_bars (struct frame *f)
{
- PGTK_TRACE("pgtk_redraw_scroll_bars");
+ PGTK_TRACE ("pgtk_redraw_scroll_bars");
}
void
External (hook): Erase the entire frame
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("pgtk_clear_frame");
- /* comes on initial frame because we have
- after-make-frame-functions = select-frame */
+ PGTK_TRACE ("pgtk_clear_frame");
+ /* comes on initial frame because we have
+ after-make-frame-functions = select-frame */
if (!FRAME_DEFAULT_FACE (f))
return;
block_input ();
- pgtk_clear_area(f, 0, 0, FRAME_PIXEL_WIDTH(f), FRAME_PIXEL_HEIGHT(f));
+ pgtk_clear_area (f, 0, 0, FRAME_PIXEL_WIDTH (f), FRAME_PIXEL_HEIGHT (f));
/* as of 2006/11 or so this is now needed */
pgtk_redraw_scroll_bars (f);
/* Invert the middle quarter of the frame for .15 sec. */
static void
-recover_from_visible_bell(struct atimer *timer)
+recover_from_visible_bell (struct atimer *timer)
{
struct frame *f = timer->client_data;
- if (FRAME_X_OUTPUT(f)->cr_surface_visible_bell != NULL) {
- cairo_surface_destroy(FRAME_X_OUTPUT(f)->cr_surface_visible_bell);
- FRAME_X_OUTPUT(f)->cr_surface_visible_bell = NULL;
- }
+ if (FRAME_X_OUTPUT (f)->cr_surface_visible_bell != NULL)
+ {
+ cairo_surface_destroy (FRAME_X_OUTPUT (f)->cr_surface_visible_bell);
+ FRAME_X_OUTPUT (f)->cr_surface_visible_bell = NULL;
+ }
- if (FRAME_X_OUTPUT(f)->atimer_visible_bell != NULL)
- FRAME_X_OUTPUT(f)->atimer_visible_bell = NULL;
+ if (FRAME_X_OUTPUT (f)->atimer_visible_bell != NULL)
+ FRAME_X_OUTPUT (f)->atimer_visible_bell = NULL;
}
static void
block_input ();
{
- cairo_surface_t *surface_orig = FRAME_CR_SURFACE(f);
+ cairo_surface_t *surface_orig = FRAME_CR_SURFACE (f);
- int width = cairo_image_surface_get_width(surface_orig);
- int height = cairo_image_surface_get_height(surface_orig);
- cairo_surface_t *surface = cairo_surface_create_similar(surface_orig, CAIRO_CONTENT_COLOR_ALPHA,
- width, height);
+ int width = cairo_image_surface_get_width (surface_orig);
+ int height = cairo_image_surface_get_height (surface_orig);
+ cairo_surface_t *surface =
+ cairo_surface_create_similar (surface_orig, CAIRO_CONTENT_COLOR_ALPHA,
+ width, height);
- cairo_t *cr = cairo_create(surface);
- cairo_set_source_surface(cr, surface_orig, 0, 0);
- cairo_rectangle(cr, 0, 0, width, height);
- cairo_clip(cr);
- cairo_paint(cr);
+ cairo_t *cr = cairo_create (surface);
+ cairo_set_source_surface (cr, surface_orig, 0, 0);
+ cairo_rectangle (cr, 0, 0, width, height);
+ cairo_clip (cr);
+ cairo_paint (cr);
cairo_set_source_rgb (cr, 1, 1, 1);
cairo_set_operator (cr, CAIRO_OPERATOR_DIFFERENCE);
int flash_height = FRAME_LINE_HEIGHT (f);
/* These will be the left and right margins of the rectangles. */
int flash_left = FRAME_INTERNAL_BORDER_WIDTH (f);
- int flash_right = FRAME_PIXEL_WIDTH (f) - FRAME_INTERNAL_BORDER_WIDTH (f);
+ int flash_right =
+ FRAME_PIXEL_WIDTH (f) - FRAME_INTERNAL_BORDER_WIDTH (f);
int width = flash_right - flash_left;
/* If window is tall, flash top and bottom line. */
flash_left, FRAME_INTERNAL_BORDER_WIDTH (f),
width, height - 2 * FRAME_INTERNAL_BORDER_WIDTH (f));
- FRAME_X_OUTPUT(f)->cr_surface_visible_bell = surface;
+ FRAME_X_OUTPUT (f)->cr_surface_visible_bell = surface;
{
struct timespec delay = make_timespec (0, 50 * 1000 * 1000);
- if (FRAME_X_OUTPUT(f)->atimer_visible_bell != NULL) {
- cancel_atimer(FRAME_X_OUTPUT(f)->atimer_visible_bell);
- FRAME_X_OUTPUT(f)->atimer_visible_bell = NULL;
- }
- FRAME_X_OUTPUT(f)->atimer_visible_bell = start_atimer(ATIMER_RELATIVE, delay, recover_from_visible_bell, f);
+ if (FRAME_X_OUTPUT (f)->atimer_visible_bell != NULL)
+ {
+ cancel_atimer (FRAME_X_OUTPUT (f)->atimer_visible_bell);
+ FRAME_X_OUTPUT (f)->atimer_visible_bell = NULL;
+ }
+ FRAME_X_OUTPUT (f)->atimer_visible_bell =
+ start_atimer (ATIMER_RELATIVE, delay, recover_from_visible_bell, f);
}
#undef XFillRectangle
{
if (visible_bell)
{
- pgtk_flash(f);
+ pgtk_flash (f);
}
else
{
block_input ();
- gtk_widget_error_bell(FRAME_GTK_WIDGET(f));
+ gtk_widget_error_bell (FRAME_GTK_WIDGET (f));
unblock_input ();
}
}
static int
pgtk_read_socket (struct terminal *terminal, struct input_event *hold_quit)
{
- PGTK_TRACE("pgtk_read_socket: enter.");
+ PGTK_TRACE ("pgtk_read_socket: enter.");
GMainContext *context;
bool context_acquired = false;
int count;
- count = evq_flush(hold_quit);
- if (count > 0) {
- PGTK_TRACE("pgtk_read_socket: leave(1).");
- return count;
- }
+ count = evq_flush (hold_quit);
+ if (count > 0)
+ {
+ PGTK_TRACE ("pgtk_read_socket: leave(1).");
+ return count;
+ }
context = g_main_context_default ();
context_acquired = g_main_context_acquire (context);
block_input ();
- PGTK_TRACE("pgtk_read_socket: 3: errno=%d.", errno);
+ PGTK_TRACE ("pgtk_read_socket: 3: errno=%d.", errno);
- if (context_acquired) {
- PGTK_TRACE("pgtk_read_socket: 4.1: acquired.");
- while (g_main_context_pending (context)) {
- PGTK_TRACE("pgtk_read_socket: 4: dispatch...");
- g_main_context_dispatch (context);
- PGTK_TRACE("pgtk_read_socket: 5: dispatch... done.");
+ if (context_acquired)
+ {
+ PGTK_TRACE ("pgtk_read_socket: 4.1: acquired.");
+ while (g_main_context_pending (context))
+ {
+ PGTK_TRACE ("pgtk_read_socket: 4: dispatch...");
+ g_main_context_dispatch (context);
+ PGTK_TRACE ("pgtk_read_socket: 5: dispatch... done.");
+ }
}
- }
- PGTK_TRACE("pgtk_read_socket: 7: errno=%d.", errno);
+ PGTK_TRACE ("pgtk_read_socket: 7: errno=%d.", errno);
unblock_input ();
if (context_acquired)
g_main_context_release (context);
- count = evq_flush(hold_quit);
- if (count > 0) {
- PGTK_TRACE("pgtk_read_socket: leave(2).");
- return count;
- }
+ count = evq_flush (hold_quit);
+ if (count > 0)
+ {
+ PGTK_TRACE ("pgtk_read_socket: leave(2).");
+ return count;
+ }
- PGTK_TRACE("pgtk_read_socket: leave(3).");
+ PGTK_TRACE ("pgtk_read_socket: leave(3).");
return 0;
}
int
-pgtk_select (int fds_lim, fd_set *rfds, fd_set *wfds, fd_set *efds,
- struct timespec *timeout, sigset_t *sigmask)
+pgtk_select (int fds_lim, fd_set * rfds, fd_set * wfds, fd_set * efds,
+ struct timespec *timeout, sigset_t * sigmask)
{
fd_set all_rfds, all_wfds;
struct timespec tmo;
int i, nfds, tmo_in_millisec, must_free = 0;
bool need_to_dispatch;
- PGTK_TRACE("pgtk_select: enter.");
+ PGTK_TRACE ("pgtk_select: enter.");
- if (event_q.nr >= 1) {
- PGTK_TRACE("pgtk_select: raise.");
- raise(SIGIO);
- errno = EINTR;
- return -1;
- }
+ if (event_q.nr >= 1)
+ {
+ PGTK_TRACE ("pgtk_select: raise.");
+ raise (SIGIO);
+ errno = EINTR;
+ return -1;
+ }
context = g_main_context_default ();
context_acquired = g_main_context_acquire (context);
Note that, as implemented, this failure is completely silent: there is
no feedback to the caller. */
- if (rfds) all_rfds = *rfds;
- else FD_ZERO (&all_rfds);
- if (wfds) all_wfds = *wfds;
- else FD_ZERO (&all_wfds);
+ if (rfds)
+ all_rfds = *rfds;
+ else
+ FD_ZERO (&all_rfds);
+ if (wfds)
+ all_wfds = *wfds;
+ else
+ FD_ZERO (&all_wfds);
n_gfds = (context_acquired
? g_main_context_query (context, G_PRIORITY_LOW, &tmo_in_millisec,
- gfds, gfds_size)
- : -1);
+ gfds, gfds_size) : -1);
if (gfds_size < n_gfds)
{
/* Avoid using SAFE_NALLOCA, as that implicitly refers to the
- current thread. Using xnmalloc avoids thread-switching
- problems here. */
+ current thread. Using xnmalloc avoids thread-switching
+ problems here. */
gfds = xnmalloc (n_gfds, sizeof *gfds);
must_free = 1;
gfds_size = n_gfds;
- n_gfds = g_main_context_query (context, G_PRIORITY_LOW, &tmo_in_millisec,
- gfds, gfds_size);
+ n_gfds =
+ g_main_context_query (context, G_PRIORITY_LOW, &tmo_in_millisec, gfds,
+ gfds_size);
}
for (i = 0; i < n_gfds; ++i)
{
if (gfds[i].events & G_IO_IN)
- {
- FD_SET (gfds[i].fd, &all_rfds);
- if (gfds[i].fd > max_fds) max_fds = gfds[i].fd;
- }
+ {
+ FD_SET (gfds[i].fd, &all_rfds);
+ if (gfds[i].fd > max_fds)
+ max_fds = gfds[i].fd;
+ }
if (gfds[i].events & G_IO_OUT)
- {
- FD_SET (gfds[i].fd, &all_wfds);
- if (gfds[i].fd > max_fds) max_fds = gfds[i].fd;
- have_wfds = true;
- }
+ {
+ FD_SET (gfds[i].fd, &all_wfds);
+ if (gfds[i].fd > max_fds)
+ max_fds = gfds[i].fd;
+ have_wfds = true;
+ }
}
if (must_free)
else if (nfds > 0)
{
for (i = 0; i < fds_lim; ++i)
- {
- if (FD_ISSET (i, &all_rfds))
- {
- if (rfds && FD_ISSET (i, rfds)) ++retval;
- else ++our_fds;
- }
- else if (rfds)
- FD_CLR (i, rfds);
-
- if (have_wfds && FD_ISSET (i, &all_wfds))
- {
- if (wfds && FD_ISSET (i, wfds)) ++retval;
- else ++our_fds;
- }
- else if (wfds)
- FD_CLR (i, wfds);
-
- if (efds && FD_ISSET (i, efds))
- ++retval;
- }
+ {
+ if (FD_ISSET (i, &all_rfds))
+ {
+ if (rfds && FD_ISSET (i, rfds))
+ ++retval;
+ else
+ ++our_fds;
+ }
+ else if (rfds)
+ FD_CLR (i, rfds);
+
+ if (have_wfds && FD_ISSET (i, &all_wfds))
+ {
+ if (wfds && FD_ISSET (i, wfds))
+ ++retval;
+ else
+ ++our_fds;
+ }
+ else if (wfds)
+ FD_CLR (i, wfds);
+
+ if (efds && FD_ISSET (i, efds))
+ ++retval;
+ }
}
/* If Gtk+ is in use eventually gtk_main_iteration will be called,
if (need_to_dispatch && context_acquired)
{
int pselect_errno = errno;
- PGTK_TRACE("retval=%d.", retval);
- PGTK_TRACE("need_to_dispatch=%d.", need_to_dispatch);
- PGTK_TRACE("context_acquired=%d.", context_acquired);
- PGTK_TRACE("pselect_errno=%d.", pselect_errno);
+ PGTK_TRACE ("retval=%d.", retval);
+ PGTK_TRACE ("need_to_dispatch=%d.", need_to_dispatch);
+ PGTK_TRACE ("context_acquired=%d.", context_acquired);
+ PGTK_TRACE ("pselect_errno=%d.", pselect_errno);
/* Prevent g_main_dispatch recursion, that would occur without
block_input wrapper, because event handlers call
unblock_input. Event loop recursion was causing Bug#15801. */
block_input ();
- while (g_main_context_pending (context)) {
- PGTK_TRACE("dispatch...");
- g_main_context_dispatch (context);
- PGTK_TRACE("dispatch... done.");
- }
+ while (g_main_context_pending (context))
+ {
+ PGTK_TRACE ("dispatch...");
+ g_main_context_dispatch (context);
+ PGTK_TRACE ("dispatch... done.");
+ }
unblock_input ();
errno = pselect_errno;
}
errno = EINTR;
}
- PGTK_TRACE("pgtk_select: leave.");
+ PGTK_TRACE ("pgtk_select: leave.");
return retval;
}
EVENT_INIT (inev.ie);
- inev.ie.kind = horizontal ? HORIZONTAL_SCROLL_BAR_CLICK_EVENT : SCROLL_BAR_CLICK_EVENT;
+ inev.ie.kind =
+ horizontal ? HORIZONTAL_SCROLL_BAR_CLICK_EVENT : SCROLL_BAR_CLICK_EVENT;
inev.ie.frame_or_window = window;
inev.ie.arg = Qnil;
inev.ie.timestamp = 0;
inev.ie.code = 0;
inev.ie.part = part;
- inev.ie.x = make_fixnum(portion);
- inev.ie.y = make_fixnum(whole);
+ inev.ie.x = make_fixnum (portion);
+ inev.ie.y = make_fixnum (whole);
inev.ie.modifiers = 0;
- evq_enqueue(&inev);
+ evq_enqueue (&inev);
}
bar widget. DATA is a pointer to the scroll_bar structure. */
static gboolean
-xg_scroll_callback (GtkRange *range,
- GtkScrollType scroll,
- gdouble value,
- gpointer user_data)
+xg_scroll_callback (GtkRange * range,
+ GtkScrollType scroll, gdouble value, gpointer user_data)
{
int whole = 0, portion = 0;
struct scroll_bar *bar = user_data;
enum scroll_bar_part part = scroll_bar_nowhere;
GtkAdjustment *adj = GTK_ADJUSTMENT (gtk_range_get_adjustment (range));
- PGTK_TRACE("xg_scroll_callback:");
+ PGTK_TRACE ("xg_scroll_callback:");
- if (xg_ignore_gtk_scrollbar) return false;
- PGTK_TRACE("xg_scroll_callback: not ignored.");
+ if (xg_ignore_gtk_scrollbar)
+ return false;
+ PGTK_TRACE ("xg_scroll_callback: not ignored.");
- PGTK_TRACE("xg_scroll_callback: scroll=%u.", scroll);
+ PGTK_TRACE ("xg_scroll_callback: scroll=%u.", scroll);
switch (scroll)
{
case GTK_SCROLL_JUMP:
if (bar->horizontal)
{
part = scroll_bar_horizontal_handle;
- whole = (int)(gtk_adjustment_get_upper (adj) -
- gtk_adjustment_get_page_size (adj));
- portion = min ((int)value, whole);
+ whole = (int) (gtk_adjustment_get_upper (adj) -
+ gtk_adjustment_get_page_size (adj));
+ portion = min ((int) value, whole);
bar->dragging = portion;
}
else
part = scroll_bar_handle;
whole = gtk_adjustment_get_upper (adj) -
gtk_adjustment_get_page_size (adj);
- portion = min ((int)value, whole);
+ portion = min ((int) value, whole);
bar->dragging = portion;
}
}
break;
case GTK_SCROLL_STEP_BACKWARD:
- part = (bar->horizontal
- ? scroll_bar_left_arrow : scroll_bar_up_arrow);
+ part = (bar->horizontal ? scroll_bar_left_arrow : scroll_bar_up_arrow);
bar->dragging = -1;
break;
case GTK_SCROLL_STEP_FORWARD:
break;
}
- PGTK_TRACE("xg_scroll_callback: part=%u, scroll_bar_nowhere=%d.", part, scroll_bar_nowhere);
+ PGTK_TRACE ("xg_scroll_callback: part=%u, scroll_bar_nowhere=%d.", part,
+ scroll_bar_nowhere);
if (part != scroll_bar_nowhere)
{
window_being_scrolled = bar->window;
/* Callback for button release. Sets dragging to -1 when dragging is done. */
static gboolean
-xg_end_scroll_callback (GtkWidget *widget,
- GdkEventButton *event,
- gpointer user_data)
+xg_end_scroll_callback (GtkWidget * widget,
+ GdkEventButton * event, gpointer user_data)
{
struct scroll_bar *bar = user_data;
- PGTK_TRACE("xg_end_scroll_callback:");
+ PGTK_TRACE ("xg_end_scroll_callback:");
bar->dragging = -1;
if (WINDOWP (window_being_scrolled))
{
pgtk_send_scroll_bar_event (window_being_scrolled,
- scroll_bar_end_scroll, 0, 0, bar->horizontal);
+ scroll_bar_end_scroll, 0, 0,
+ bar->horizontal);
window_being_scrolled = Qnil;
}
block_input ();
xg_create_scroll_bar (f, bar, G_CALLBACK (xg_scroll_callback),
- G_CALLBACK (xg_end_scroll_callback),
- scroll_bar_name);
+ G_CALLBACK (xg_end_scroll_callback), scroll_bar_name);
unblock_input ();
}
static void
-x_create_horizontal_toolkit_scroll_bar (struct frame *f, struct scroll_bar *bar)
+x_create_horizontal_toolkit_scroll_bar (struct frame *f,
+ struct scroll_bar *bar)
{
const char *scroll_bar_name = SCROLL_BAR_HORIZONTAL_NAME;
displaying PORTION out of a whole WHOLE, and our position POSITION. */
static void
-x_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, int portion, int position, int whole)
+x_set_toolkit_scroll_bar_thumb (struct scroll_bar *bar, int portion,
+ int position, int whole)
{
xg_set_toolkit_scroll_bar_thumb (bar, portion, position, whole);
}
static void
-x_set_toolkit_horizontal_scroll_bar_thumb (struct scroll_bar *bar, int portion, int position, int whole)
+x_set_toolkit_horizontal_scroll_bar_thumb (struct scroll_bar *bar,
+ int portion, int position,
+ int whole)
{
xg_set_toolkit_horizontal_scroll_bar_thumb (bar, portion, position, whole);
}
else
xg_update_scrollbar_pos (f, bar->x_window, top,
left, width, max (height, 1));
- }
+ }
unblock_input ();
return bar;
create one. */
static void
-pgtk_set_vertical_scroll_bar (struct window *w, int portion, int whole, int position)
+pgtk_set_vertical_scroll_bar (struct window *w, int portion, int whole,
+ int position)
{
struct frame *f = XFRAME (w->frame);
Lisp_Object barobj;
height = window_height;
left = WINDOW_SCROLL_BAR_AREA_X (w);
width = WINDOW_SCROLL_BAR_AREA_WIDTH (w);
- PGTK_TRACE("pgtk_set_vertical_scroll_bar: has_vertical_scroll_bar: %d", WINDOW_HAS_VERTICAL_SCROLL_BAR(w));
- PGTK_TRACE("pgtk_set_vertical_scroll_bar: config_scroll_bar_width: %d", WINDOW_CONFIG_SCROLL_BAR_WIDTH(w));
- PGTK_TRACE("pgtk_set_vertical_scroll_bar: scroll_bar_width: %d", w->scroll_bar_width);
- PGTK_TRACE("pgtk_set_vertical_scroll_bar: config_scroll_bar_width: %d", FRAME_CONFIG_SCROLL_BAR_WIDTH (WINDOW_XFRAME (w)));
- PGTK_TRACE("pgtk_set_vertical_scroll_bar: %dx%d+%d+%d", width, height, left, top);
+ PGTK_TRACE ("pgtk_set_vertical_scroll_bar: has_vertical_scroll_bar: %d",
+ WINDOW_HAS_VERTICAL_SCROLL_BAR (w));
+ PGTK_TRACE ("pgtk_set_vertical_scroll_bar: config_scroll_bar_width: %d",
+ WINDOW_CONFIG_SCROLL_BAR_WIDTH (w));
+ PGTK_TRACE ("pgtk_set_vertical_scroll_bar: scroll_bar_width: %d",
+ w->scroll_bar_width);
+ PGTK_TRACE ("pgtk_set_vertical_scroll_bar: config_scroll_bar_width: %d",
+ FRAME_CONFIG_SCROLL_BAR_WIDTH (WINDOW_XFRAME (w)));
+ PGTK_TRACE ("pgtk_set_vertical_scroll_bar: %dx%d+%d+%d", width, height,
+ left, top);
/* Does the scroll bar exist yet? */
if (NILP (w->vertical_scroll_bar))
static void
-pgtk_set_horizontal_scroll_bar (struct window *w, int portion, int whole, int position)
+pgtk_set_horizontal_scroll_bar (struct window *w, int portion, int whole,
+ int position)
{
struct frame *f = XFRAME (w->frame);
Lisp_Object barobj;
for them on the frame, we have to clear "under" them. */
if (width > 0 && height > 0)
pgtk_clear_area (f,
- WINDOW_LEFT_EDGE_X (w), top,
- pixel_width - WINDOW_RIGHT_DIVIDER_WIDTH (w), height);
- xg_update_horizontal_scrollbar_pos (f, bar->x_window, top, left,
+ WINDOW_LEFT_EDGE_X (w), top,
+ pixel_width - WINDOW_RIGHT_DIVIDER_WIDTH (w),
+ height);
+ xg_update_horizontal_scrollbar_pos (f, bar->x_window, top, left,
width, height);
}
else
XSCROLL_BAR (bar->prev)->next = bar->next;
- if (! NILP (bar->next))
+ if (!NILP (bar->next))
XSCROLL_BAR (bar->next)->prev = bar->prev;
bar->next = FRAME_SCROLL_BARS (f);
bar->prev = Qnil;
XSETVECTOR (barobj, bar);
fset_scroll_bars (f, barobj);
- if (! NILP (bar->next))
+ if (!NILP (bar->next))
XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar);
}
- horizontal:
- if (!NILP (w->horizontal_scroll_bar) && WINDOW_HAS_HORIZONTAL_SCROLL_BAR (w))
+horizontal:
+ if (!NILP (w->horizontal_scroll_bar)
+ && WINDOW_HAS_HORIZONTAL_SCROLL_BAR (w))
{
bar = XSCROLL_BAR (w->horizontal_scroll_bar);
/* Unlink it from the condemned list. */
else
XSCROLL_BAR (bar->prev)->next = bar->next;
- if (! NILP (bar->next))
+ if (!NILP (bar->next))
XSCROLL_BAR (bar->next)->prev = bar->prev;
bar->next = FRAME_SCROLL_BARS (f);
bar->prev = Qnil;
XSETVECTOR (barobj, bar);
fset_scroll_bars (f, barobj);
- if (! NILP (bar->next))
+ if (!NILP (bar->next))
XSETVECTOR (XSCROLL_BAR (bar->next)->prev, bar);
}
}
more events on the hapless scroll bars. */
fset_condemned_scroll_bars (f, Qnil);
- for (; ! NILP (bar); bar = next)
+ for (; !NILP (bar); bar = next)
{
struct scroll_bar *b = XSCROLL_BAR (bar);
and they should get garbage-collected. */
}
-static void set_fullscreen_state(struct frame *f)
-{
- GtkWindow *widget = GTK_WINDOW(FRAME_GTK_OUTER_WIDGET(f));
- switch (f->want_fullscreen) {
- case FULLSCREEN_NONE:
- PGTK_TRACE("pgtk_fullscreen_hook: none.");
- gtk_window_unfullscreen(widget);
- gtk_window_unmaximize(widget);
- store_frame_param(f, Qfullscreen, Qnil);
- break;
-
- case FULLSCREEN_BOTH:
- PGTK_TRACE("pgtk_fullscreen_hook: both.");
- gtk_window_unmaximize(widget);
- gtk_window_fullscreen(widget);
- store_frame_param(f, Qfullscreen, Qfullboth);
- break;
-
- case FULLSCREEN_MAXIMIZED:
- PGTK_TRACE("pgtk_fullscreen_hook: maximized.");
- gtk_window_unfullscreen(widget);
- gtk_window_maximize(widget);
- store_frame_param(f, Qfullscreen, Qmaximized);
- break;
-
- case FULLSCREEN_WIDTH:
- case FULLSCREEN_HEIGHT:
- PGTK_TRACE("pgtk_fullscreen_hook: width or height.");
- /* Not supported by gtk. Ignore them.*/
- }
+static void
+set_fullscreen_state (struct frame *f)
+{
+ GtkWindow *widget = GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f));
+ switch (f->want_fullscreen)
+ {
+ case FULLSCREEN_NONE:
+ PGTK_TRACE ("pgtk_fullscreen_hook: none.");
+ gtk_window_unfullscreen (widget);
+ gtk_window_unmaximize (widget);
+ store_frame_param (f, Qfullscreen, Qnil);
+ break;
+
+ case FULLSCREEN_BOTH:
+ PGTK_TRACE ("pgtk_fullscreen_hook: both.");
+ gtk_window_unmaximize (widget);
+ gtk_window_fullscreen (widget);
+ store_frame_param (f, Qfullscreen, Qfullboth);
+ break;
+
+ case FULLSCREEN_MAXIMIZED:
+ PGTK_TRACE ("pgtk_fullscreen_hook: maximized.");
+ gtk_window_unfullscreen (widget);
+ gtk_window_maximize (widget);
+ store_frame_param (f, Qfullscreen, Qmaximized);
+ break;
+
+ case FULLSCREEN_WIDTH:
+ case FULLSCREEN_HEIGHT:
+ PGTK_TRACE ("pgtk_fullscreen_hook: width or height.");
+ /* Not supported by gtk. Ignore them. */
+ }
f->want_fullscreen = FULLSCREEN_NONE;
}
static void
pgtk_fullscreen_hook (struct frame *f)
{
- PGTK_TRACE("pgtk_fullscreen_hook:");
+ PGTK_TRACE ("pgtk_fullscreen_hook:");
if (FRAME_VISIBLE_P (f))
{
block_input ();
- set_fullscreen_state(f);
+ set_fullscreen_state (f);
unblock_input ();
}
}
xg_display_close (dpyinfo->gdpy);
/* Do not close the connection here because it's already closed
- by X(t)CloseDisplay (Bug#18403). */
+ by X(t)CloseDisplay (Bug#18403). */
dpyinfo->gdpy = NULL;
}
+ delete_keyboard_wait_descriptor (0);
+
pgtk_delete_display (dpyinfo);
unblock_input ();
}
/* Store F's background color into *BGCOLOR. */
static void
-pgtk_query_frame_background_color (struct frame *f, Emacs_Color *bgcolor)
+pgtk_query_frame_background_color (struct frame *f, Emacs_Color * bgcolor)
{
bgcolor->pixel = FRAME_BACKGROUND_PIXEL (f);
pgtk_query_color (f, bgcolor);
{
struct pgtk_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
- GtkWidget *wid = FRAME_GTK_OUTER_WIDGET(f);
+ GtkWidget *wid = FRAME_GTK_OUTER_WIDGET (f);
if (dpyinfo->x_focus_frame != f)
{
}
-static void set_opacity_recursively (GtkWidget *w, gpointer data)
+static void
+set_opacity_recursively (GtkWidget * w, gpointer data)
{
gtk_widget_set_opacity (w, *(double *) data);
if (GTK_IS_CONTAINER (w))
using that same window-manager binary for ever. Let's not crash just
because of this (bug#9310). */
- char *css = g_strdup_printf("decoration { border: solid %dpx #%06x; }", f->border_width, (unsigned int) FRAME_X_OUTPUT(f)->border_pixel & 0x00ffffff);
- GtkStyleContext *ctxt = gtk_widget_get_style_context(FRAME_GTK_OUTER_WIDGET(f));
- GtkCssProvider *css_provider = gtk_css_provider_new();
- gtk_css_provider_load_from_data(css_provider, css, -1, NULL);
- gtk_style_context_add_provider(ctxt, GTK_STYLE_PROVIDER(css_provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
- g_object_unref(css_provider);
- g_free(css);
-
- GtkCssProvider *old = FRAME_X_OUTPUT(f)->border_color_css_provider;
- FRAME_X_OUTPUT(f)->border_color_css_provider = css_provider;
+ char *css =
+ g_strdup_printf ("decoration { border: solid %dpx #%06x; }",
+ f->border_width,
+ (unsigned int) FRAME_X_OUTPUT (f)->
+ border_pixel & 0x00ffffff);
+ GtkStyleContext *ctxt =
+ gtk_widget_get_style_context (FRAME_GTK_OUTER_WIDGET (f));
+ GtkCssProvider *css_provider = gtk_css_provider_new ();
+ gtk_css_provider_load_from_data (css_provider, css, -1, NULL);
+ gtk_style_context_add_provider (ctxt, GTK_STYLE_PROVIDER (css_provider),
+ GTK_STYLE_PROVIDER_PRIORITY_USER);
+ g_object_unref (css_provider);
+ g_free (css);
+
+ GtkCssProvider *old = FRAME_X_OUTPUT (f)->border_color_css_provider;
+ FRAME_X_OUTPUT (f)->border_color_css_provider = css_provider;
if (old != NULL)
- gtk_style_context_remove_provider(ctxt, GTK_STYLE_PROVIDER(old));
+ gtk_style_context_remove_provider (ctxt, GTK_STYLE_PROVIDER (old));
unblock_input ();
gui_update_cursor (f, true);
block_input ();
/* Same as above for XSetWindowBorder (bug#9310). */
- char *css = g_strdup_printf("decoration { border: dotted %dpx #ffffff; }", f->border_width);
- GtkStyleContext *ctxt = gtk_widget_get_style_context(FRAME_GTK_OUTER_WIDGET(f));
- GtkCssProvider *css_provider = gtk_css_provider_new();
- gtk_css_provider_load_from_data(css_provider, css, -1, NULL);
- gtk_style_context_add_provider(ctxt, GTK_STYLE_PROVIDER(css_provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
- g_object_unref(css_provider);
- g_free(css);
-
- GtkCssProvider *old = FRAME_X_OUTPUT(f)->border_color_css_provider;
- FRAME_X_OUTPUT(f)->border_color_css_provider = css_provider;
+ char *css =
+ g_strdup_printf ("decoration { border: dotted %dpx #ffffff; }",
+ f->border_width);
+ GtkStyleContext *ctxt =
+ gtk_widget_get_style_context (FRAME_GTK_OUTER_WIDGET (f));
+ GtkCssProvider *css_provider = gtk_css_provider_new ();
+ gtk_css_provider_load_from_data (css_provider, css, -1, NULL);
+ gtk_style_context_add_provider (ctxt, GTK_STYLE_PROVIDER (css_provider),
+ GTK_STYLE_PROVIDER_PRIORITY_USER);
+ g_object_unref (css_provider);
+ g_free (css);
+
+ GtkCssProvider *old = FRAME_X_OUTPUT (f)->border_color_css_provider;
+ FRAME_X_OUTPUT (f)->border_color_css_provider = css_provider;
if (old != NULL)
- gtk_style_context_remove_provider(ctxt, GTK_STYLE_PROVIDER(old));
+ gtk_style_context_remove_provider (ctxt, GTK_STYLE_PROVIDER (old));
unblock_input ();
gui_update_cursor (f, true);
= ((FRAMEP (FRAME_FOCUS_FRAME (dpyinfo->x_focus_frame)))
? XFRAME (FRAME_FOCUS_FRAME (dpyinfo->x_focus_frame))
: dpyinfo->x_focus_frame);
- if (! FRAME_LIVE_P (dpyinfo->highlight_frame))
+ if (!FRAME_LIVE_P (dpyinfo->highlight_frame))
{
fset_focus_frame (dpyinfo->x_focus_frame, Qnil);
dpyinfo->highlight_frame = dpyinfo->x_focus_frame;
cursor = FRAME_DISPLAY_INFO (f)->invisible_cursor;
else
cursor = f->output_data.pgtk->current_cursor;
- gdk_window_set_cursor(gtk_widget_get_window(FRAME_GTK_WIDGET(f)), cursor);
+ gdk_window_set_cursor (gtk_widget_get_window (FRAME_GTK_WIDGET (f)),
+ cursor);
f->pointer_invisible = invisible;
}
x_setup_pointer_blanking (struct pgtk_display_info *dpyinfo)
{
dpyinfo->toggle_visible_pointer = x_toggle_visible_pointer;
- dpyinfo->invisible_cursor = gdk_cursor_new_for_display(dpyinfo->gdpy, GDK_BLANK_CURSOR);
+ dpyinfo->invisible_cursor =
+ gdk_cursor_new_for_display (dpyinfo->gdpy, GDK_BLANK_CURSOR);
}
static void
if (frame != dpyinfo->x_focus_frame)
{
/* Set this before calling other routines, so that they see
- the correct value of x_focus_frame. */
+ the correct value of x_focus_frame. */
dpyinfo->x_focus_frame = frame;
if (old_focus && old_focus->auto_lower)
- gdk_window_lower (gtk_widget_get_window (FRAME_GTK_OUTER_WIDGET (old_focus)));
+ gdk_window_lower (gtk_widget_get_window
+ (FRAME_GTK_OUTER_WIDGET (old_focus)));
if (dpyinfo->x_focus_frame && dpyinfo->x_focus_frame->auto_raise)
- gdk_window_raise (gtk_widget_get_window (FRAME_GTK_OUTER_WIDGET (dpyinfo->x_focus_frame)));
+ gdk_window_raise (gtk_widget_get_window
+ (FRAME_GTK_OUTER_WIDGET (dpyinfo->x_focus_frame)));
}
pgtk_frame_rehighlight (dpyinfo);
terminal->set_bitmap_icon_hook = pgtk_bitmap_icon;
terminal->implicit_set_name_hook = pgtk_implicitly_set_name;
terminal->iconify_frame_hook = pgtk_iconify_frame;
- terminal->set_scroll_bar_default_width_hook = pgtk_set_scroll_bar_default_width;
- terminal->set_scroll_bar_default_height_hook = pgtk_set_scroll_bar_default_height;
+ terminal->set_scroll_bar_default_width_hook =
+ pgtk_set_scroll_bar_default_width;
+ terminal->set_scroll_bar_default_height_hook =
+ pgtk_set_scroll_bar_default_height;
terminal->set_window_size_hook = pgtk_set_window_size;
terminal->query_colors = pgtk_query_colors;
terminal->get_focus_frame = x_get_focus_frame;
return terminal;
}
-struct pgtk_window_is_of_frame_recursive_t {
+struct pgtk_window_is_of_frame_recursive_t
+{
GdkWindow *window;
bool result;
};
static void
-pgtk_window_is_of_frame_recursive(GtkWidget *widget, gpointer data)
+pgtk_window_is_of_frame_recursive (GtkWidget * widget, gpointer data)
{
struct pgtk_window_is_of_frame_recursive_t *datap = data;
if (datap->result)
return;
- if (gtk_widget_get_window(widget) == datap->window) {
- datap->result = true;
- return;
- }
+ if (gtk_widget_get_window (widget) == datap->window)
+ {
+ datap->result = true;
+ return;
+ }
- if (GTK_IS_CONTAINER(widget))
- gtk_container_foreach(GTK_CONTAINER(widget), pgtk_window_is_of_frame_recursive, datap);
+ if (GTK_IS_CONTAINER (widget))
+ gtk_container_foreach (GTK_CONTAINER (widget),
+ pgtk_window_is_of_frame_recursive, datap);
}
static bool
-pgtk_window_is_of_frame(struct frame *f, GdkWindow *window)
+pgtk_window_is_of_frame (struct frame *f, GdkWindow * window)
{
struct pgtk_window_is_of_frame_recursive_t data;
data.window = window;
data.result = false;
- pgtk_window_is_of_frame_recursive(FRAME_GTK_OUTER_WIDGET(f), &data);
+ pgtk_window_is_of_frame_recursive (FRAME_GTK_OUTER_WIDGET (f), &data);
return data.result;
}
/* Like x_window_to_frame but also compares the window with the widget's
windows. */
static struct frame *
-pgtk_any_window_to_frame (GdkWindow *window)
+pgtk_any_window_to_frame (GdkWindow * window)
{
Lisp_Object tail, frame;
struct frame *f, *found = NULL;
return NULL;
FOR_EACH_FRAME (tail, frame)
- {
- if (found)
- break;
- f = XFRAME (frame);
- if (FRAME_PGTK_P (f))
- {
- if (pgtk_window_is_of_frame(f, window))
- found = f;
- }
- }
+ {
+ if (found)
+ break;
+ f = XFRAME (frame);
+ if (FRAME_PGTK_P (f))
+ {
+ if (pgtk_window_is_of_frame (f, window))
+ found = f;
+ }
+ }
return found;
}
static gboolean
-pgtk_handle_event(GtkWidget *widget, GdkEvent *event, gpointer *data)
+pgtk_handle_event (GtkWidget * widget, GdkEvent * event, gpointer * data)
{
#ifdef PGTK_DEBUG
- const char *type_name = G_OBJECT_TYPE_NAME(widget);
- switch (event->type) {
- case GDK_NOTHING: PGTK_TRACE("GDK_NOTHING"); break;
- case GDK_DELETE: PGTK_TRACE("GDK_DELETE"); break;
- case GDK_DESTROY: PGTK_TRACE("GDK_DESTROY"); break;
- case GDK_EXPOSE: PGTK_TRACE("GDK_EXPOSE"); break;
- case GDK_MOTION_NOTIFY: PGTK_TRACE("GDK_MOTION_NOTIFY"); break;
- case GDK_BUTTON_PRESS: PGTK_TRACE("GDK_BUTTON_PRESS"); break;
- case GDK_2BUTTON_PRESS: PGTK_TRACE("GDK_2BUTTON_PRESS"); break;
- case GDK_3BUTTON_PRESS: PGTK_TRACE("GDK_3BUTTON_PRESS"); break;
- case GDK_BUTTON_RELEASE: PGTK_TRACE("GDK_BUTTON_RELEASE"); break;
- case GDK_KEY_PRESS: PGTK_TRACE("GDK_KEY_PRESS"); break;
- case GDK_KEY_RELEASE: PGTK_TRACE("GDK_KEY_RELEASE"); break;
- case GDK_ENTER_NOTIFY: PGTK_TRACE("GDK_ENTER_NOTIFY"); break;
- case GDK_LEAVE_NOTIFY: PGTK_TRACE("GDK_LEAVE_NOTIFY"); break;
- case GDK_FOCUS_CHANGE: PGTK_TRACE("GDK_FOCUS_CHANGE"); break;
- case GDK_CONFIGURE: PGTK_TRACE("GDK_CONFIGURE"); break;
- case GDK_MAP: PGTK_TRACE("GDK_MAP"); break;
- case GDK_UNMAP: PGTK_TRACE("GDK_UNMAP"); break;
- case GDK_PROPERTY_NOTIFY: PGTK_TRACE("GDK_PROPERTY_NOTIFY"); break;
- case GDK_SELECTION_CLEAR: PGTK_TRACE("GDK_SELECTION_CLEAR"); break;
- case GDK_SELECTION_REQUEST: PGTK_TRACE("GDK_SELECTION_REQUEST"); break;
- case GDK_SELECTION_NOTIFY: PGTK_TRACE("GDK_SELECTION_NOTIFY"); break;
- case GDK_PROXIMITY_IN: PGTK_TRACE("GDK_PROXIMITY_IN"); break;
- case GDK_PROXIMITY_OUT: PGTK_TRACE("GDK_PROXIMITY_OUT"); break;
- case GDK_DRAG_ENTER: PGTK_TRACE("GDK_DRAG_ENTER"); break;
- case GDK_DRAG_LEAVE: PGTK_TRACE("GDK_DRAG_LEAVE"); break;
- case GDK_DRAG_MOTION: PGTK_TRACE("GDK_DRAG_MOTION"); break;
- case GDK_DRAG_STATUS: PGTK_TRACE("GDK_DRAG_STATUS"); break;
- case GDK_DROP_START: PGTK_TRACE("GDK_DROP_START"); break;
- case GDK_DROP_FINISHED: PGTK_TRACE("GDK_DROP_FINISHED"); break;
- case GDK_CLIENT_EVENT: PGTK_TRACE("GDK_CLIENT_EVENT"); break;
- case GDK_VISIBILITY_NOTIFY: PGTK_TRACE("GDK_VISIBILITY_NOTIFY"); break;
- case GDK_SCROLL: PGTK_TRACE("GDK_SCROLL"); break;
- case GDK_WINDOW_STATE: PGTK_TRACE("GDK_WINDOW_STATE"); break;
- case GDK_SETTING: PGTK_TRACE("GDK_SETTING"); break;
- case GDK_OWNER_CHANGE: PGTK_TRACE("GDK_OWNER_CHANGE"); break;
- case GDK_GRAB_BROKEN: PGTK_TRACE("GDK_GRAB_BROKEN"); break;
- case GDK_DAMAGE: PGTK_TRACE("GDK_DAMAGE"); break;
- case GDK_TOUCH_BEGIN: PGTK_TRACE("GDK_TOUCH_BEGIN"); break;
- case GDK_TOUCH_UPDATE: PGTK_TRACE("GDK_TOUCH_UPDATE"); break;
- case GDK_TOUCH_END: PGTK_TRACE("GDK_TOUCH_END"); break;
- case GDK_TOUCH_CANCEL: PGTK_TRACE("GDK_TOUCH_CANCEL"); break;
- case GDK_TOUCHPAD_SWIPE: PGTK_TRACE("GDK_TOUCHPAD_SWIPE"); break;
- case GDK_TOUCHPAD_PINCH: PGTK_TRACE("GDK_TOUCHPAD_PINCH"); break;
- case GDK_PAD_BUTTON_PRESS: PGTK_TRACE("GDK_PAD_BUTTON_PRESS"); break;
- case GDK_PAD_BUTTON_RELEASE: PGTK_TRACE("GDK_PAD_BUTTON_RELEASE"); break;
- case GDK_PAD_RING: PGTK_TRACE("GDK_PAD_RING"); break;
- case GDK_PAD_STRIP: PGTK_TRACE("GDK_PAD_STRIP"); break;
- case GDK_PAD_GROUP_MODE: PGTK_TRACE("GDK_PAD_GROUP_MODE"); break;
- default: PGTK_TRACE("GDK_EVENT %d", event->type);
- }
- PGTK_TRACE(" Widget is %s", type_name);
+ const char *type_name = G_OBJECT_TYPE_NAME (widget);
+ switch (event->type)
+ {
+ case GDK_NOTHING:
+ PGTK_TRACE ("GDK_NOTHING");
+ break;
+ case GDK_DELETE:
+ PGTK_TRACE ("GDK_DELETE");
+ break;
+ case GDK_DESTROY:
+ PGTK_TRACE ("GDK_DESTROY");
+ break;
+ case GDK_EXPOSE:
+ PGTK_TRACE ("GDK_EXPOSE");
+ break;
+ case GDK_MOTION_NOTIFY:
+ PGTK_TRACE ("GDK_MOTION_NOTIFY");
+ break;
+ case GDK_BUTTON_PRESS:
+ PGTK_TRACE ("GDK_BUTTON_PRESS");
+ break;
+ case GDK_2BUTTON_PRESS:
+ PGTK_TRACE ("GDK_2BUTTON_PRESS");
+ break;
+ case GDK_3BUTTON_PRESS:
+ PGTK_TRACE ("GDK_3BUTTON_PRESS");
+ break;
+ case GDK_BUTTON_RELEASE:
+ PGTK_TRACE ("GDK_BUTTON_RELEASE");
+ break;
+ case GDK_KEY_PRESS:
+ PGTK_TRACE ("GDK_KEY_PRESS");
+ break;
+ case GDK_KEY_RELEASE:
+ PGTK_TRACE ("GDK_KEY_RELEASE");
+ break;
+ case GDK_ENTER_NOTIFY:
+ PGTK_TRACE ("GDK_ENTER_NOTIFY");
+ break;
+ case GDK_LEAVE_NOTIFY:
+ PGTK_TRACE ("GDK_LEAVE_NOTIFY");
+ break;
+ case GDK_FOCUS_CHANGE:
+ PGTK_TRACE ("GDK_FOCUS_CHANGE");
+ break;
+ case GDK_CONFIGURE:
+ PGTK_TRACE ("GDK_CONFIGURE");
+ break;
+ case GDK_MAP:
+ PGTK_TRACE ("GDK_MAP");
+ break;
+ case GDK_UNMAP:
+ PGTK_TRACE ("GDK_UNMAP");
+ break;
+ case GDK_PROPERTY_NOTIFY:
+ PGTK_TRACE ("GDK_PROPERTY_NOTIFY");
+ break;
+ case GDK_SELECTION_CLEAR:
+ PGTK_TRACE ("GDK_SELECTION_CLEAR");
+ break;
+ case GDK_SELECTION_REQUEST:
+ PGTK_TRACE ("GDK_SELECTION_REQUEST");
+ break;
+ case GDK_SELECTION_NOTIFY:
+ PGTK_TRACE ("GDK_SELECTION_NOTIFY");
+ break;
+ case GDK_PROXIMITY_IN:
+ PGTK_TRACE ("GDK_PROXIMITY_IN");
+ break;
+ case GDK_PROXIMITY_OUT:
+ PGTK_TRACE ("GDK_PROXIMITY_OUT");
+ break;
+ case GDK_DRAG_ENTER:
+ PGTK_TRACE ("GDK_DRAG_ENTER");
+ break;
+ case GDK_DRAG_LEAVE:
+ PGTK_TRACE ("GDK_DRAG_LEAVE");
+ break;
+ case GDK_DRAG_MOTION:
+ PGTK_TRACE ("GDK_DRAG_MOTION");
+ break;
+ case GDK_DRAG_STATUS:
+ PGTK_TRACE ("GDK_DRAG_STATUS");
+ break;
+ case GDK_DROP_START:
+ PGTK_TRACE ("GDK_DROP_START");
+ break;
+ case GDK_DROP_FINISHED:
+ PGTK_TRACE ("GDK_DROP_FINISHED");
+ break;
+ case GDK_CLIENT_EVENT:
+ PGTK_TRACE ("GDK_CLIENT_EVENT");
+ break;
+ case GDK_VISIBILITY_NOTIFY:
+ PGTK_TRACE ("GDK_VISIBILITY_NOTIFY");
+ break;
+ case GDK_SCROLL:
+ PGTK_TRACE ("GDK_SCROLL");
+ break;
+ case GDK_WINDOW_STATE:
+ PGTK_TRACE ("GDK_WINDOW_STATE");
+ break;
+ case GDK_SETTING:
+ PGTK_TRACE ("GDK_SETTING");
+ break;
+ case GDK_OWNER_CHANGE:
+ PGTK_TRACE ("GDK_OWNER_CHANGE");
+ break;
+ case GDK_GRAB_BROKEN:
+ PGTK_TRACE ("GDK_GRAB_BROKEN");
+ break;
+ case GDK_DAMAGE:
+ PGTK_TRACE ("GDK_DAMAGE");
+ break;
+ case GDK_TOUCH_BEGIN:
+ PGTK_TRACE ("GDK_TOUCH_BEGIN");
+ break;
+ case GDK_TOUCH_UPDATE:
+ PGTK_TRACE ("GDK_TOUCH_UPDATE");
+ break;
+ case GDK_TOUCH_END:
+ PGTK_TRACE ("GDK_TOUCH_END");
+ break;
+ case GDK_TOUCH_CANCEL:
+ PGTK_TRACE ("GDK_TOUCH_CANCEL");
+ break;
+ case GDK_TOUCHPAD_SWIPE:
+ PGTK_TRACE ("GDK_TOUCHPAD_SWIPE");
+ break;
+ case GDK_TOUCHPAD_PINCH:
+ PGTK_TRACE ("GDK_TOUCHPAD_PINCH");
+ break;
+ case GDK_PAD_BUTTON_PRESS:
+ PGTK_TRACE ("GDK_PAD_BUTTON_PRESS");
+ break;
+ case GDK_PAD_BUTTON_RELEASE:
+ PGTK_TRACE ("GDK_PAD_BUTTON_RELEASE");
+ break;
+ case GDK_PAD_RING:
+ PGTK_TRACE ("GDK_PAD_RING");
+ break;
+ case GDK_PAD_STRIP:
+ PGTK_TRACE ("GDK_PAD_STRIP");
+ break;
+ case GDK_PAD_GROUP_MODE:
+ PGTK_TRACE ("GDK_PAD_GROUP_MODE");
+ break;
+ default:
+ PGTK_TRACE ("GDK_EVENT %d", event->type);
+ }
+ PGTK_TRACE (" Widget is %s", type_name);
#endif
return FALSE;
}
static void
-pgtk_fill_rectangle(struct frame *f, unsigned long color, int x, int y, int width, int height)
+pgtk_fill_rectangle (struct frame *f, unsigned long color, int x, int y,
+ int width, int height)
{
- PGTK_TRACE("pgtk_fill_rectangle");
+ PGTK_TRACE ("pgtk_fill_rectangle");
cairo_t *cr;
cr = pgtk_begin_cr_clip (f);
pgtk_set_cr_source_with_color (f, color);
void
pgtk_clear_under_internal_border (struct frame *f)
{
- PGTK_TRACE("pgtk_clear_under_internal_border");
+ PGTK_TRACE ("pgtk_clear_under_internal_border");
if (FRAME_INTERNAL_BORDER_WIDTH (f) > 0)
{
int border = FRAME_INTERNAL_BORDER_WIDTH (f);
block_input ();
- struct {
+ struct
+ {
int x, y, w, h;
} rects[] = {
- { 0, margin, width, border },
- { 0, 0, border, height },
- { width - border, 0, border, height },
- { 0, height - border, width, border },
+ {0, margin, width, border},
+ {0, 0, border, height},
+ {width - border, 0, border, height},
+ {0, height - border, width, border},
};
if (face)
{
- for (int i = 0; i < 4; i++) {
- int x = rects[i].x;
- int y = rects[i].y;
- int w = rects[i].w;
- int h = rects[i].h;
- fill_background_by_face (f, face, x, y, w, h);
- }
+ for (int i = 0; i < 4; i++)
+ {
+ int x = rects[i].x;
+ int y = rects[i].y;
+ int w = rects[i].w;
+ int h = rects[i].h;
+ fill_background_by_face (f, face, x, y, w, h);
+ }
}
else
{
for (int i = 0; i < 4; i++)
- pgtk_clear_area (f, rects[i].x, rects[i].y, rects[i].w, rects[i].h);
+ pgtk_clear_area (f, rects[i].x, rects[i].y, rects[i].w,
+ rects[i].h);
}
unblock_input ();
}
}
-static void print_widget_tree_recursive(GtkWidget *w, gpointer user_data)
+static void
+print_widget_tree_recursive (GtkWidget * w, gpointer user_data)
{
const char *indent = user_data;
char buf[1024] = "";
int len = 0;
- len += sprintf(buf + len, "%s", indent);
- len += sprintf(buf + len, "%p %s mapped:%d visible:%d", w, G_OBJECT_TYPE_NAME(w), gtk_widget_get_mapped(w), gtk_widget_get_visible(w));
+ len += sprintf (buf + len, "%s", indent);
+ len +=
+ sprintf (buf + len, "%p %s mapped:%d visible:%d", w,
+ G_OBJECT_TYPE_NAME (w), gtk_widget_get_mapped (w),
+ gtk_widget_get_visible (w));
gint wd, hi;
- gtk_widget_get_size_request(w, &wd, &hi);
- len += sprintf(buf + len, " size_req:%dx%d", wd, hi);
+ gtk_widget_get_size_request (w, &wd, &hi);
+ len += sprintf (buf + len, " size_req:%dx%d", wd, hi);
GtkAllocation alloc;
- gtk_widget_get_allocation(w, &alloc);
- len += sprintf(buf + len, " alloc:%dx%d+%d+%d", alloc.width, alloc.height, alloc.x, alloc.y);
- len += sprintf(buf + len, " haswin:%d", gtk_widget_get_has_window(w));
- len += sprintf(buf + len, " gdkwin:%p", gtk_widget_get_window(w));
- PGTK_TRACE("%s", buf);
-
- if (GTK_IS_CONTAINER(w)) {
- strcpy(buf, indent);
- strcat(buf, " ");
- gtk_container_foreach(GTK_CONTAINER(w), print_widget_tree_recursive, buf);
- }
+ gtk_widget_get_allocation (w, &alloc);
+ len +=
+ sprintf (buf + len, " alloc:%dx%d+%d+%d", alloc.width, alloc.height,
+ alloc.x, alloc.y);
+ len += sprintf (buf + len, " haswin:%d", gtk_widget_get_has_window (w));
+ len += sprintf (buf + len, " gdkwin:%p", gtk_widget_get_window (w));
+ PGTK_TRACE ("%s", buf);
+
+ if (GTK_IS_CONTAINER (w))
+ {
+ strcpy (buf, indent);
+ strcat (buf, " ");
+ gtk_container_foreach (GTK_CONTAINER (w), print_widget_tree_recursive,
+ buf);
+ }
}
-static void print_widget_tree(GtkWidget *w)
+static void
+print_widget_tree (GtkWidget * w)
{
char indent[1] = "";
- w = gtk_widget_get_toplevel(w);
- print_widget_tree_recursive(w, indent);
+ w = gtk_widget_get_toplevel (w);
+ print_widget_tree_recursive (w, indent);
}
static gboolean
-pgtk_handle_draw(GtkWidget *widget, cairo_t *cr, gpointer *data)
+pgtk_handle_draw (GtkWidget * widget, cairo_t * cr, gpointer * data)
{
struct frame *f;
- PGTK_TRACE("pgtk_handle_draw");
-
- print_widget_tree(widget);
-
- GdkWindow *win = gtk_widget_get_window(widget);
-
- PGTK_TRACE(" win=%p", win);
- if (win != NULL) {
- cairo_surface_t *src = NULL;
- f = pgtk_any_window_to_frame(win);
- PGTK_TRACE(" f=%p", f);
- if (f != NULL) {
- src = FRAME_X_OUTPUT(f)->cr_surface_visible_bell;
- if (src == NULL && FRAME_CR_ACTIVE_CONTEXT(f) != NULL)
- src = cairo_get_target(FRAME_CR_ACTIVE_CONTEXT(f));
- }
- PGTK_TRACE(" surface=%p", src);
- if (src != NULL) {
- PGTK_TRACE(" resized_p=%d", f->resized_p);
- PGTK_TRACE(" garbaged=%d", f->garbaged);
- PGTK_TRACE(" scroll_bar_width=%f", (double) PGTK_SCROLL_BAR_WIDTH(f));
- // PGTK_TRACE(" scroll_bar_adjust=%d", PGTK_SCROLL_BAR_ADJUST(f));
- PGTK_TRACE(" scroll_bar_cols=%d", FRAME_SCROLL_BAR_COLS(f));
- PGTK_TRACE(" column_width=%d", FRAME_COLUMN_WIDTH(f));
- cairo_set_source_surface(cr, src, 0, 0);
- cairo_paint(cr);
+ PGTK_TRACE ("pgtk_handle_draw");
+
+ print_widget_tree (widget);
+
+ GdkWindow *win = gtk_widget_get_window (widget);
+
+ PGTK_TRACE (" win=%p", win);
+ if (win != NULL)
+ {
+ cairo_surface_t *src = NULL;
+ f = pgtk_any_window_to_frame (win);
+ PGTK_TRACE (" f=%p", f);
+ if (f != NULL)
+ {
+ src = FRAME_X_OUTPUT (f)->cr_surface_visible_bell;
+ if (src == NULL && FRAME_CR_ACTIVE_CONTEXT (f) != NULL)
+ src = cairo_get_target (FRAME_CR_ACTIVE_CONTEXT (f));
+ }
+ PGTK_TRACE (" surface=%p", src);
+ if (src != NULL)
+ {
+ PGTK_TRACE (" resized_p=%d", f->resized_p);
+ PGTK_TRACE (" garbaged=%d", f->garbaged);
+ PGTK_TRACE (" scroll_bar_width=%f",
+ (double) PGTK_SCROLL_BAR_WIDTH (f));
+ // PGTK_TRACE(" scroll_bar_adjust=%d", PGTK_SCROLL_BAR_ADJUST(f));
+ PGTK_TRACE (" scroll_bar_cols=%d", FRAME_SCROLL_BAR_COLS (f));
+ PGTK_TRACE (" column_width=%d", FRAME_COLUMN_WIDTH (f));
+ cairo_set_source_surface (cr, src, 0, 0);
+ cairo_paint (cr);
+ }
}
- }
return FALSE;
}
-static void size_allocate(GtkWidget *widget, GtkAllocation *alloc, gpointer *user_data)
+static void
+size_allocate (GtkWidget * widget, GtkAllocation * alloc,
+ gpointer * user_data)
{
- PGTK_TRACE("size-alloc: %dx%d+%d+%d.", alloc->width, alloc->height, alloc->x, alloc->y);
+ PGTK_TRACE ("size-alloc: %dx%d+%d+%d.", alloc->width, alloc->height,
+ alloc->x, alloc->y);
- struct frame *f = pgtk_any_window_to_frame (gtk_widget_get_window(widget));
- if (f) {
- PGTK_TRACE("%dx%d", alloc->width, alloc->height);
- xg_frame_resized(f, alloc->width, alloc->height);
- pgtk_cr_update_surface_desired_size(f, alloc->width, alloc->height);
- }
+ struct frame *f = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
+ if (f)
+ {
+ PGTK_TRACE ("%dx%d", alloc->width, alloc->height);
+ xg_frame_resized (f, alloc->width, alloc->height);
+ pgtk_cr_update_surface_desired_size (f, alloc->width, alloc->height);
+ }
}
static void
GdkKeymap *keymap = gdk_keymap_get_for_display (gdpy);
GdkModifierType state = GDK_META_MASK;
gboolean r = gdk_keymap_map_virtual_modifiers (keymap, &state);
- if (r) {
- /* Meta key exists. */
- if (state == GDK_META_MASK) {
- dpyinfo->meta_mod_mask = GDK_MOD1_MASK; /* maybe this is meta. */
- dpyinfo->alt_mod_mask = 0;
- } else {
- dpyinfo->meta_mod_mask = state & ~GDK_META_MASK;
- if (dpyinfo->meta_mod_mask == GDK_MOD1_MASK)
- dpyinfo->alt_mod_mask = 0;
+ if (r)
+ {
+ /* Meta key exists. */
+ if (state == GDK_META_MASK)
+ {
+ dpyinfo->meta_mod_mask = GDK_MOD1_MASK; /* maybe this is meta. */
+ dpyinfo->alt_mod_mask = 0;
+ }
else
- dpyinfo->alt_mod_mask = GDK_MOD1_MASK;
+ {
+ dpyinfo->meta_mod_mask = state & ~GDK_META_MASK;
+ if (dpyinfo->meta_mod_mask == GDK_MOD1_MASK)
+ dpyinfo->alt_mod_mask = 0;
+ else
+ dpyinfo->alt_mod_mask = GDK_MOD1_MASK;
+ }
+ }
+ else
+ {
+ dpyinfo->meta_mod_mask = GDK_MOD1_MASK;
+ dpyinfo->alt_mod_mask = 0;
}
- } else {
- dpyinfo->meta_mod_mask = GDK_MOD1_MASK;
- dpyinfo->alt_mod_mask = 0;
- }
}
-static void get_modifier_values(
- int *mod_ctrl,
- int *mod_meta,
- int *mod_alt,
- int *mod_hyper,
- int *mod_super)
+static void
+get_modifier_values (int *mod_ctrl,
+ int *mod_meta,
+ int *mod_alt, int *mod_hyper, int *mod_super)
{
Lisp_Object tem;
*mod_ctrl = ctrl_modifier;
*mod_meta = meta_modifier;
- *mod_alt = alt_modifier;
+ *mod_alt = alt_modifier;
*mod_hyper = hyper_modifier;
*mod_super = super_modifier;
tem = Fget (Vx_ctrl_keysym, Qmodifier_value);
- if (INTEGERP (tem)) *mod_ctrl = XFIXNUM (tem) & INT_MAX;
+ if (INTEGERP (tem))
+ *mod_ctrl = XFIXNUM (tem) & INT_MAX;
tem = Fget (Vx_alt_keysym, Qmodifier_value);
- if (INTEGERP (tem)) *mod_alt = XFIXNUM (tem) & INT_MAX;
+ if (INTEGERP (tem))
+ *mod_alt = XFIXNUM (tem) & INT_MAX;
tem = Fget (Vx_meta_keysym, Qmodifier_value);
- if (INTEGERP (tem)) *mod_meta = XFIXNUM (tem) & INT_MAX;
+ if (INTEGERP (tem))
+ *mod_meta = XFIXNUM (tem) & INT_MAX;
tem = Fget (Vx_hyper_keysym, Qmodifier_value);
- if (INTEGERP (tem)) *mod_hyper = XFIXNUM (tem) & INT_MAX;
+ if (INTEGERP (tem))
+ *mod_hyper = XFIXNUM (tem) & INT_MAX;
tem = Fget (Vx_super_keysym, Qmodifier_value);
- if (INTEGERP (tem)) *mod_super = XFIXNUM (tem) & INT_MAX;
+ if (INTEGERP (tem))
+ *mod_super = XFIXNUM (tem) & INT_MAX;
}
int
int mod_super;
int mod;
- get_modifier_values(&mod_ctrl, &mod_meta, &mod_alt, &mod_hyper, &mod_super);
+ get_modifier_values (&mod_ctrl, &mod_meta, &mod_alt, &mod_hyper,
+ &mod_super);
mod = 0;
- if (state & GDK_SHIFT_MASK) mod |= shift_modifier;
- if (state & GDK_CONTROL_MASK) mod |= mod_ctrl;
- if (state & dpyinfo->meta_mod_mask) mod |= mod_meta;
- if (state & dpyinfo->alt_mod_mask) mod |= mod_alt;
- if (state & GDK_SUPER_MASK) mod |= mod_super;
- if (state & GDK_HYPER_MASK) mod |= mod_hyper;
+ if (state & GDK_SHIFT_MASK)
+ mod |= shift_modifier;
+ if (state & GDK_CONTROL_MASK)
+ mod |= mod_ctrl;
+ if (state & dpyinfo->meta_mod_mask)
+ mod |= mod_meta;
+ if (state & dpyinfo->alt_mod_mask)
+ mod |= mod_alt;
+ if (state & GDK_SUPER_MASK)
+ mod |= mod_super;
+ if (state & GDK_HYPER_MASK)
+ mod |= mod_hyper;
return mod;
}
int mod_super;
int mask;
- get_modifier_values(&mod_ctrl, &mod_meta, &mod_alt, &mod_hyper, &mod_super);
+ get_modifier_values (&mod_ctrl, &mod_meta, &mod_alt, &mod_hyper,
+ &mod_super);
mask = 0;
- if (state & mod_alt) mask |= dpyinfo->alt_mod_mask;
- if (state & mod_super) mask |= GDK_SUPER_MASK;
- if (state & mod_hyper) mask |= GDK_HYPER_MASK;
- if (state & shift_modifier) mask |= GDK_SHIFT_MASK;
- if (state & mod_ctrl) mask |= GDK_CONTROL_MASK;
- if (state & mod_meta) mask |= dpyinfo->meta_mod_mask;
+ if (state & mod_alt)
+ mask |= dpyinfo->alt_mod_mask;
+ if (state & mod_super)
+ mask |= GDK_SUPER_MASK;
+ if (state & mod_hyper)
+ mask |= GDK_HYPER_MASK;
+ if (state & shift_modifier)
+ mask |= GDK_SHIFT_MASK;
+ if (state & mod_ctrl)
+ mask |= GDK_CONTROL_MASK;
+ if (state & mod_meta)
+ mask |= dpyinfo->meta_mod_mask;
return mask;
}
#define IsFunctionKey(keysym) (0xffbe <= (keysym) && (keysym) < 0xffe1)
void
-pgtk_enqueue_string(struct frame *f, gchar *str)
+pgtk_enqueue_string (struct frame *f, gchar * str)
{
gunichar *ustr;
ustr = g_utf8_to_ucs4 (str, -1, NULL, NULL, NULL);
if (ustr == NULL)
return;
- for ( ; *ustr != 0; ustr++) {
- union buffered_input_event inev;
- Lisp_Object c = make_fixnum (*ustr);
- EVENT_INIT (inev.ie);
- inev.ie.kind = (SINGLE_BYTE_CHAR_P (XFIXNAT (c))
- ? ASCII_KEYSTROKE_EVENT
- : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
- inev.ie.arg = Qnil;
- inev.ie.code = XFIXNAT (c);
- XSETFRAME (inev.ie.frame_or_window, f);
- inev.ie.modifiers = 0;
- inev.ie.timestamp = 0;
- evq_enqueue (&inev);
- }
+ for (; *ustr != 0; ustr++)
+ {
+ union buffered_input_event inev;
+ Lisp_Object c = make_fixnum (*ustr);
+ EVENT_INIT (inev.ie);
+ inev.ie.kind = (SINGLE_BYTE_CHAR_P (XFIXNAT (c))
+ ? ASCII_KEYSTROKE_EVENT
+ : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
+ inev.ie.arg = Qnil;
+ inev.ie.code = XFIXNAT (c);
+ XSETFRAME (inev.ie.frame_or_window, f);
+ inev.ie.modifiers = 0;
+ inev.ie.timestamp = 0;
+ evq_enqueue (&inev);
+ }
}
void
-pgtk_enqueue_preedit(struct frame *f, Lisp_Object preedit)
+pgtk_enqueue_preedit (struct frame *f, Lisp_Object preedit)
{
union buffered_input_event inev;
EVENT_INIT (inev.ie);
evq_enqueue (&inev);
}
-static gboolean key_press_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+static gboolean
+key_press_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
struct coding_system coding;
union buffered_input_event inev;
USE_SAFE_ALLOCA;
- PGTK_TRACE("key_press_event");
+ PGTK_TRACE ("key_press_event");
EVENT_INIT (inev.ie);
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- struct frame *f = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
- hlinfo = MOUSE_HL_INFO(f);
+ struct frame *f = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
+ hlinfo = MOUSE_HL_INFO (f);
/* If mouse-highlight is an integer, input clears out
mouse highlighting. */
hlinfo->mouse_face_hidden = true;
}
- if (f != 0) {
- if (pgtk_im_filter_keypress (f, &event->key))
- return TRUE;
- }
+ if (f != 0)
+ {
+ if (pgtk_im_filter_keypress (f, &event->key))
+ return TRUE;
+ }
if (f != 0)
{
guint keysym, orig_keysym;
/* al%imercury@uunet.uu.net says that making this 81
- instead of 80 fixed a bug whereby meta chars made
- his Emacs hang.
-
- It seems that some version of XmbLookupString has
- a bug of not returning XBufferOverflow in
- status_return even if the input is too long to
- fit in 81 bytes. So, we must prepare sufficient
- bytes for copy_buffer. 513 bytes (256 chars for
- two-byte character set) seems to be a fairly good
- approximation. -- 2000.8.10 handa@etl.go.jp */
+ instead of 80 fixed a bug whereby meta chars made
+ his Emacs hang.
+
+ It seems that some version of XmbLookupString has
+ a bug of not returning XBufferOverflow in
+ status_return even if the input is too long to
+ fit in 81 bytes. So, we must prepare sufficient
+ bytes for copy_buffer. 513 bytes (256 chars for
+ two-byte character set) seems to be a fairly good
+ approximation. -- 2000.8.10 handa@etl.go.jp */
unsigned char copy_buffer[513];
unsigned char *copy_bufptr = copy_buffer;
int copy_bufsiz = sizeof (copy_buffer);
Lisp_Object c;
guint state = event->key.state;
- state |= pgtk_emacs_to_gtk_modifiers (FRAME_DISPLAY_INFO (f), extra_keyboard_modifiers);
+ state |=
+ pgtk_emacs_to_gtk_modifiers (FRAME_DISPLAY_INFO (f),
+ extra_keyboard_modifiers);
modifiers = state;
/* This will have to go some day... */
/* make_lispy_event turns chars into control chars.
- Don't do it here because XLookupString is too eager. */
+ Don't do it here because XLookupString is too eager. */
state &= ~GDK_CONTROL_MASK;
state &= ~(GDK_META_MASK
- | GDK_SUPER_MASK
- | GDK_HYPER_MASK
- | GDK_MOD1_MASK);
+ | GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_MOD1_MASK);
nbytes = event->key.length;
if (nbytes > copy_bufsiz)
nbytes = copy_bufsiz;
- memcpy(copy_bufptr, event->key.string, nbytes);
+ memcpy (copy_bufptr, event->key.string, nbytes);
keysym = event->key.keyval;
orig_keysym = keysym;
/* Common for all keysym input events. */
XSETFRAME (inev.ie.frame_or_window, f);
- inev.ie.modifiers = pgtk_gtk_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), modifiers);
+ inev.ie.modifiers =
+ pgtk_gtk_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), modifiers);
inev.ie.timestamp = event->key.time;
/* First deal with keysyms which have defined
- translations to characters. */
+ translations to characters. */
if (keysym >= 32 && keysym < 128)
/* Avoid explicitly decoding each ASCII character. */
{
/* Now non-ASCII. */
if (HASH_TABLE_P (Vpgtk_keysym_table)
&& (c = Fgethash (make_fixnum (keysym),
- Vpgtk_keysym_table,
- Qnil),
- FIXNATP (c)))
+ Vpgtk_keysym_table, Qnil), FIXNATP (c)))
{
inev.ie.kind = (SINGLE_BYTE_CHAR_P (XFIXNAT (c))
? ASCII_KEYSTROKE_EVENT
if (((keysym >= GDK_KEY_BackSpace && keysym <= GDK_KEY_Escape)
|| keysym == GDK_KEY_Delete
#ifdef GDK_KEY_ISO_Left_Tab
- || (keysym >= GDK_KEY_ISO_Left_Tab
- && keysym <= GDK_KEY_ISO_Enter)
+ || (keysym >= GDK_KEY_ISO_Left_Tab && keysym <= GDK_KEY_ISO_Enter)
#endif
- || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */
- || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */
+ || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */
+ || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */
#ifdef HPUX
/* This recognizes the "extended function
keys". It seems there's no cleaner way.
#ifdef GDK_KEY_dead_abovedot
|| orig_keysym == GDK_KEY_dead_abovedot
#endif
- || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */
- || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */
+ || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */
+ || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */
/* Any "vendor-specific" key is ok. */
|| (orig_keysym & (1 << 28))
|| (keysym != GDK_KEY_VoidSymbol && nbytes == 0))
- && ! (event->key.is_modifier
- /* The symbols from GDK_KEY_ISO_Lock
- to GDK_KEY_ISO_Last_Group_Lock
- don't have real modifiers but
- should be treated similarly to
- Mode_switch by Emacs. */
+ && !(event->key.is_modifier
+ /* The symbols from GDK_KEY_ISO_Lock
+ to GDK_KEY_ISO_Last_Group_Lock
+ don't have real modifiers but
+ should be treated similarly to
+ Mode_switch by Emacs. */
#if defined GDK_KEY_ISO_Lock && defined GDK_KEY_ISO_Last_Group_Lock
- || (GDK_KEY_ISO_Lock <= orig_keysym
- && orig_keysym <= GDK_KEY_ISO_Last_Group_Lock)
+ || (GDK_KEY_ISO_Lock <= orig_keysym
+ && orig_keysym <= GDK_KEY_ISO_Last_Group_Lock)
#endif
- ))
+ ))
{
STORE_KEYSYM_FOR_DEBUG (keysym);
/* make_lispy_event will convert this to a symbolic
goto done;
}
- { /* Raw bytes, not keysym. */
+ { /* Raw bytes, not keysym. */
ptrdiff_t i;
int nchars, len;
gives us composition information. */
coding.common_flags &= ~CODING_ANNOTATION_MASK;
- SAFE_NALLOCA (coding.destination, MAX_MULTIBYTE_LENGTH,
- nbytes);
+ SAFE_NALLOCA (coding.destination, MAX_MULTIBYTE_LENGTH, nbytes);
coding.dst_bytes = MAX_MULTIBYTE_LENGTH * nbytes;
coding.mode |= CODING_MODE_LAST_BLOCK;
decode_coding_c_string (&coding, copy_bufptr, nbytes, Qnil);
// count += nchars;
- inev.ie.kind = NO_EVENT; /* Already stored above. */
+ inev.ie.kind = NO_EVENT; /* Already stored above. */
if (keysym == GDK_KEY_VoidSymbol)
goto done;
}
}
- done:
+done:
if (inev.ie.kind != NO_EVENT)
{
XSETFRAME (inev.ie.frame_or_window, f);
// count++;
}
- SAFE_FREE();
+ SAFE_FREE ();
return TRUE;
}
-static gboolean key_release_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+static gboolean
+key_release_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
- PGTK_TRACE("key_release_event");
+ PGTK_TRACE ("key_release_event");
return TRUE;
}
-static gboolean configure_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+static gboolean
+configure_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
struct frame *f = pgtk_any_window_to_frame (event->configure.window);
- if (f && widget == FRAME_GTK_OUTER_WIDGET (f)) {
- PGTK_TRACE("%dx%d", event->configure.width, event->configure.height);
- xg_frame_resized(f, event->configure.width, event->configure.height);
- pgtk_cr_update_surface_desired_size(f, event->configure.width, event->configure.height);
- }
+ if (f && widget == FRAME_GTK_OUTER_WIDGET (f))
+ {
+ PGTK_TRACE ("%dx%d", event->configure.width, event->configure.height);
+ xg_frame_resized (f, event->configure.width, event->configure.height);
+ pgtk_cr_update_surface_desired_size (f, event->configure.width,
+ event->configure.height);
+ }
return TRUE;
}
-static gboolean map_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+static gboolean
+map_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
struct frame *f = pgtk_any_window_to_frame (event->any.window);
union buffered_input_event inev;
- PGTK_TRACE("map_event");
+ PGTK_TRACE ("map_event");
EVENT_INIT (inev.ie);
inev.ie.kind = NO_EVENT;
bool iconified = FRAME_ICONIFIED_P (f);
/* Check if fullscreen was specified before we where mapped the
- first time, i.e. from the command line. */
- if (!FRAME_X_OUTPUT(f)->has_been_visible)
+ first time, i.e. from the command line. */
+ if (!FRAME_X_OUTPUT (f)->has_been_visible)
{
- set_fullscreen_state(f);
+ set_fullscreen_state (f);
}
if (!iconified)
SET_FRAME_VISIBLE (f, 1);
SET_FRAME_ICONIFIED (f, false);
- FRAME_X_OUTPUT(f)->has_been_visible = true;
+ FRAME_X_OUTPUT (f)->has_been_visible = true;
if (iconified)
{
inev.ie.kind = DEICONIFY_EVENT;
XSETFRAME (inev.ie.frame_or_window, f);
}
- else if (! NILP (Vframe_list) && ! NILP (XCDR (Vframe_list)))
+ else if (!NILP (Vframe_list) && !NILP (XCDR (Vframe_list)))
/* Force a redisplay sooner or later to update the
frame titles in case this is the second frame. */
record_asynch_buffer_change ();
}
if (inev.ie.kind != NO_EVENT)
- evq_enqueue(&inev);
+ evq_enqueue (&inev);
return FALSE;
}
-static gboolean window_state_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+static gboolean
+window_state_event (GtkWidget * widget, GdkEvent * event,
+ gpointer * user_data)
{
struct frame *f = pgtk_any_window_to_frame (event->window_state.window);
union buffered_input_event inev;
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- if (f) {
- if (event->window_state.new_window_state & GDK_WINDOW_STATE_FOCUSED)
- {
- if (FRAME_ICONIFIED_P (f))
- {
- /* Gnome shell does not iconify us when C-z is pressed.
- It hides the frame. So if our state says we aren't
- hidden anymore, treat it as deiconified. */
- SET_FRAME_VISIBLE (f, 1);
- SET_FRAME_ICONIFIED (f, false);
- FRAME_X_OUTPUT(f)->has_been_visible = true;
- inev.ie.kind = DEICONIFY_EVENT;
- XSETFRAME (inev.ie.frame_or_window, f);
- }
- }
- }
+ if (f)
+ {
+ if (event->window_state.new_window_state & GDK_WINDOW_STATE_FOCUSED)
+ {
+ if (FRAME_ICONIFIED_P (f))
+ {
+ /* Gnome shell does not iconify us when C-z is pressed.
+ It hides the frame. So if our state says we aren't
+ hidden anymore, treat it as deiconified. */
+ SET_FRAME_VISIBLE (f, 1);
+ SET_FRAME_ICONIFIED (f, false);
+ FRAME_X_OUTPUT (f)->has_been_visible = true;
+ inev.ie.kind = DEICONIFY_EVENT;
+ XSETFRAME (inev.ie.frame_or_window, f);
+ }
+ }
+ }
if (inev.ie.kind != NO_EVENT)
- evq_enqueue(&inev);
+ evq_enqueue (&inev);
return FALSE;
}
-static gboolean delete_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+static gboolean
+delete_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
struct frame *f = pgtk_any_window_to_frame (event->any.window);
union buffered_input_event inev;
- PGTK_TRACE("delete_event");
+ PGTK_TRACE ("delete_event");
EVENT_INIT (inev.ie);
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- if (f) {
- inev.ie.kind = DELETE_WINDOW_EVENT;
- XSETFRAME (inev.ie.frame_or_window, f);
- }
+ if (f)
+ {
+ inev.ie.kind = DELETE_WINDOW_EVENT;
+ XSETFRAME (inev.ie.frame_or_window, f);
+ }
if (inev.ie.kind != NO_EVENT)
- evq_enqueue(&inev);
+ evq_enqueue (&inev);
return TRUE;
}
a FOCUS_IN_EVENT into *BUFP. */
static void
-x_focus_changed (gboolean is_enter, int state, struct pgtk_display_info *dpyinfo, struct frame *frame, union buffered_input_event *bufp)
+x_focus_changed (gboolean is_enter, int state,
+ struct pgtk_display_info *dpyinfo, struct frame *frame,
+ union buffered_input_event *bufp)
{
if (is_enter)
{
if (dpyinfo->x_focus_event_frame != frame)
- {
- x_new_focus_frame (dpyinfo, frame);
- dpyinfo->x_focus_event_frame = frame;
-
- /* Don't stop displaying the initial startup message
- for a switch-frame event we don't need. */
- /* When run as a daemon, Vterminal_frame is always NIL. */
- bufp->ie.arg = (((NILP (Vterminal_frame)
- || ! FRAME_PGTK_P (XFRAME (Vterminal_frame))
- || EQ (Fdaemonp (), Qt))
- && CONSP (Vframe_list)
- && !NILP (XCDR (Vframe_list)))
- ? Qt : Qnil);
- bufp->ie.kind = FOCUS_IN_EVENT;
- XSETFRAME (bufp->ie.frame_or_window, frame);
- }
+ {
+ x_new_focus_frame (dpyinfo, frame);
+ dpyinfo->x_focus_event_frame = frame;
+
+ /* Don't stop displaying the initial startup message
+ for a switch-frame event we don't need. */
+ /* When run as a daemon, Vterminal_frame is always NIL. */
+ bufp->ie.arg = (((NILP (Vterminal_frame)
+ || !FRAME_PGTK_P (XFRAME (Vterminal_frame))
+ || EQ (Fdaemonp (), Qt))
+ && CONSP (Vframe_list)
+ && !NILP (XCDR (Vframe_list))) ? Qt : Qnil);
+ bufp->ie.kind = FOCUS_IN_EVENT;
+ XSETFRAME (bufp->ie.frame_or_window, frame);
+ }
frame->output_data.pgtk->focus_state |= state;
}
static gboolean
-enter_notify_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+enter_notify_event (GtkWidget * widget, GdkEvent * event,
+ gpointer * user_data)
{
- PGTK_TRACE("enter_notify_event");
+ PGTK_TRACE ("enter_notify_event");
union buffered_input_event inev;
- struct frame *frame = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ struct frame *frame =
+ pgtk_any_window_to_frame (gtk_widget_get_window (widget));
if (frame == NULL)
return FALSE;
struct pgtk_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
inev.ie.arg = Qnil;
if (event->crossing.detail != GDK_NOTIFY_INFERIOR
- && event->crossing.focus
- && ! (focus_state & FOCUS_EXPLICIT))
- x_focus_changed (TRUE,
- FOCUS_IMPLICIT,
- dpyinfo, frame, &inev);
+ && event->crossing.focus && !(focus_state & FOCUS_EXPLICIT))
+ x_focus_changed (TRUE, FOCUS_IMPLICIT, dpyinfo, frame, &inev);
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
return TRUE;
}
static gboolean
-leave_notify_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+leave_notify_event (GtkWidget * widget, GdkEvent * event,
+ gpointer * user_data)
{
- PGTK_TRACE("leave_notify_event");
+ PGTK_TRACE ("leave_notify_event");
union buffered_input_event inev;
- struct frame *frame = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ struct frame *frame =
+ pgtk_any_window_to_frame (gtk_widget_get_window (widget));
if (frame == NULL)
return FALSE;
struct pgtk_display_info *dpyinfo = FRAME_DISPLAY_INFO (frame);
inev.ie.arg = Qnil;
if (event->crossing.detail != GDK_NOTIFY_INFERIOR
- && event->crossing.focus
- && ! (focus_state & FOCUS_EXPLICIT))
- x_focus_changed (FALSE,
- FOCUS_IMPLICIT,
- dpyinfo, frame, &inev);
+ && event->crossing.focus && !(focus_state & FOCUS_EXPLICIT))
+ x_focus_changed (FALSE, FOCUS_IMPLICIT, dpyinfo, frame, &inev);
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
return TRUE;
}
static gboolean
-focus_in_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+focus_in_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
- PGTK_TRACE("focus_in_event");
+ PGTK_TRACE ("focus_in_event");
union buffered_input_event inev;
- struct frame *frame = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ struct frame *frame =
+ pgtk_any_window_to_frame (gtk_widget_get_window (widget));
if (frame == NULL)
return TRUE;
inev.ie.arg = Qnil;
x_focus_changed (TRUE, FOCUS_EXPLICIT,
- FRAME_DISPLAY_INFO(frame), frame, &inev);
+ FRAME_DISPLAY_INFO (frame), frame, &inev);
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
}
static gboolean
-focus_out_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+focus_out_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
- PGTK_TRACE("focus_out_event");
+ PGTK_TRACE ("focus_out_event");
union buffered_input_event inev;
- struct frame *frame = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ struct frame *frame =
+ pgtk_any_window_to_frame (gtk_widget_get_window (widget));
if (frame == NULL)
return TRUE;
inev.ie.arg = Qnil;
x_focus_changed (FALSE, FOCUS_EXPLICIT,
- FRAME_DISPLAY_INFO(frame), frame, &inev);
+ FRAME_DISPLAY_INFO (frame), frame, &inev);
if (inev.ie.kind != NO_EVENT)
- evq_enqueue(&inev);
+ evq_enqueue (&inev);
pgtk_im_focus_out (frame);
another motion event, so we can check again the next time it moves. */
static bool
-note_mouse_movement (struct frame *frame, const GdkEventMotion *event)
+note_mouse_movement (struct frame *frame, const GdkEventMotion * event)
{
XRectangle *r;
struct pgtk_display_info *dpyinfo;
dpyinfo->last_mouse_motion_x = event->x;
dpyinfo->last_mouse_motion_y = event->y;
- if (event->window != gtk_widget_get_window(FRAME_GTK_WIDGET (frame)))
+ if (event->window != gtk_widget_get_window (FRAME_GTK_WIDGET (frame)))
{
frame->mouse_moved = true;
dpyinfo->last_mouse_scroll_bar = NULL;
}
static gboolean
-motion_notify_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+motion_notify_event (GtkWidget * widget, GdkEvent * event,
+ gpointer * user_data)
{
- PGTK_TRACE("motion_notify_event");
+ PGTK_TRACE ("motion_notify_event");
union buffered_input_event inev;
struct frame *f, *frame;
struct pgtk_display_info *dpyinfo;
previous_help_echo_string = help_echo_string;
help_echo_string = Qnil;
- frame = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ frame = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
dpyinfo = FRAME_DISPLAY_INFO (frame);
f = (gui_mouse_grabbed (dpyinfo) ? dpyinfo->last_mouse_frame
- : pgtk_any_window_to_frame(gtk_widget_get_window(widget)));
+ : pgtk_any_window_to_frame (gtk_widget_get_window (widget)));
hlinfo = MOUSE_HL_INFO (f);
if (hlinfo->mouse_face_hidden)
if (f)
{
/* Maybe generate a SELECT_WINDOW_EVENT for
- `mouse-autoselect-window' but don't let popup menus
- interfere with this (Bug#1261). */
+ `mouse-autoselect-window' but don't let popup menus
+ interfere with this (Bug#1261). */
if (!NILP (Vmouse_autoselect_window)
/* Don't switch if we're currently in the minibuffer.
This tries to work around problems where the
&& !MINI_WINDOW_P (XWINDOW (selected_window))
/* With `focus-follows-mouse' non-nil create an event
also when the target window is on another frame. */
- && (f == XFRAME (selected_frame)
- || !NILP (focus_follows_mouse)))
+ && (f == XFRAME (selected_frame) || !NILP (focus_follows_mouse)))
{
static Lisp_Object last_mouse_window;
Lisp_Object window = window_from_coordinates
else
{
/* If we move outside the frame, then we're
- certainly no longer on any text in the frame. */
+ certainly no longer on any text in the frame. */
clear_mouse_face (hlinfo);
}
/* If the contents of the global variable help_echo_string
has changed, generate a HELP_EVENT. */
int do_help = 0;
- if (!NILP (help_echo_string)
- || !NILP (previous_help_echo_string))
+ if (!NILP (help_echo_string) || !NILP (previous_help_echo_string))
do_help = 1;
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
- if (do_help > 0) {
- Lisp_Object frame;
- union buffered_input_event inev;
+ if (do_help > 0)
+ {
+ Lisp_Object frame;
+ union buffered_input_event inev;
- if (f)
- XSETFRAME (frame, f);
- else
- frame = Qnil;
-
- inev.ie.kind = HELP_EVENT;
- inev.ie.frame_or_window = frame;
- inev.ie.arg = help_echo_object;
- inev.ie.x = help_echo_window;
- inev.ie.y = help_echo_string;
- inev.ie.timestamp = help_echo_pos;
- evq_enqueue(&inev);
- }
+ if (f)
+ XSETFRAME (frame, f);
+ else
+ frame = Qnil;
+
+ inev.ie.kind = HELP_EVENT;
+ inev.ie.frame_or_window = frame;
+ inev.ie.arg = help_echo_object;
+ inev.ie.x = help_echo_window;
+ inev.ie.y = help_echo_string;
+ inev.ie.timestamp = help_echo_pos;
+ evq_enqueue (&inev);
+ }
return TRUE;
}
static Lisp_Object
construct_mouse_click (struct input_event *result,
- const GdkEventButton *event,
- struct frame *f)
+ const GdkEventButton * event, struct frame *f)
{
/* Make the event type NO_EVENT; we'll change that when we decide
otherwise. */
result->kind = MOUSE_CLICK_EVENT;
result->code = event->button - 1;
result->timestamp = event->time;
- result->modifiers = (pgtk_gtk_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), event->state)
- | (event->type == GDK_BUTTON_RELEASE
- ? up_modifier
- : down_modifier));
+ result->modifiers =
+ (pgtk_gtk_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), event->state) |
+ (event->type == GDK_BUTTON_RELEASE ? up_modifier : down_modifier));
XSETINT (result->x, event->x);
XSETINT (result->y, event->y);
}
static gboolean
-button_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+button_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
- PGTK_TRACE("button_event: type=%d, button=%u.", event->button.type, event->button.button);
+ PGTK_TRACE ("button_event: type=%d, button=%u.", event->button.type,
+ event->button.button);
union buffered_input_event inev;
struct frame *f, *frame;
struct pgtk_display_info *dpyinfo;
if (event->type != GDK_BUTTON_PRESS && event->type != GDK_BUTTON_RELEASE)
return TRUE;
- frame = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ frame = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
dpyinfo = FRAME_DISPLAY_INFO (frame);
dpyinfo->last_mouse_glyph_frame = NULL;
f = dpyinfo->last_mouse_frame;
else
{
- f = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ f = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
if (f && event->button.type == GDK_BUTTON_PRESS
&& !FRAME_NO_ACCEPT_FOCUS (f))
dpyinfo->last_mouse_frame = f;
if (dpyinfo->last_click_event != NULL)
- gdk_event_free(dpyinfo->last_click_event);
- dpyinfo->last_click_event = gdk_event_copy(event);
+ gdk_event_free (dpyinfo->last_click_event);
+ dpyinfo->last_click_event = gdk_event_copy (event);
}
else
dpyinfo->grabbed &= ~(1 << event->button.button);
}
static gboolean
-scroll_event(GtkWidget *widget, GdkEvent *event, gpointer *user_data)
+scroll_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
{
- PGTK_TRACE("scroll_event");
+ PGTK_TRACE ("scroll_event");
union buffered_input_event inev;
struct frame *f, *frame;
struct pgtk_display_info *dpyinfo;
inev.ie.kind = NO_EVENT;
inev.ie.arg = Qnil;
- frame = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ frame = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
dpyinfo = FRAME_DISPLAY_INFO (frame);
if (gui_mouse_grabbed (dpyinfo))
f = dpyinfo->last_mouse_frame;
else
- f = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
+ f = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
inev.ie.kind = WHEEL_EVENT;
inev.ie.timestamp = event->scroll.time;
- inev.ie.modifiers = pgtk_gtk_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), event->scroll.state);
+ inev.ie.modifiers =
+ pgtk_gtk_to_emacs_modifiers (FRAME_DISPLAY_INFO (f), event->scroll.state);
XSETINT (inev.ie.x, event->scroll.x);
XSETINT (inev.ie.y, event->scroll.y);
XSETFRAME (inev.ie.frame_or_window, f);
inev.ie.arg = Qnil;
- switch (event->scroll.direction) {
- case GDK_SCROLL_UP:
- inev.ie.kind = WHEEL_EVENT;
- inev.ie.modifiers |= up_modifier;
- break;
- case GDK_SCROLL_DOWN:
- inev.ie.kind = WHEEL_EVENT;
- inev.ie.modifiers |= down_modifier;
- break;
- case GDK_SCROLL_LEFT:
- inev.ie.kind = HORIZ_WHEEL_EVENT;
- inev.ie.modifiers |= up_modifier;
- break;
- case GDK_SCROLL_RIGHT:
- inev.ie.kind = HORIZ_WHEEL_EVENT;
- inev.ie.modifiers |= down_modifier;
- break;
- case GDK_SCROLL_SMOOTH:
- if (event->scroll.delta_y >= 0.5) {
- inev.ie.kind = WHEEL_EVENT;
- inev.ie.modifiers |= down_modifier;
- } else if (event->scroll.delta_y <= -0.5) {
+ switch (event->scroll.direction)
+ {
+ case GDK_SCROLL_UP:
inev.ie.kind = WHEEL_EVENT;
inev.ie.modifiers |= up_modifier;
- } else if (event->scroll.delta_x >= 0.5) {
- inev.ie.kind = HORIZ_WHEEL_EVENT;
+ break;
+ case GDK_SCROLL_DOWN:
+ inev.ie.kind = WHEEL_EVENT;
inev.ie.modifiers |= down_modifier;
- } else if (event->scroll.delta_x <= -0.5) {
+ break;
+ case GDK_SCROLL_LEFT:
inev.ie.kind = HORIZ_WHEEL_EVENT;
inev.ie.modifiers |= up_modifier;
- } else
+ break;
+ case GDK_SCROLL_RIGHT:
+ inev.ie.kind = HORIZ_WHEEL_EVENT;
+ inev.ie.modifiers |= down_modifier;
+ break;
+ case GDK_SCROLL_SMOOTH:
+ if (event->scroll.delta_y >= 0.5)
+ {
+ inev.ie.kind = WHEEL_EVENT;
+ inev.ie.modifiers |= down_modifier;
+ }
+ else if (event->scroll.delta_y <= -0.5)
+ {
+ inev.ie.kind = WHEEL_EVENT;
+ inev.ie.modifiers |= up_modifier;
+ }
+ else if (event->scroll.delta_x >= 0.5)
+ {
+ inev.ie.kind = HORIZ_WHEEL_EVENT;
+ inev.ie.modifiers |= down_modifier;
+ }
+ else if (event->scroll.delta_x <= -0.5)
+ {
+ inev.ie.kind = HORIZ_WHEEL_EVENT;
+ inev.ie.modifiers |= up_modifier;
+ }
+ else
+ return TRUE;
+ break;
+ default:
return TRUE;
- break;
- default:
- return TRUE;
- }
+ }
if (inev.ie.kind != NO_EVENT)
evq_enqueue (&inev);
return TRUE;
}
-static gboolean drag_drop(GtkWidget *widget,
- GdkDragContext *context,
- gint x, gint y,
- guint time_,
- gpointer user_data)
+static gboolean
+drag_drop (GtkWidget * widget,
+ GdkDragContext * context,
+ gint x, gint y, guint time_, gpointer user_data)
{
- PGTK_TRACE("drag_drop");
- GdkAtom target = gtk_drag_dest_find_target(widget, context, NULL);
- PGTK_TRACE("drag_drop: target: %p", (void *) target);
+ PGTK_TRACE ("drag_drop");
+ GdkAtom target = gtk_drag_dest_find_target (widget, context, NULL);
+ PGTK_TRACE ("drag_drop: target: %p", (void *) target);
- if (target == GDK_NONE) {
- gtk_drag_finish(context, TRUE, FALSE, time_);
- return FALSE;
- }
+ if (target == GDK_NONE)
+ {
+ gtk_drag_finish (context, TRUE, FALSE, time_);
+ return FALSE;
+ }
- gtk_drag_get_data(widget, context, target, time_);
+ gtk_drag_get_data (widget, context, target, time_);
return TRUE;
}
-static void drag_data_received(GtkWidget *widget, GdkDragContext *context,
- gint x, gint y,
- GtkSelectionData *data,
- guint info, guint time_,
- gpointer user_data)
+static void
+drag_data_received (GtkWidget * widget, GdkDragContext * context,
+ gint x, gint y,
+ GtkSelectionData * data,
+ guint info, guint time_, gpointer user_data)
{
- PGTK_TRACE("drag_data_received:");
- struct frame *f = pgtk_any_window_to_frame(gtk_widget_get_window(widget));
- gchar **uris = gtk_selection_data_get_uris(data);
+ PGTK_TRACE ("drag_data_received:");
+ struct frame *f = pgtk_any_window_to_frame (gtk_widget_get_window (widget));
+ gchar **uris = gtk_selection_data_get_uris (data);
- if (uris != NULL) {
- for (int i = 0; uris[i] != NULL; i++) {
- union buffered_input_event inev;
- Lisp_Object arg = Qnil;
+ if (uris != NULL)
+ {
+ for (int i = 0; uris[i] != NULL; i++)
+ {
+ union buffered_input_event inev;
+ Lisp_Object arg = Qnil;
- PGTK_TRACE("drag_data_received: uri: %s", uris[i]);
+ PGTK_TRACE ("drag_data_received: uri: %s", uris[i]);
- EVENT_INIT (inev.ie);
- inev.ie.kind = NO_EVENT;
- inev.ie.arg = Qnil;
+ EVENT_INIT (inev.ie);
+ inev.ie.kind = NO_EVENT;
+ inev.ie.arg = Qnil;
- arg = list2(Qurl, build_string(uris[i]));
+ arg = list2 (Qurl, build_string (uris[i]));
- inev.ie.kind = DRAG_N_DROP_EVENT;
- inev.ie.modifiers = 0;
- XSETINT(inev.ie.x, x);
- XSETINT(inev.ie.y, y);
- XSETFRAME(inev.ie.frame_or_window, f);
- inev.ie.arg = arg;
- inev.ie.timestamp = 0;
+ inev.ie.kind = DRAG_N_DROP_EVENT;
+ inev.ie.modifiers = 0;
+ XSETINT (inev.ie.x, x);
+ XSETINT (inev.ie.y, y);
+ XSETFRAME (inev.ie.frame_or_window, f);
+ inev.ie.arg = arg;
+ inev.ie.timestamp = 0;
- evq_enqueue (&inev);
+ evq_enqueue (&inev);
+ }
}
- }
- PGTK_TRACE("drag_data_received: that's all.");
+ PGTK_TRACE ("drag_data_received: that's all.");
- gtk_drag_finish(context, TRUE, FALSE, time_);
+ gtk_drag_finish (context, TRUE, FALSE, time_);
}
void
-pgtk_set_event_handler(struct frame *f)
-{
- gtk_drag_dest_set(FRAME_GTK_WIDGET(f), GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY);
- gtk_drag_dest_add_uri_targets(FRAME_GTK_WIDGET(f));
-
- g_signal_connect(G_OBJECT(FRAME_GTK_OUTER_WIDGET(f)), "window-state-event", G_CALLBACK(window_state_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_OUTER_WIDGET(f)), "delete-event", G_CALLBACK(delete_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_OUTER_WIDGET(f)), "map-event", G_CALLBACK(map_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_OUTER_WIDGET(f)), "event", G_CALLBACK(pgtk_handle_event), NULL);
-
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "size-allocate", G_CALLBACK(size_allocate), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "key-press-event", G_CALLBACK(key_press_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "key-release-event", G_CALLBACK(key_release_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "focus-in-event", G_CALLBACK(focus_in_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "focus-out-event", G_CALLBACK(focus_out_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "enter-notify-event", G_CALLBACK(enter_notify_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "leave-notify-event", G_CALLBACK(leave_notify_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "motion-notify-event", G_CALLBACK(motion_notify_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "button-press-event", G_CALLBACK(button_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "button-release-event", G_CALLBACK(button_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "scroll-event", G_CALLBACK(scroll_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "selection-clear-event", G_CALLBACK(pgtk_selection_lost), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "configure-event", G_CALLBACK(configure_event), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "drag-drop", G_CALLBACK(drag_drop), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "drag-data-received", G_CALLBACK(drag_data_received), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "draw", G_CALLBACK(pgtk_handle_draw), NULL);
- g_signal_connect(G_OBJECT(FRAME_GTK_WIDGET(f)), "event", G_CALLBACK(pgtk_handle_event), NULL);
+pgtk_set_event_handler (struct frame *f)
+{
+ gtk_drag_dest_set (FRAME_GTK_WIDGET (f), GTK_DEST_DEFAULT_ALL, NULL, 0,
+ GDK_ACTION_COPY);
+ gtk_drag_dest_add_uri_targets (FRAME_GTK_WIDGET (f));
+
+ g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)),
+ "window-state-event", G_CALLBACK (window_state_event),
+ NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "delete-event",
+ G_CALLBACK (delete_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "map-event",
+ G_CALLBACK (map_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "event",
+ G_CALLBACK (pgtk_handle_event), NULL);
+
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "size-allocate",
+ G_CALLBACK (size_allocate), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "key-press-event",
+ G_CALLBACK (key_press_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "key-release-event",
+ G_CALLBACK (key_release_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "focus-in-event",
+ G_CALLBACK (focus_in_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "focus-out-event",
+ G_CALLBACK (focus_out_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "enter-notify-event",
+ G_CALLBACK (enter_notify_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "leave-notify-event",
+ G_CALLBACK (leave_notify_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "motion-notify-event",
+ G_CALLBACK (motion_notify_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "button-press-event",
+ G_CALLBACK (button_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "button-release-event",
+ G_CALLBACK (button_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "scroll-event",
+ G_CALLBACK (scroll_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "selection-clear-event",
+ G_CALLBACK (pgtk_selection_lost), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "configure-event",
+ G_CALLBACK (configure_event), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "drag-drop",
+ G_CALLBACK (drag_drop), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "drag-data-received",
+ G_CALLBACK (drag_data_received), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "draw",
+ G_CALLBACK (pgtk_handle_draw), NULL);
+ g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "event",
+ G_CALLBACK (pgtk_handle_event), NULL);
}
static void
-my_log_handler (const gchar *log_domain, GLogLevelFlags log_level,
- const gchar *msg, gpointer user_data)
+my_log_handler (const gchar * log_domain, GLogLevelFlags log_level,
+ const gchar * msg, gpointer user_data)
{
if (!strstr (msg, "g_set_prgname"))
- fprintf (stderr, "%s-WARNING **: %s", log_domain, msg);
+ fprintf (stderr, "%s-WARNING **: %s", log_domain, msg);
}
/* Test whether two display-name strings agree up to the dot that separates
length_until_period++;
/* Treat `unix' like an empty host name. */
- if (! strncmp (name1, "unix:", 5))
+ if (!strncmp (name1, "unix:", 5))
name1 += 4;
- if (! strncmp (name2, "unix:", 5))
+ if (!strncmp (name2, "unix:", 5))
name2 += 4;
/* Treat this host's name like an empty host name. */
- if (! strncmp (name1, system_name, system_name_length)
+ if (!strncmp (name1, system_name, system_name_length)
&& name1[system_name_length] == ':')
name1 += system_name_length;
- if (! strncmp (name2, system_name, system_name_length)
+ if (!strncmp (name2, system_name, system_name_length)
&& name2[system_name_length] == ':')
name2 += system_name_length;
/* Treat this host's domainless name like an empty host name. */
- if (! strncmp (name1, system_name, length_until_period)
+ if (!strncmp (name1, system_name, length_until_period)
&& name1[length_until_period] == ':')
name1 += length_until_period;
- if (! strncmp (name2, system_name, length_until_period)
+ if (!strncmp (name2, system_name, length_until_period)
&& name2[length_until_period] == ':')
name2 += length_until_period;
}
dpy_name = SSDATA (display_name);
- if (strlen(dpy_name) == 0 && initial_display != NULL)
+ if (strlen (dpy_name) == 0 && initial_display != NULL)
dpy_name = initial_display;
lisp_dpy_name = build_string (dpy_name);
argc = 0;
argv[argc++] = initial_argv[0];
- if (strlen(dpy_name) != 0)
- {
- argv[argc++] = display_opt;
- argv[argc++] = dpy_name;
- }
+ if (strlen (dpy_name) != 0)
+ {
+ argv[argc++] = display_opt;
+ argv[argc++] = dpy_name;
+ }
argv[argc++] = name_opt;
argv[argc++] = resource_name;
/* Work around GLib bug that outputs a faulty warning. See
https://bugzilla.gnome.org/show_bug.cgi?id=563627. */
id = g_log_set_handler ("GLib", G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL
- | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
+ | G_LOG_FLAG_RECURSION, my_log_handler, NULL);
/* gtk_init does set_locale. Fix locale before and after. */
fixup_locale ();
- unrequest_sigio (); /* See comment in x_display_ok. */
+ unrequest_sigio (); /* See comment in x_display_ok. */
gtk_init (&argc, &argv2);
request_sigio ();
fixup_locale ();
dpy = DEFAULT_GDK_DISPLAY ();
- initial_display = g_strdup (gdk_display_get_name(dpy));
+ initial_display = g_strdup (gdk_display_get_name (dpy));
dpy_name = initial_display;
- lisp_dpy_name = build_string(dpy_name);
+ lisp_dpy_name = build_string (dpy_name);
}
}
dpyinfo->xg_cursor = xg_create_default_cursor (dpyinfo->gdpy);
dpyinfo->vertical_scroll_bar_cursor
- = gdk_cursor_new_for_display(dpyinfo->gdpy, GDK_SB_V_DOUBLE_ARROW);
+ = gdk_cursor_new_for_display (dpyinfo->gdpy, GDK_SB_V_DOUBLE_ARROW);
dpyinfo->horizontal_scroll_bar_cursor
- = gdk_cursor_new_for_display(dpyinfo->gdpy, GDK_SB_H_DOUBLE_ARROW);
+ = gdk_cursor_new_for_display (dpyinfo->gdpy, GDK_SB_H_DOUBLE_ARROW);
reset_mouse_highlight (&dpyinfo->mouse_highlight);
{
- GdkScreen *gscr = gdk_display_get_default_screen(dpyinfo->gdpy);
+ GdkScreen *gscr = gdk_display_get_default_screen (dpyinfo->gdpy);
- GSettings *set = g_settings_new("org.gnome.desktop.interface");
- gdouble x = g_settings_get_double(set,"text-scaling-factor");
+ GSettings *set = g_settings_new ("org.gnome.desktop.interface");
+ gdouble x = g_settings_get_double (set, "text-scaling-factor");
gdouble dpi = 0;
- dpi = 96.0 * x;
- gdk_screen_set_resolution(gscr, dpi);
+ dpi = 96.0 * x;
+ gdk_screen_set_resolution (gscr, dpi);
dpyinfo->resx = dpi;
dpyinfo->resy = dpi;
}
xsettings_initialize (dpyinfo);
- pgtk_selection_init();
+ pgtk_selection_init ();
pgtk_im_init (dpyinfo);
The string returned is temporarily allocated.
-------------------------------------------------------------------------- */
{
- PGTK_TRACE("pgtk_xlfd_to_fontname");
+ PGTK_TRACE ("pgtk_xlfd_to_fontname");
char *name = xmalloc (180);
- if (!strncmp (xlfd, "--", 2)) {
- if (sscanf (xlfd, "--%179[^-]-", name) != 1)
- name[0] = '\0';
- } else {
- if (sscanf (xlfd, "-%*[^-]-%179[^-]-", name) != 1)
- name[0] = '\0';
- }
+ if (!strncmp (xlfd, "--", 2))
+ {
+ if (sscanf (xlfd, "--%179[^-]-", name) != 1)
+ name[0] = '\0';
+ }
+ else
+ {
+ if (sscanf (xlfd, "-%*[^-]-%179[^-]-", name) != 1)
+ name[0] = '\0';
+ }
/* stopgap for malformed XLFD input */
if (strlen (name) == 0)
strcpy (name, "Monospace");
- PGTK_TRACE("converted '%s' to '%s'", xlfd, name);
+ PGTK_TRACE ("converted '%s' to '%s'", xlfd, name);
return name;
}
bool
pgtk_defined_color (struct frame *f,
- const char *name,
- Emacs_Color *color_def,
- bool alloc,
- bool makeIndex)
+ const char *name,
+ Emacs_Color * color_def, bool alloc, bool makeIndex)
/* --------------------------------------------------------------------------
Return true if named color found, and set color_def rgb accordingly.
If makeIndex and alloc are nonzero put the color in the color_table,
int r;
block_input ();
- r = xg_check_special_colors(f, name, color_def);
+ r = xg_check_special_colors (f, name, color_def);
if (!r)
r = pgtk_parse_color (f, name, color_def);
unblock_input ();
and names we've actually looked up; list-colors-display is probably
the most color-intensive case we're likely to hit. */
-int pgtk_parse_color (struct frame *f, const char *color_name, Emacs_Color *color)
+int
+pgtk_parse_color (struct frame *f, const char *color_name,
+ Emacs_Color * color)
{
- PGTK_TRACE("pgtk_parse_color: %s", color_name);
+ PGTK_TRACE ("pgtk_parse_color: %s", color_name);
GdkRGBA rgba;
- if (gdk_rgba_parse(&rgba, color_name)) {
- color->red = rgba.red * 65535;
- color->green = rgba.green * 65535;
- color->blue = rgba.blue * 65535;
- color->pixel =
- (unsigned long) 0xff << 24 |
- (color->red >> 8) << 16 |
- (color->green >> 8) << 8 |
- (color->blue >> 8) << 0;
- return 1;
- }
+ if (gdk_rgba_parse (&rgba, color_name))
+ {
+ color->red = rgba.red * 65535;
+ color->green = rgba.green * 65535;
+ color->blue = rgba.blue * 65535;
+ color->pixel =
+ (unsigned long) 0xff << 24 |
+ (color->red >> 8) << 16 |
+ (color->green >> 8) << 8 | (color->blue >> 8) << 0;
+ return 1;
+ }
return 0;
}
colors in COLORS. On W32, we no longer try to map colors to
a palette. */
void
-pgtk_query_colors (struct frame *f, Emacs_Color *colors, int ncolors)
+pgtk_query_colors (struct frame *f, Emacs_Color * colors, int ncolors)
{
- PGTK_TRACE("pgtk_query_colors");
+ PGTK_TRACE ("pgtk_query_colors");
int i;
for (i = 0; i < ncolors; i++)
colors[i].red = GetRValue (pixel) * 257;
colors[i].green = GetGValue (pixel) * 257;
colors[i].blue = GetBValue (pixel) * 257;
- PGTK_TRACE("pixel: %lx, red: %d, blue %d, green %d", colors[i].pixel, colors[i].red, colors[i].blue, colors[i].green);
+ PGTK_TRACE ("pixel: %lx, red: %d, blue %d, green %d", colors[i].pixel,
+ colors[i].red, colors[i].blue, colors[i].green);
}
}
void
-pgtk_query_color (struct frame *f, Emacs_Color *color)
+pgtk_query_color (struct frame *f, Emacs_Color * color)
{
- PGTK_TRACE("pgtk_query_color");
+ PGTK_TRACE ("pgtk_query_color");
pgtk_query_colors (f, color, 1);
}
void
pgtk_clear_area (struct frame *f, int x, int y, int width, int height)
{
- PGTK_TRACE("pgtk_clear_area: %dx%d+%d+%d.", width, height, x, y);
+ PGTK_TRACE ("pgtk_clear_area: %dx%d+%d+%d.", width, height, x, y);
cairo_t *cr;
eassert (width > 0 && height > 0);
cr = pgtk_begin_cr_clip (f);
- PGTK_TRACE("back color %08lx.", (unsigned long) FRAME_X_OUTPUT(f)->background_color);
- pgtk_set_cr_source_with_color (f, FRAME_X_OUTPUT(f)->background_color);
+ PGTK_TRACE ("back color %08lx.",
+ (unsigned long) FRAME_X_OUTPUT (f)->background_color);
+ pgtk_set_cr_source_with_color (f, FRAME_X_OUTPUT (f)->background_color);
cairo_rectangle (cr, x, y, width, height);
cairo_fill (cr);
pgtk_end_cr_clip (f);
DEFSYM (Qlatin_1, "latin-1");
- xg_default_icon_file = build_pure_c_string ("icons/hicolor/scalable/apps/emacs.svg");
+ xg_default_icon_file =
+ build_pure_c_string ("icons/hicolor/scalable/apps/emacs.svg");
staticpro (&xg_default_icon_file);
DEFSYM (Qx_gtk_map_stock, "x-gtk-map-stock");
Fput (Qcontrol, Qmodifier_value, make_fixnum (ctrl_modifier));
DEFVAR_LISP ("x-ctrl-keysym", Vx_ctrl_keysym,
- doc: /* Which keys Emacs uses for the ctrl modifier.
+ doc: /* Which keys Emacs uses for the ctrl modifier.
This should be one of the symbols `ctrl', `alt', `hyper', `meta',
`super'. For example, `ctrl' means use the Ctrl_L and Ctrl_R keysyms.
-The default is nil, which is the same as `ctrl'. */);
+The default is nil, which is the same as `ctrl'. */ );
Vx_ctrl_keysym = Qnil;
DEFVAR_LISP ("x-alt-keysym", Vx_alt_keysym,
- doc: /* Which keys Emacs uses for the alt modifier.
+ doc: /* Which keys Emacs uses for the alt modifier.
This should be one of the symbols `ctrl', `alt', `hyper', `meta',
`super'. For example, `alt' means use the Alt_L and Alt_R keysyms.
-The default is nil, which is the same as `alt'. */);
+The default is nil, which is the same as `alt'. */ );
Vx_alt_keysym = Qnil;
DEFVAR_LISP ("x-hyper-keysym", Vx_hyper_keysym,
- doc: /* Which keys Emacs uses for the hyper modifier.
+ doc: /* Which keys Emacs uses for the hyper modifier.
This should be one of the symbols `ctrl', `alt', `hyper', `meta',
`super'. For example, `hyper' means use the Hyper_L and Hyper_R
-keysyms. The default is nil, which is the same as `hyper'. */);
+keysyms. The default is nil, which is the same as `hyper'. */ );
Vx_hyper_keysym = Qnil;
DEFVAR_LISP ("x-meta-keysym", Vx_meta_keysym,
- doc: /* Which keys Emacs uses for the meta modifier.
+ doc: /* Which keys Emacs uses for the meta modifier.
This should be one of the symbols `ctrl', `alt', `hyper', `meta',
`super'. For example, `meta' means use the Meta_L and Meta_R keysyms.
-The default is nil, which is the same as `meta'. */);
+The default is nil, which is the same as `meta'. */ );
Vx_meta_keysym = Qnil;
DEFVAR_LISP ("x-super-keysym", Vx_super_keysym,
- doc: /* Which keys Emacs uses for the super modifier.
+ doc: /* Which keys Emacs uses for the super modifier.
This should be one of the symbols `ctrl', `alt', `hyper', `meta',
`super'. For example, `super' means use the Super_L and Super_R
-keysyms. The default is nil, which is the same as `super'. */);
+keysyms. The default is nil, which is the same as `super'. */ );
Vx_super_keysym = Qnil;
/* TODO: move to common code */
A value of nil means Emacs doesn't use toolkit scroll bars.
With the X Window system, the value is a symbol describing the
X toolkit. Possible values are: gtk, motif, xaw, or xaw3d.
-With MS Windows or Nextstep, the value is t. */);
+With MS Windows or Nextstep, the value is t. */ );
// Vx_toolkit_scroll_bars = Qt;
Vx_toolkit_scroll_bars = intern_c_string ("gtk");
- DEFVAR_BOOL ("x-use-underline-position-properties",
- x_use_underline_position_properties,
- doc: /*Non-nil means make use of UNDERLINE_POSITION font properties.
+ DEFVAR_BOOL ("x-use-underline-position-properties", x_use_underline_position_properties,
+ doc: /*Non-nil means make use of UNDERLINE_POSITION font properties.
A value of nil means ignore them. If you encounter fonts with bogus
UNDERLINE_POSITION font properties, for example 7x13 on XFree prior
to 4.1, set this to nil. */);
x_use_underline_position_properties = 0;
- DEFVAR_BOOL ("x-underline-at-descent-line",
- x_underline_at_descent_line,
- doc: /* Non-nil means to draw the underline at the same place as the descent line.
+ DEFVAR_BOOL ("x-underline-at-descent-line", x_underline_at_descent_line,
+ doc: /* Non-nil means to draw the underline at the same place as the descent line.
A value of nil means to draw the underline according to the value of the
variable `x-use-underline-position-properties', which is usually at the
baseline level. The default value is nil. */);
x_underline_at_descent_line = 0;
DEFVAR_BOOL ("x-gtk-use-window-move", x_gtk_use_window_move,
- doc: /* Non-nil means rely on gtk_window_move to set frame positions.
+ doc: /* Non-nil means rely on gtk_window_move to set frame positions.
If this variable is t (the default), the GTK build uses the function
gtk_window_move to set or store frame positions and disables some time
consuming frame position adjustments. In newer versions of GTK, Emacs
DEFSYM (Qx_gtk_map_stock, "x-gtk-map-stock");
DEFVAR_LISP ("pgtk-wait-for-event-timeout", Vpgtk_wait_for_event_timeout,
- doc: /* How long to wait for X events.
+ doc: /* How long to wait for X events.
Emacs will wait up to this many seconds to receive X events after
making changes which affect the state of the graphical interface.
Vpgtk_wait_for_event_timeout = make_float (0.1);
DEFVAR_LISP ("pgtk-keysym-table", Vpgtk_keysym_table,
- doc: /* Hash table of character codes indexed by X keysym codes. */);
- Vpgtk_keysym_table = make_hash_table (hashtest_eql, 900,
- DEFAULT_REHASH_SIZE,
- DEFAULT_REHASH_THRESHOLD,
- Qnil, false);
+ doc: /* Hash table of character codes indexed by X keysym codes. */);
+ Vpgtk_keysym_table =
+ make_hash_table (hashtest_eql, 900, DEFAULT_REHASH_SIZE,
+ DEFAULT_REHASH_THRESHOLD, Qnil, false);
window_being_scrolled = Qnil;
- staticpro(&window_being_scrolled);
+ staticpro (&window_being_scrolled);
/* Tell Emacs about this window system. */
Fprovide (Qpgtk, Qnil);
void
pgtk_cr_update_surface_desired_size (struct frame *f, int width, int height)
{
- PGTK_TRACE("pgtk_cr_update_surface_desired_size");
+ PGTK_TRACE ("pgtk_cr_update_surface_desired_size");
if (FRAME_CR_SURFACE_DESIRED_WIDTH (f) != width
|| FRAME_CR_SURFACE_DESIRED_HEIGHT (f) != height)
{
- pgtk_cr_destroy_frame_context(f);
+ pgtk_cr_destroy_frame_context (f);
FRAME_CR_SURFACE_DESIRED_WIDTH (f) = width;
FRAME_CR_SURFACE_DESIRED_HEIGHT (f) = height;
- SET_FRAME_GARBAGED(f);
+ SET_FRAME_GARBAGED (f);
}
}
{
cairo_t *cr = FRAME_CR_CONTEXT (f);
- PGTK_TRACE("pgtk_begin_cr_clip");
+ PGTK_TRACE ("pgtk_begin_cr_clip");
if (!cr)
{
cairo_surface_t *surface =
- gdk_window_create_similar_surface(gtk_widget_get_window (FRAME_GTK_WIDGET (f)),
- CAIRO_CONTENT_COLOR_ALPHA,
- FRAME_CR_SURFACE_DESIRED_WIDTH (f),
- FRAME_CR_SURFACE_DESIRED_HEIGHT (f));
+ gdk_window_create_similar_surface (gtk_widget_get_window
+ (FRAME_GTK_WIDGET (f)),
+ CAIRO_CONTENT_COLOR_ALPHA,
+ FRAME_CR_SURFACE_DESIRED_WIDTH (f),
+ FRAME_CR_SURFACE_DESIRED_HEIGHT
+ (f));
cr = FRAME_CR_CONTEXT (f) = cairo_create (surface);
cairo_surface_destroy (surface);
void
pgtk_end_cr_clip (struct frame *f)
{
- PGTK_TRACE("pgtk_end_cr_clip");
+ PGTK_TRACE ("pgtk_end_cr_clip");
cairo_restore (FRAME_CR_CONTEXT (f));
}
void
-pgtk_set_cr_source_with_gc_foreground (struct frame *f, Emacs_GC *gc)
+pgtk_set_cr_source_with_gc_foreground (struct frame *f, Emacs_GC * gc)
{
PGTK_TRACE ("pgtk_set_cr_source_with_gc_foreground: %08lx", gc->foreground);
- pgtk_set_cr_source_with_color(f, gc->foreground);
+ pgtk_set_cr_source_with_color (f, gc->foreground);
}
void
-pgtk_set_cr_source_with_gc_background (struct frame *f, Emacs_GC *gc)
+pgtk_set_cr_source_with_gc_background (struct frame *f, Emacs_GC * gc)
{
- PGTK_TRACE("pgtk_set_cr_source_with_gc_background: %08lx", gc->background);
- pgtk_set_cr_source_with_color(f, gc->background);
+ PGTK_TRACE ("pgtk_set_cr_source_with_gc_background: %08lx", gc->background);
+ pgtk_set_cr_source_with_color (f, gc->background);
}
void
pgtk_set_cr_source_with_color (struct frame *f, unsigned long color)
{
- PGTK_TRACE("pgtk_set_cr_source_with_color: %08lx.", color);
+ PGTK_TRACE ("pgtk_set_cr_source_with_color: %08lx.", color);
Emacs_Color col;
col.pixel = color;
- pgtk_query_color(f, &col);
+ pgtk_query_color (f, &col);
cairo_set_source_rgb (FRAME_CR_CONTEXT (f), col.red / 65535.0,
col.green / 65535.0, col.blue / 65535.0);
}
void
-pgtk_cr_draw_frame (cairo_t *cr, struct frame *f)
+pgtk_cr_draw_frame (cairo_t * cr, struct frame *f)
{
- PGTK_TRACE("pgtk_cr_draw_frame");
- cairo_set_source_surface(cr, FRAME_CR_SURFACE(f), 0, 0);
- cairo_paint(cr);
+ PGTK_TRACE ("pgtk_cr_draw_frame");
+ cairo_set_source_surface (cr, FRAME_CR_SURFACE (f), 0, 0);
+ cairo_paint (cr);
}
void
-pgtk_cr_destroy_frame_context(struct frame *f)
+pgtk_cr_destroy_frame_context (struct frame *f)
{
- PGTK_TRACE("pgtk_cr_destroy_frame_context");
- if (FRAME_CR_CONTEXT(f) != NULL) {
- cairo_destroy(FRAME_CR_CONTEXT(f));
- FRAME_CR_CONTEXT(f) = NULL;
- }
+ PGTK_TRACE ("pgtk_cr_destroy_frame_context");
+ if (FRAME_CR_CONTEXT (f) != NULL)
+ {
+ cairo_destroy (FRAME_CR_CONTEXT (f));
+ FRAME_CR_CONTEXT (f) = NULL;
+ }
}
void