aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYuuki Harano2020-10-05 21:18:06 +0900
committerJeff Walsh2020-11-24 12:24:40 +1100
commit4dbea5be1758788d9f6177ca3f7eaedc9e01ad56 (patch)
tree6dad3b1a3f2ad41ecb968e8ce8ad8be1b0f9e46c /src
parentbb6862df1beddeaa4802af58b94332ba48afbb4f (diff)
downloademacs-4dbea5be1758788d9f6177ca3f7eaedc9e01ad56.tar.gz
emacs-4dbea5be1758788d9f6177ca3f7eaedc9e01ad56.zip
Fix Gtk warnings
* src/gtkutil.c (xg_frame_set_char_size): Call appropriate function (xg_set_undecorated): Do nothing if child frame. (xg_set_no_focus_on_map): Do nothing if child frame. (xg_set_no_accept_focus): Do nothing if child frame. (xg_set_frame_icon): Do nothing if child frame. (xg_get_file_name): Do nothing if child frame. (xg_get_font): * src/pgtkterm.c (pgtk_focus_frame): Do nothing if child frames. (x_set_frame_alpha): Select correct widget. (x_new_focus_frame): Focus only when non-child frames. (pgtk_set_event_handler): Don't set for child frames. * src/pgtkfns.c (xg_set_icon): Do nothing if child frames. (xg_set_icon_from_xpm_data): Do nothing if child frames. (pgtk_set_sticky): Do nothing if child frames. (Fx_show_tip): Do nothing if child frames. (Fpgtk_set_mouse_absolute_pixel_position): Select correct widget. (Fpgtk_mouse_absolute_pixel_position): Select correct widget. * src/pgtkmenu.c (pgtk_menu_show): (pgtk_dialog_show):
Diffstat (limited to 'src')
-rw-r--r--src/gtkutil.c60
-rw-r--r--src/pgtkfns.c16
-rw-r--r--src/pgtkmenu.c10
-rw-r--r--src/pgtkterm.c37
4 files changed, 98 insertions, 25 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 56d415887d0..a62616bbfc6 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -1098,8 +1098,21 @@ xg_frame_set_char_size (struct frame *f, int width, int height)
1098 (f, Qxg_frame_set_char_size_1, width, height, 1098 (f, Qxg_frame_set_char_size_1, width, height,
1099 list2i (gheight, totalheight)); 1099 list2i (gheight, totalheight));
1100 1100
1101#ifndef HAVE_PGTK
1101 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), 1102 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
1102 gwidth, totalheight); 1103 gwidth, totalheight);
1104#else
1105 if (FRAME_GTK_OUTER_WIDGET (f))
1106 {
1107 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
1108 gwidth, totalheight);
1109 }
1110 else
1111 {
1112 gtk_widget_set_size_request (FRAME_GTK_WIDGET (f),
1113 gwidth, totalheight);
1114 }
1115#endif
1103 } 1116 }
1104 else if (EQ (fullscreen, Qfullheight) && height == FRAME_TEXT_HEIGHT (f)) 1117 else if (EQ (fullscreen, Qfullheight) && height == FRAME_TEXT_HEIGHT (f))
1105 { 1118 {
@@ -1107,8 +1120,21 @@ xg_frame_set_char_size (struct frame *f, int width, int height)
1107 (f, Qxg_frame_set_char_size_2, width, height, 1120 (f, Qxg_frame_set_char_size_2, width, height,
1108 list2i (gwidth, totalwidth)); 1121 list2i (gwidth, totalwidth));
1109 1122
1123#ifndef HAVE_PGTK
1110 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), 1124 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
1111 totalwidth, gheight); 1125 totalwidth, gheight);
1126#else
1127 if (FRAME_GTK_OUTER_WIDGET (f))
1128 {
1129 gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
1130 totalwidth, gheight);
1131 }
1132 else
1133 {
1134 gtk_widget_set_size_request (FRAME_GTK_WIDGET (f),
1135 totalwidth, gheight);
1136 }
1137#endif
1112 } 1138 }
1113 else if (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f)) 1139 else if (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f))
1114 { 1140 {
@@ -1880,6 +1906,10 @@ xg_set_background_color (struct frame *f, unsigned long bg)
1880void 1906void
1881xg_set_undecorated (struct frame *f, Lisp_Object undecorated) 1907xg_set_undecorated (struct frame *f, Lisp_Object undecorated)
1882{ 1908{
1909#ifdef HAVE_PGTK
1910 if (!FRAME_GTK_OUTER_WIDGET (f))
1911 return;
1912#endif
1883 if (FRAME_GTK_WIDGET (f)) 1913 if (FRAME_GTK_WIDGET (f))
1884 { 1914 {
1885 block_input (); 1915 block_input ();
@@ -1940,6 +1970,10 @@ xg_set_skip_taskbar (struct frame *f, Lisp_Object skip_taskbar)
1940void 1970void
1941xg_set_no_focus_on_map (struct frame *f, Lisp_Object no_focus_on_map) 1971xg_set_no_focus_on_map (struct frame *f, Lisp_Object no_focus_on_map)
1942{ 1972{
1973#ifdef HAVE_PGTK
1974 if (!FRAME_GTK_OUTER_WIDGET (f))
1975 return;
1976#endif
1943 block_input (); 1977 block_input ();
1944 if (FRAME_GTK_WIDGET (f)) 1978 if (FRAME_GTK_WIDGET (f))
1945 { 1979 {
@@ -1955,14 +1989,12 @@ xg_set_no_focus_on_map (struct frame *f, Lisp_Object no_focus_on_map)
1955void 1989void
1956xg_set_no_accept_focus (struct frame *f, Lisp_Object no_accept_focus) 1990xg_set_no_accept_focus (struct frame *f, Lisp_Object no_accept_focus)
1957{ 1991{
1958 block_input (); 1992#ifdef HAVE_PGTK
1959 if ( 1993 if (!FRAME_GTK_OUTER_WIDGET (f))
1960#ifndef HAVE_PGTK 1994 return;
1961 FRAME_GTK_WIDGET (f)
1962#else
1963 FRAME_GTK_OUTER_WIDGET (f)
1964#endif 1995#endif
1965 ) 1996 block_input ();
1997 if (FRAME_GTK_WIDGET (f))
1966 { 1998 {
1967 GtkWindow *gwin = GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)); 1999 GtkWindow *gwin = GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f));
1968 gboolean g_no_accept_focus = NILP (no_accept_focus) ? TRUE : FALSE; 2000 gboolean g_no_accept_focus = NILP (no_accept_focus) ? TRUE : FALSE;
@@ -1994,6 +2026,10 @@ xg_set_override_redirect (struct frame *f, Lisp_Object override_redirect)
1994void 2026void
1995xg_set_frame_icon (struct frame *f, Pixmap icon_pixmap, Pixmap icon_mask) 2027xg_set_frame_icon (struct frame *f, Pixmap icon_pixmap, Pixmap icon_mask)
1996{ 2028{
2029#ifdef HAVE_PGTK
2030 if (!FRAME_GTK_OUTER_WIDGET (f))
2031 return;
2032#endif
1997 GdkPixbuf *gp = xg_get_pixbuf_from_pix_and_mask (f, 2033 GdkPixbuf *gp = xg_get_pixbuf_from_pix_and_mask (f,
1998 icon_pixmap, 2034 icon_pixmap,
1999 icon_mask); 2035 icon_mask);
@@ -2537,6 +2573,11 @@ xg_get_file_name (struct frame *f,
2537 int filesel_done = 0; 2573 int filesel_done = 0;
2538 xg_get_file_func func; 2574 xg_get_file_func func;
2539 2575
2576#ifdef HAVE_PGTK
2577 if (!FRAME_GTK_OUTER_WIDGET (f))
2578 error("Can't open dialog from child frames");
2579#endif
2580
2540#ifdef HAVE_GTK_FILE_SELECTION_NEW 2581#ifdef HAVE_GTK_FILE_SELECTION_NEW
2541 2582
2542 if (xg_uses_old_file_dialog ()) 2583 if (xg_uses_old_file_dialog ())
@@ -2620,6 +2661,11 @@ xg_get_font (struct frame *f, const char *default_name)
2620 int done = 0; 2661 int done = 0;
2621 Lisp_Object font = Qnil; 2662 Lisp_Object font = Qnil;
2622 2663
2664#ifdef HAVE_PGTK
2665 if (!FRAME_GTK_OUTER_WIDGET (f))
2666 error("Can't open dialog from child frames");
2667#endif
2668
2623 w = gtk_font_chooser_dialog_new 2669 w = gtk_font_chooser_dialog_new
2624 ("Pick a font", GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f))); 2670 ("Pick a font", GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)));
2625 2671
diff --git a/src/pgtkfns.c b/src/pgtkfns.c
index 4ecb03b91c0..ece63517b22 100644
--- a/src/pgtkfns.c
+++ b/src/pgtkfns.c
@@ -719,6 +719,9 @@ xg_set_icon (struct frame *f, Lisp_Object file)
719 bool result = false; 719 bool result = false;
720 Lisp_Object found; 720 Lisp_Object found;
721 721
722 if (!FRAME_GTK_OUTER_WIDGET (f))
723 return false;
724
722 found = image_find_image_file (file); 725 found = image_find_image_file (file);
723 726
724 if (!NILP (found)) 727 if (!NILP (found))
@@ -755,6 +758,9 @@ xg_set_icon_from_xpm_data (struct frame *f, const char **data)
755 if (!pixbuf) 758 if (!pixbuf)
756 return false; 759 return false;
757 760
761 if (!FRAME_GTK_OUTER_WIDGET (f))
762 return false;
763
758 gtk_window_set_icon (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), pixbuf); 764 gtk_window_set_icon (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), pixbuf);
759 g_object_unref (pixbuf); 765 g_object_unref (pixbuf);
760 return true; 766 return true;
@@ -764,6 +770,9 @@ static void
764pgtk_set_sticky (struct frame *f, Lisp_Object new_value, 770pgtk_set_sticky (struct frame *f, Lisp_Object new_value,
765 Lisp_Object old_value) 771 Lisp_Object old_value)
766{ 772{
773 if (!FRAME_GTK_OUTER_WIDGET (f))
774 return;
775
767 if (!NILP (new_value)) 776 if (!NILP (new_value))
768 gtk_window_stick (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f))); 777 gtk_window_stick (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)));
769 else 778 else
@@ -3055,6 +3064,9 @@ Text larger than the specified size is clipped. */)
3055 frame = selected_frame; 3064 frame = selected_frame;
3056 f = decode_window_system_frame (frame); 3065 f = decode_window_system_frame (frame);
3057 3066
3067 if (!FRAME_GTK_OUTER_WIDGET (f))
3068 return unbind_to (count, Qnil);
3069
3058 if (NILP (timeout)) 3070 if (NILP (timeout))
3059 timeout = make_fixnum (5); 3071 timeout = make_fixnum (5);
3060 else 3072 else
@@ -3457,7 +3469,7 @@ The coordinates X and Y are interpreted in pixels relative to a position
3457 (Lisp_Object x, Lisp_Object y) 3469 (Lisp_Object x, Lisp_Object y)
3458{ 3470{
3459 struct frame *f = SELECTED_FRAME (); 3471 struct frame *f = SELECTED_FRAME ();
3460 GtkWidget *widget = FRAME_GTK_OUTER_WIDGET (f); 3472 GtkWidget *widget = gtk_widget_get_toplevel (FRAME_WIDGET (f));
3461 GdkWindow *window = gtk_widget_get_window (widget); 3473 GdkWindow *window = gtk_widget_get_window (widget);
3462 GdkDisplay *gdpy = gdk_window_get_display (window); 3474 GdkDisplay *gdpy = gdk_window_get_display (window);
3463 GdkScreen *gscr = gdk_window_get_screen (window); 3475 GdkScreen *gscr = gdk_window_get_screen (window);
@@ -3478,7 +3490,7 @@ position (0, 0) of the selected frame's terminal. */)
3478 (void) 3490 (void)
3479{ 3491{
3480 struct frame *f = SELECTED_FRAME (); 3492 struct frame *f = SELECTED_FRAME ();
3481 GtkWidget *widget = FRAME_GTK_OUTER_WIDGET (f); 3493 GtkWidget *widget = gtk_widget_get_toplevel (FRAME_WIDGET (f));
3482 GdkWindow *window = gtk_widget_get_window (widget); 3494 GdkWindow *window = gtk_widget_get_window (widget);
3483 GdkDisplay *gdpy = gdk_window_get_display (window); 3495 GdkDisplay *gdpy = gdk_window_get_display (window);
3484 GdkScreen *gscr; 3496 GdkScreen *gscr;
diff --git a/src/pgtkmenu.c b/src/pgtkmenu.c
index 7d15340b6be..79f562e2ab4 100644
--- a/src/pgtkmenu.c
+++ b/src/pgtkmenu.c
@@ -640,6 +640,11 @@ pgtk_menu_show (struct frame *f, int x, int y, int menuflags,
640 640
641 *error_name = NULL; 641 *error_name = NULL;
642 642
643 if (!FRAME_GTK_OUTER_WIDGET (f)) {
644 *error_name = "Can't popup from child frames.";
645 return Qnil;
646 }
647
643 if (menu_items_used <= MENU_ITEMS_PANE_LENGTH) 648 if (menu_items_used <= MENU_ITEMS_PANE_LENGTH)
644 { 649 {
645 *error_name = "Empty menu"; 650 *error_name = "Empty menu";
@@ -944,6 +949,11 @@ pgtk_dialog_show (struct frame *f, Lisp_Object title,
944 949
945 *error_name = NULL; 950 *error_name = NULL;
946 951
952 if (!FRAME_GTK_OUTER_WIDGET (f)) {
953 *error_name = "Can't popup from child frames.";
954 return Qnil;
955 }
956
947 if (menu_items_n_panes > 1) 957 if (menu_items_n_panes > 1)
948 { 958 {
949 *error_name = "Multiple panes in dialog box"; 959 *error_name = "Multiple panes in dialog box";
diff --git a/src/pgtkterm.c b/src/pgtkterm.c
index c66379e6e4b..6e2c87f8210 100644
--- a/src/pgtkterm.c
+++ b/src/pgtkterm.c
@@ -4660,7 +4660,7 @@ pgtk_focus_frame (struct frame *f, bool noactivate)
4660 4660
4661 GtkWidget *wid = FRAME_GTK_OUTER_WIDGET (f); 4661 GtkWidget *wid = FRAME_GTK_OUTER_WIDGET (f);
4662 4662
4663 if (dpyinfo->x_focus_frame != f) 4663 if (dpyinfo->x_focus_frame != f && wid != NULL)
4664 { 4664 {
4665 block_input (); 4665 block_input ();
4666 gtk_window_present (GTK_WINDOW (wid)); 4666 gtk_window_present (GTK_WINDOW (wid));
@@ -4718,9 +4718,9 @@ x_set_frame_alpha (struct frame *f)
4718 } 4718 }
4719#endif 4719#endif
4720 4720
4721 set_opacity_recursively (FRAME_GTK_OUTER_WIDGET (f), &alpha); 4721 set_opacity_recursively (FRAME_WIDGET (f), &alpha);
4722 /* without this, blending mode is strange on wayland. */ 4722 /* without this, blending mode is strange on wayland. */
4723 gtk_widget_queue_resize_no_redraw (FRAME_GTK_OUTER_WIDGET (f)); 4723 gtk_widget_queue_resize_no_redraw (FRAME_WIDGET (f));
4724} 4724}
4725 4725
4726static void 4726static void
@@ -4891,12 +4891,14 @@ x_new_focus_frame (struct pgtk_display_info *dpyinfo, struct frame *frame)
4891 dpyinfo->x_focus_frame = frame; 4891 dpyinfo->x_focus_frame = frame;
4892 4892
4893 if (old_focus && old_focus->auto_lower) 4893 if (old_focus && old_focus->auto_lower)
4894 gdk_window_lower (gtk_widget_get_window 4894 if (FRAME_GTK_OUTER_WIDGET (old_focus))
4895 (FRAME_GTK_OUTER_WIDGET (old_focus))); 4895 gdk_window_lower (gtk_widget_get_window
4896 (FRAME_GTK_OUTER_WIDGET (old_focus)));
4896 4897
4897 if (dpyinfo->x_focus_frame && dpyinfo->x_focus_frame->auto_raise) 4898 if (dpyinfo->x_focus_frame && dpyinfo->x_focus_frame->auto_raise)
4898 gdk_window_raise (gtk_widget_get_window 4899 if (FRAME_GTK_OUTER_WIDGET (dpyinfo->x_focus_frame))
4899 (FRAME_GTK_OUTER_WIDGET (dpyinfo->x_focus_frame))); 4900 gdk_window_raise (gtk_widget_get_window
4901 (FRAME_GTK_OUTER_WIDGET (dpyinfo->x_focus_frame)));
4900 } 4902 }
4901 4903
4902 pgtk_frame_rehighlight (dpyinfo); 4904 pgtk_frame_rehighlight (dpyinfo);
@@ -6567,15 +6569,18 @@ pgtk_set_event_handler (struct frame *f)
6567 GDK_ACTION_COPY); 6569 GDK_ACTION_COPY);
6568 gtk_drag_dest_add_uri_targets (FRAME_GTK_WIDGET (f)); 6570 gtk_drag_dest_add_uri_targets (FRAME_GTK_WIDGET (f));
6569 6571
6570 g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), 6572 if (FRAME_GTK_OUTER_WIDGET (f))
6571 "window-state-event", G_CALLBACK (window_state_event), 6573 {
6572 NULL); 6574 g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)),
6573 g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "delete-event", 6575 "window-state-event", G_CALLBACK (window_state_event),
6574 G_CALLBACK (delete_event), NULL); 6576 NULL);
6575 g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "event", 6577 g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "delete-event",
6576 G_CALLBACK (pgtk_handle_event), NULL); 6578 G_CALLBACK (delete_event), NULL);
6577 g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "configure-event", 6579 g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "event",
6578 G_CALLBACK (configure_event), NULL); 6580 G_CALLBACK (pgtk_handle_event), NULL);
6581 g_signal_connect (G_OBJECT (FRAME_GTK_OUTER_WIDGET (f)), "configure-event",
6582 G_CALLBACK (configure_event), NULL);
6583 }
6579 6584
6580 g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "map-event", 6585 g_signal_connect (G_OBJECT (FRAME_GTK_WIDGET (f)), "map-event",
6581 G_CALLBACK (map_event), NULL); 6586 G_CALLBACK (map_event), NULL);