diff options
| author | Yuuki Harano | 2020-10-05 21:18:06 +0900 |
|---|---|---|
| committer | Jeff Walsh | 2020-11-24 12:24:40 +1100 |
| commit | 4dbea5be1758788d9f6177ca3f7eaedc9e01ad56 (patch) | |
| tree | 6dad3b1a3f2ad41ecb968e8ce8ad8be1b0f9e46c /src | |
| parent | bb6862df1beddeaa4802af58b94332ba48afbb4f (diff) | |
| download | emacs-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.c | 60 | ||||
| -rw-r--r-- | src/pgtkfns.c | 16 | ||||
| -rw-r--r-- | src/pgtkmenu.c | 10 | ||||
| -rw-r--r-- | src/pgtkterm.c | 37 |
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) | |||
| 1880 | void | 1906 | void |
| 1881 | xg_set_undecorated (struct frame *f, Lisp_Object undecorated) | 1907 | xg_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) | |||
| 1940 | void | 1970 | void |
| 1941 | xg_set_no_focus_on_map (struct frame *f, Lisp_Object no_focus_on_map) | 1971 | xg_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) | |||
| 1955 | void | 1989 | void |
| 1956 | xg_set_no_accept_focus (struct frame *f, Lisp_Object no_accept_focus) | 1990 | xg_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) | |||
| 1994 | void | 2026 | void |
| 1995 | xg_set_frame_icon (struct frame *f, Pixmap icon_pixmap, Pixmap icon_mask) | 2027 | xg_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 | |||
| 764 | pgtk_set_sticky (struct frame *f, Lisp_Object new_value, | 770 | pgtk_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 | ||
| 4726 | static void | 4726 | static 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); |