aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYuuki Harano2021-12-07 00:46:39 +0900
committerYuuki Harano2021-12-07 00:46:39 +0900
commit0b6a632f99214e2d1e9e1d72b8f8b3a7f054d552 (patch)
tree82d356207a4843f8ff8313bd2cdfa7c4698b78a3 /src
parentf68a0314e3ca522d1a86eae6cc909c1a5381ac3b (diff)
parent9eba6b966e330a38bdc3fef5e36b8a2904e72785 (diff)
downloademacs-0b6a632f99214e2d1e9e1d72b8f8b3a7f054d552.tar.gz
emacs-0b6a632f99214e2d1e9e1d72b8f8b3a7f054d552.zip
Merge branch 'feature/pgtk' of git.sv.gnu.org:/srv/git/emacs into feature/pgtk
Diffstat (limited to 'src')
-rw-r--r--src/gtkutil.c5
-rw-r--r--src/image.c6
-rw-r--r--src/pgtkfns.c28
-rw-r--r--src/pgtkterm.c43
-rw-r--r--src/xdisp.c6
5 files changed, 57 insertions, 31 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index d872d393caf..225984af41a 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -684,8 +684,13 @@ xg_check_special_colors (struct frame *f,
684 block_input (); 684 block_input ();
685 { 685 {
686#ifdef HAVE_GTK3 686#ifdef HAVE_GTK3
687#ifndef HAVE_PGTK
687 GtkStyleContext *gsty 688 GtkStyleContext *gsty
688 = gtk_widget_get_style_context (FRAME_GTK_OUTER_WIDGET (f)); 689 = gtk_widget_get_style_context (FRAME_GTK_OUTER_WIDGET (f));
690#else
691 GtkStyleContext *gsty
692 = gtk_widget_get_style_context (FRAME_WIDGET (f));
693#endif
689 GdkRGBA col; 694 GdkRGBA col;
690 char buf[sizeof "rgb://rrrr/gggg/bbbb"]; 695 char buf[sizeof "rgb://rrrr/gggg/bbbb"];
691 int state = GTK_STATE_FLAG_SELECTED|GTK_STATE_FLAG_FOCUSED; 696 int state = GTK_STATE_FLAG_SELECTED|GTK_STATE_FLAG_FOCUSED;
diff --git a/src/image.c b/src/image.c
index 3ba3d572b05..f8188292d46 100644
--- a/src/image.c
+++ b/src/image.c
@@ -9101,7 +9101,7 @@ webp_load (struct frame *f, struct image *img)
9101{ 9101{
9102 ptrdiff_t size = 0; 9102 ptrdiff_t size = 0;
9103 uint8_t *contents; 9103 uint8_t *contents;
9104 Lisp_Object file; 9104 Lisp_Object file = Qnil;
9105 9105
9106 /* Open the WebP file. */ 9106 /* Open the WebP file. */
9107 Lisp_Object specified_file = image_spec_value (img->spec, QCfile, NULL); 9107 Lisp_Object specified_file = image_spec_value (img->spec, QCfile, NULL);
@@ -9138,7 +9138,7 @@ webp_load (struct frame *f, struct image *img)
9138 /* Validate the WebP image header. */ 9138 /* Validate the WebP image header. */
9139 if (!WebPGetInfo (contents, size, NULL, NULL)) 9139 if (!WebPGetInfo (contents, size, NULL, NULL))
9140 { 9140 {
9141 if (NILP (specified_data)) 9141 if (!NILP (file))
9142 image_error ("Not a WebP file: `%s'", file); 9142 image_error ("Not a WebP file: `%s'", file);
9143 else 9143 else
9144 image_error ("Invalid header in WebP image data"); 9144 image_error ("Invalid header in WebP image data");
@@ -9161,7 +9161,7 @@ webp_load (struct frame *f, struct image *img)
9161 case VP8_STATUS_USER_ABORT: 9161 case VP8_STATUS_USER_ABORT:
9162 default: 9162 default:
9163 /* Error out in all other cases. */ 9163 /* Error out in all other cases. */
9164 if (NILP (specified_data)) 9164 if (!NILP (file))
9165 image_error ("Error when interpreting WebP image data: `%s'", file); 9165 image_error ("Error when interpreting WebP image data: `%s'", file);
9166 else 9166 else
9167 image_error ("Error when interpreting WebP image data"); 9167 image_error ("Error when interpreting WebP image data");
diff --git a/src/pgtkfns.c b/src/pgtkfns.c
index 74591452fb6..5fc5bb4bf22 100644
--- a/src/pgtkfns.c
+++ b/src/pgtkfns.c
@@ -3551,17 +3551,23 @@ frame_geometry (Lisp_Object frame, Lisp_Object attribute)
3551 3551
3552 /* Get these here because they can't be got in configure_event(). */ 3552 /* Get these here because they can't be got in configure_event(). */
3553 int left_pos, top_pos; 3553 int left_pos, top_pos;
3554 if (FRAME_GTK_OUTER_WIDGET (f)) { 3554
3555 gtk_window_get_position (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), 3555 if (FRAME_GTK_OUTER_WIDGET (f))
3556 &left_pos, &top_pos); 3556 {
3557 } else { 3557 gtk_window_get_position (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
3558 if (FRAME_GTK_WIDGET (f) == NULL) 3558 &left_pos, &top_pos);
3559 return Qnil; /* This can occur while creating a frame. */ 3559 }
3560 GtkAllocation alloc; 3560 else
3561 gtk_widget_get_allocation (FRAME_GTK_WIDGET (f), &alloc); 3561 {
3562 left_pos = alloc.x; 3562 GtkAllocation alloc;
3563 top_pos = alloc.y; 3563
3564 } 3564 if (FRAME_GTK_WIDGET (f) == NULL)
3565 return Qnil; /* This can occur while creating a frame. */
3566
3567 gtk_widget_get_allocation (FRAME_GTK_WIDGET (f), &alloc);
3568 left_pos = alloc.x;
3569 top_pos = alloc.y;
3570 }
3565 3571
3566 int native_left = left_pos + border; 3572 int native_left = left_pos + border;
3567 int native_top = top_pos + border + title_height; 3573 int native_top = top_pos + border + title_height;
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index 4bfe2efbdc5..1e8d49c1d1b 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -803,7 +803,8 @@ x_set_parent_frame (struct frame *f, Lisp_Object new_value,
803 FRAME_X_OUTPUT (f)->border_color_css_provider = NULL; 803 FRAME_X_OUTPUT (f)->border_color_css_provider = NULL;
804 { 804 {
805 GtkStyleContext *ctxt = gtk_widget_get_style_context (FRAME_WIDGET (f)); 805 GtkStyleContext *ctxt = gtk_widget_get_style_context (FRAME_WIDGET (f));
806 gtk_style_context_remove_provider (ctxt, GTK_STYLE_PROVIDER (provider)); 806 if (provider != NULL)
807 gtk_style_context_remove_provider (ctxt, GTK_STYLE_PROVIDER (provider));
807 } 808 }
808 809
809 { 810 {
@@ -850,8 +851,11 @@ x_set_parent_frame (struct frame *f, Lisp_Object new_value,
850 GtkStyleContext *ctxt = gtk_widget_get_style_context (FRAME_WIDGET (f)); 851 GtkStyleContext *ctxt = gtk_widget_get_style_context (FRAME_WIDGET (f));
851 GtkCssProvider *old = FRAME_X_OUTPUT (f)->border_color_css_provider; 852 GtkCssProvider *old = FRAME_X_OUTPUT (f)->border_color_css_provider;
852 FRAME_X_OUTPUT (f)->border_color_css_provider = provider; 853 FRAME_X_OUTPUT (f)->border_color_css_provider = provider;
853 gtk_style_context_add_provider (ctxt, GTK_STYLE_PROVIDER (provider), 854 if (provider != NULL)
854 GTK_STYLE_PROVIDER_PRIORITY_USER); 855 {
856 gtk_style_context_add_provider (ctxt, GTK_STYLE_PROVIDER (provider),
857 GTK_STYLE_PROVIDER_PRIORITY_USER);
858 }
855 if (old != NULL) 859 if (old != NULL)
856 { 860 {
857 gtk_style_context_remove_provider (ctxt, GTK_STYLE_PROVIDER (old)); 861 gtk_style_context_remove_provider (ctxt, GTK_STYLE_PROVIDER (old));
@@ -3050,10 +3054,11 @@ pgtk_bitmap_icon (struct frame *f, Lisp_Object file)
3050bool 3054bool
3051pgtk_text_icon (struct frame *f, const char *icon_name) 3055pgtk_text_icon (struct frame *f, const char *icon_name)
3052{ 3056{
3053 if (FRAME_GTK_OUTER_WIDGET (f)) { 3057 if (FRAME_GTK_OUTER_WIDGET (f))
3054 gtk_window_set_icon (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), NULL); 3058 {
3055 gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), icon_name); 3059 gtk_window_set_icon (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), NULL);
3056 } 3060 gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), icon_name);
3061 }
3057 3062
3058 return false; 3063 return false;
3059} 3064}
@@ -5379,13 +5384,17 @@ done:
5379} 5384}
5380 5385
5381static gboolean 5386static gboolean
5382key_release_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data) 5387key_release_event (GtkWidget *widget,
5388 GdkEvent *event,
5389 gpointer *user_data)
5383{ 5390{
5384 return TRUE; 5391 return TRUE;
5385} 5392}
5386 5393
5387static gboolean 5394static gboolean
5388configure_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data) 5395configure_event (GtkWidget *widget,
5396 GdkEvent *event,
5397 gpointer *user_data)
5389{ 5398{
5390 struct frame *f = pgtk_any_window_to_frame (event->configure.window); 5399 struct frame *f = pgtk_any_window_to_frame (event->configure.window);
5391 if (f && widget == FRAME_GTK_OUTER_WIDGET (f)) 5400 if (f && widget == FRAME_GTK_OUTER_WIDGET (f))
@@ -5405,7 +5414,9 @@ configure_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
5405} 5414}
5406 5415
5407static gboolean 5416static gboolean
5408map_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data) 5417map_event (GtkWidget *widget,
5418 GdkEvent *event,
5419 gpointer *user_data)
5409{ 5420{
5410 struct frame *f = pgtk_any_window_to_frame (event->any.window); 5421 struct frame *f = pgtk_any_window_to_frame (event->any.window);
5411 union buffered_input_event inev; 5422 union buffered_input_event inev;
@@ -5452,8 +5463,9 @@ map_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data)
5452} 5463}
5453 5464
5454static gboolean 5465static gboolean
5455window_state_event (GtkWidget * widget, GdkEvent * event, 5466window_state_event (GtkWidget *widget,
5456 gpointer * user_data) 5467 GdkEvent *event,
5468 gpointer *user_data)
5457{ 5469{
5458 struct frame *f = pgtk_any_window_to_frame (event->window_state.window); 5470 struct frame *f = pgtk_any_window_to_frame (event->window_state.window);
5459 union buffered_input_event inev; 5471 union buffered_input_event inev;
@@ -5486,7 +5498,8 @@ window_state_event (GtkWidget * widget, GdkEvent * event,
5486} 5498}
5487 5499
5488static gboolean 5500static gboolean
5489delete_event (GtkWidget * widget, GdkEvent * event, gpointer * user_data) 5501delete_event (GtkWidget *widget,
5502 GdkEvent *event, gpointer *user_data)
5490{ 5503{
5491 struct frame *f = pgtk_any_window_to_frame (event->any.window); 5504 struct frame *f = pgtk_any_window_to_frame (event->any.window);
5492 union buffered_input_event inev; 5505 union buffered_input_event inev;
@@ -5561,8 +5574,8 @@ x_focus_changed (gboolean is_enter, int state,
5561} 5574}
5562 5575
5563static gboolean 5576static gboolean
5564enter_notify_event (GtkWidget * widget, GdkEvent * event, 5577enter_notify_event (GtkWidget *widget, GdkEvent *event,
5565 gpointer * user_data) 5578 gpointer *user_data)
5566{ 5579{
5567 union buffered_input_event inev; 5580 union buffered_input_event inev;
5568 struct frame *frame = 5581 struct frame *frame =
diff --git a/src/xdisp.c b/src/xdisp.c
index 080c9063cd7..971015e0a35 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -30294,7 +30294,8 @@ produce_stretch_glyph (struct it *it)
30294 Compute the width of the characters having this `display' 30294 Compute the width of the characters having this `display'
30295 property. */ 30295 property. */
30296 struct it it2; 30296 struct it it2;
30297 Lisp_Object object = it->stack[it->sp - 1].string; 30297 Lisp_Object object =
30298 it->sp > 0 ? it->stack[it->sp - 1].string : it->string;
30298 unsigned char *p = (STRINGP (object) 30299 unsigned char *p = (STRINGP (object)
30299 ? SDATA (object) + IT_STRING_BYTEPOS (*it) 30300 ? SDATA (object) + IT_STRING_BYTEPOS (*it)
30300 : BYTE_POS_ADDR (IT_BYTEPOS (*it))); 30301 : BYTE_POS_ADDR (IT_BYTEPOS (*it)));
@@ -30396,7 +30397,8 @@ produce_stretch_glyph (struct it *it)
30396 if (width > 0 && height > 0 && it->glyph_row) 30397 if (width > 0 && height > 0 && it->glyph_row)
30397 { 30398 {
30398 Lisp_Object o_object = it->object; 30399 Lisp_Object o_object = it->object;
30399 Lisp_Object object = it->stack[it->sp - 1].string; 30400 Lisp_Object object =
30401 it->sp > 0 ? it->stack[it->sp - 1].string : it->string;
30400 int n = width; 30402 int n = width;
30401 30403
30402 if (!STRINGP (object)) 30404 if (!STRINGP (object))