1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-05 05:21:26 -08:00
Commit graph

42720 commits

Author SHA1 Message Date
Yuuki Harano
d68633bfa1 * src/pgtkterm.c (pgtk_defined_color): support gtk special colors
Color functions take the frame

* src/gtkutil.c (xg_check_special_colors): pass frame as argument.
* src/pgtkfns.c (x_set_foreground_color, x_set_background_color,
x_set_cursor_color, pgtk_set_scroll_bar_foreground,
pgtk_set_scroll_bar_background, Fxw_color_defined_p,
Fxw_color_values): pass frame as argument.
* src/pgtkterm.c (pgtk_parse_color): take frame as argument.
(pgtk_lisp_to_color): take frame as argument, and pass it.

Remove pgtk_lisp_to_color

* src/pgtkfns.c (x_set_foreground_color, x_set_background_color,
x_set_cursor_color): use x_decode_color instead of pgtk_lisp_to_color.
(Fxw_color_defined_p, Fxw_color_values):
use pgtk_defined_color instead of pgtk_lisp_to_color.
* src/pgtkterm.c (pgtk_lisp_to_color): remove.

* src/gtkutil.c (xg_check_special_colors): change color format

* src/pgtkterm.h: remove pgtk_lisp_to_color declaration
2020-11-24 12:24:40 +11:00
Yuuki Harano
fe2297ce7a * pgtkmenu.c (set_frame_menubar): fix empty menu. 2020-11-24 12:24:39 +11:00
Yuuki Harano
8669feb0c5 Make icons and titles work like on X
* pgtk-win.el (frame-title-format, icon-title-format): remove.
* pgtkfns.c (pgtk_set_name_as_filename):  remove.
* pgtkfns.c (pgtk_set_name_internal): remove gtk_window_set_icon_name call.
* pgtkfns.c (pgtk_set_name): change value of update_mode_lines.
* pgtkfns.c (pgtk_explicitly_set_name):
prefer the symbol to an immediate value.
* pgtkfns.c (pgtk_implicitly_set_name): remove pgtk_set_name_as_filename call.
* pgtkfns.c (x_set_icon_type, x_set_icon_name): re-port from X code.
* pgtkfns.c (xg_set_icon, xg_set_icon_from_xpm_data): port from X code.
* pgtkterm.c (pgtk_bitmap_icon, pgtk_text_icon, pgtk_create_terminal):
port from X code.
* pgtkterm.h: add function declarations.
2020-11-24 12:24:39 +11:00
Yuuki Harano
014d56fa13 * src/pgtkterm.c: Remove incorrect mark_object call. 2020-11-24 12:24:39 +11:00
Yuuki Harano
4de4d9ee7e follow x_set_internal_border_width change.
* ../src/pgtkfns.c (x_set_internal_border_width):
2020-11-24 12:24:39 +11:00
Yuuki Harano
984f9cc7e5 restore frame_rehighlight_hook.
* src/frame.c (gui_set_border_width):
2020-11-24 12:24:39 +11:00
Yuuki Harano
de7b0daf2b use pgtk_menu_set_in_use.
* ../src/pgtkfns.c:
	(Fx_file_dialog, clean_up_dialog):

	* src/pgtkmenu.c (pgtk_menu_wait_for_event):
2020-11-24 12:24:39 +11:00
Yuuki Harano
04bfe70138 implement popup/context menu
* ../src/pgtkterm.c (x_draw_glyph_string_background)
	(x_draw_glyph_string_foreground)
	(x_draw_composite_glyph_string_foreground)
	(x_draw_glyphless_glyph_string_foreground, x_draw_relief_rect)
	(x_draw_box_rect, x_draw_glyph_string_box, x_draw_image_relief)
	(x_draw_image_foreground, x_draw_image_glyph_string)
	(button_event):

	* src/pgtkterm.h (struct pgtk_display_info):

	* src/pgtkmenu.c (pgtk_menu_set_in_use)
	(pgtk_menu_wait_for_event, Fx_menu_bar_open_internal)
	(popup_widget_loop, pgtk_activate_menubar)
	(popup_deactivate_callback, show_help_event): new functions
	(menu_highlight_callback): remove
	(update_frame_menubar, popup_selection_callback, pop_down_menu)
	(create_and_show_popup_menu, cleanup_widget_value_tree)
	(pgtk_menu_show, dialog_selection_callback): new
	(create_and_show_dialog, pgtk_dialog_show, pgtk_popup_dialog)
	(popup_activated, Fmenu_or_popup_active_p, syms_of_pgtkmenu):
2020-11-24 12:24:39 +11:00
Yuuki Harano
49645df52e minimize gtkutil.c differences.
* src/pgtkterm.h: remove compiletime ifdefs

* src/gtkutil.h: block out unused decl

* src/gtkutil.c:
(xg_get_pixbuf_from_pix_and_mask, xg_height_or_width_changed)
(xg_create_frame_widgets, x_wm_set_size_hint)
(xg_event_is_for_menubar, update_frame_tool_bar):

resolve argument type mismatch.
fix compatibility.
2020-11-24 12:24:39 +11:00
Yuuki Harano
cbd28cddea improve code readability.
* src/gtkutil.c (xg_create_frame_widgets):
2020-11-24 12:24:39 +11:00
Jeff Walsh
ef67659e98 Set screen/display dpi res to make broadway work as expected
* src/pgtkterm.c (pgtk_initialize_display_info)
(window_state_event, pgtk_term_init):

* src/gtkutil.c (xg_create_frame_widgets):

* src/pgtkterm.c (pgtk_initialize_display_info)
(window_state_event, pgtk_term_init):

* src/ftcrfont.c (ftcrfont_open):
2020-11-24 12:24:39 +11:00
Jeff Walsh
c9e6b4486b Some work toward posframe on wayland
* src/pgtkterm.c (flip_cr_context, x_set_offset): update for new functionality
(pgtk_set_window_size): remove dead code
(x_set_parent_frame): cleanup trace code
(pgtk_cr_update_surface_desired_size): add comment

* src/pgtkmenu.c (Fmenu_or_popup_active_p):

* src/pgtkfns.c (pgtk_frame_parm_handlers, Fx_create_frame):

* src/gtkutil.c (xg_create_frame_widgets, x_wm_set_size_hint):

* src/gtkutil.c (xg_create_frame_widgets):

hacky GTK offsets taht will need better calculations

Get parent frame's editor widget allocation for the offset

Fix child-frame offsets for negative values

Add some function comments around the new double context handling
2020-11-24 12:24:39 +11:00
Jeff Walsh
e021e233b4 End Resize flickering by copying surface rather than just clearing
* src/pgtkterm.h (FRAME_NATIVE_WINDOW):

* src/pgtkterm.c (pgtk_set_window_size): cleanup traces
(x_draw_bar_cursor, pgtk_handle_draw, syms_of_pgtkterm):
2020-11-24 12:24:39 +11:00
Jeff Walsh
975289663f Bring pgtk more inline with X11-cairo builds
* src/pgtkterm.h (struct pgtk_output):

* src/pgtkterm.c (FRAME_CR_ACTIVE_CONTEXT, flip_cr_context)
(x_draw_bar_cursor, pgtk_scroll_run, pgtk_update_end)
(pgtk_cr_draw_image, pgtk_flash, pgtk_handle_draw)
(pgtk_cr_update_surface_desired_size, pgtk_begin_cr_clip)
(pgtk_cr_destroy_frame_context):

* src/image.c (image_create_pattern_from_pixbuf):

- Don't create a context each time, just hold a reference

- Pull in a few cairo image changes from master

- Remove redundant code in pgtk_update_begin()
2020-11-24 12:24:39 +11:00
Yuuki Harano
992ef48300 update redisplay_interface.
* src/pgtkfns.c (Fx_create_frame, pgtk_default_font_parameter):

* src/pgtkterm.c (pgtk_redisplay_interface):

* src/pgtkterm.h:
2020-11-24 12:24:39 +11:00
Yuuki Harano
806b7640c0 Before sleep, dispatch draw events.
* src/pgtkterm.c (pgtk_select): remove sigio signal
  (pgtk_term_init): dispatch draw
2020-11-22 14:46:56 +11:00
Jeff Walsh
385e85c3dd End Resize flickering by copying surface rather than just clearing
* src/pgtkterm.h (struct pgtk_output): store desired sizes

* src/pgtkterm.c (FRAME_CR_SURFACE_DESIRED_HEIGHT)
(FRAME_CR_SURFACE_DESIRED_WIDTH, size_allocate, configure_event)
(pgtk_cr_update_surface_desired_size): add "desired" size for handling
surface change

* src/gtkutil.c (xg_frame_resized, xg_create_frame_widgets): remove
surface destroy, turn off double buffer call
2020-11-22 14:46:56 +11:00
Yuuki Harano
526f7277fc Let gtk handle scaling.
* src/gtkutil.c (xg_get_scale):
2020-11-22 14:46:56 +11:00
Yuuki Harano
232c129fe4 implement pre-edit input method
* src/termhooks.h (enum event_kind): new pgtk value

* src/pgtkterm.h (struct pgtk_display_info):

* src/pgtkterm.c (x_free_frame_resources, pgtk_delete_terminal)
(pgtk_enqueue_string, pgtk_enqueue_preedit, key_press_event)
(focus_in_event, focus_out_event, pgtk_term_init): call pgtkim

* src/pgtkim.c: new file
(im_context_commit_cb, im_context_retrieve_surrounding_cb)
(make_color_string, im_context_preedit_changed_cb)
(im_context_preedit_end_cb, im_context_preedit_start_cb)
(pgtk_im_focus_in, pgtk_im_focus_out, pgtk_im_filter_keypress)
(pgtk_im_finish, Fpgtk_use_im_context, syms_of_pgtkim):

* src/pgtkfns.c (check_pgtk_display_info):

* src/keyboard.c (kbd_buffer_get_event, make_lispy_event)
(keys_of_keyboard):

* src/emacs.c (main): add syms_of_pgtkim

* lisp/term/pgtk-win.el (pgtk-preedit-text): new defun

* configure.ac (XWIDGETS_OBJ): add pgtkim.o

input method 対応

preedit を overlay で表示するようにした。

preedit 表示後すぐに反映されなかったのを修正

この機能を ON/OFF できるようにした。

default off.

確定と同時に次の preedit が始まった場合に表示位置がおかしかったのを修正。

sample.

preedit をテキストで渡すようにした
2020-11-22 14:46:56 +11:00
Yuuki Harano
9e56fa9853 Support focus on click event
* src/pgtkterm.c (enter_notify_event, leave_notify_event)
(focus_in_event, focus_out_event): support focus on click

focus-on-click な環境に対応。
2020-11-22 14:46:56 +11:00
Yuuki Harano
9eb35f9996 experimental support of tab-bar.
* src/window.h: compile conditional

* src/pgtkterm.h: function decls

* src/pgtkterm.c (x_draw_image_relief, pgtk_create_terminal)
(motion_notify_event, button_event): tabbar support

* src/pgtkfns.c (x_set_tab_bar_lines, x_change_tab_bar_height)
(pgtk_frame_parm_handlers, Fx_create_frame, frame_geometry): tabbar support

余計なイベントが生成されていたのを修正。
2020-11-22 14:46:56 +11:00
Yuuki Harano
bc35a1e1d5 Make multipdisplay work by limiting selection while enabed
* src/pgtkterm.c (pgtk_mouse_position):

* src/pgtkselect.c (pgtk_selection_usable): new function
(Fpgtk_own_selection_internal, Fpgtk_disown_selection_internal)
(Fpgtk_selection_exists_p, Fpgtk_selection_owner_p)
(Fpgtk_get_selection_internal): check usable selection

multi-display で落ちる理由を一つ潰した。

まだまだありそう。

multi-display 時は selection を使えないようにした。
2020-11-22 14:46:56 +11:00
Yuuki Harano
24d82638bc Improve drawing efficency by refactoring code
* ../src/pgtkterm.c (fill_background, fill_background_by_face)
	(x_draw_glyph_string_background, x_draw_glyph_string_bg_rect)
	(x_draw_image_glyph_string, x_draw_stretch_glyph_string)
	(pgtk_clear_under_internal_border): Refator duplcate code

更に効率化。
2020-11-22 14:46:56 +11:00
Yuuki Harano
fd61a86ea5 improve some efficiency - simplify draws
* src/pgtkterm.h (struct pgtk_bitmap_record):

* src/pgtkterm.c (create_background_surface_by_face):

* src/image.c (image_create_pattern_from_pixbuf)
(image_create_bitmap_from_data, image_create_bitmap_from_file):

少し効率化。
2020-11-22 14:46:56 +11:00
Yuuki Harano
ae3bb14091 implement restacking and cleanup frame z order
src/pgtkfns.c:
	(pgtk_frame_restack,  Fpgtk_frame_restack, syms_of_pgtkfns):

pgtk-frame-restack を実装だけ。

ついでに、pgtk-frame-list-z-order は無意味なので削除した。
2020-11-22 14:46:56 +11:00
Yuuki Harano
fde74fa8b9 implement pgtk-frame-list-z-order same as frame-list.
* src/pgtkfns.c (Fpgtk_frame_list_z_order): return frame list as it's
the same
2020-11-22 14:46:55 +11:00
Yuuki Harano
b3a20d7a21 Implement Scroll-bar-forground and scroll-bar-background
* src/pgtkterm.h (struct pgtk_output):

* src/pgtkterm.c (x_free_frame_resources):

* src/pgtkfns.c (pgtk_set_scroll_bar_foreground)
(pgtk_set_scroll_bar_background, pgtk_frame_parm_handlers)
(Fx_create_frame):

* src/gtkutil.c (xg_finish_scroll_bar_creation):handle scrollbar css values

* etc/org.gnu.emacs.defaults.gschema.xml: add scroll bar fields

scroll-bar-foreground, scroll-bar-background 実装。
2020-11-22 14:46:55 +11:00
Yuuki Harano
bfbcb11248 implement set-tool-bar-position and set-sticky
* ../src/pgtkfns.c (pgtk_set_tool_bar_position)
(pgtk_frame_parm_handlers):

tool-bar-position 実装。
2020-11-22 14:46:55 +11:00
Yuuki Harano
9d9c8284fe TIMERFD support for PGTK, prevent calling when timerfd<0
* ../src/atimer.c (set_alarm):
2020-11-22 14:46:55 +11:00
Yuuki Harano
6957f9469c Add PGTK support for fullscreen
* src/gtkutil.c (x_wm_set_size_hint): Fullscreen support for PGTK

fullscreen にできるようにした。
2020-11-22 14:46:55 +11:00
Yuuki Harano
31bba950bc Use gsettings instead of X resource database
* src/pgtkfns.c (pgtk_is_lower_char, pgtk_is_upper_char)
(pgtk_is_numeric_char, parse_resource_key)
(pgtk_get_defaults_value, pgtk_set_defaults_value)
(Fpgtk_set_resource, pgtk_get_string_resource): handle gsettings scheme

* m4/gsettings.m4: new file

* etc/org.gnu.emacs.defaults.gschema.xml: new file

* configure.ac (GLIB_DISABLE_DEPRECATION_WARNINGS)
(gsettingsschemadir):

* Makefile.in (gsettingsschemadir, GLIB_COMPILE_SCHEMAS)
(install, uninstall, clean):

* .gitignore: add gschema

*.gschema.valid は生成ファイルなので無視。

schema の置き場所を変更。
2020-11-22 14:46:55 +11:00
Yuuki Harano
519a4ac39f Implement Meta key detection
* ../src/pgtkterm.c (x_find_modifier_meanings, )
	(key_press_event, construct_mouse_click, scroll_event)
	(pgtk_term_init):

	* src/pgtkterm.h (struct pgtk_display_info):

	* ../src/gtkutil.c (xg_tool_bar_callback):

meta キーの検出を実装。

X11 で alt キーを meta キーとして使えなくなっていたのを修正。
2020-11-22 14:46:55 +11:00
Yuuki Harano
68b99a3e66 Implement invisible-pointer to create blinking effect
* src/pgtkterm.h (struct pgtk_display_info): add cursor and callback

* src/pgtkterm.c (x_setup_pointer_blanking)
	(XTtoggle_invisible_pointer, x_toggle_visible_pointer): new functions
	(pgtk_create_terminal, pgtk_term_init): use gdkcursor

* src/pgtkgui.h: define Emacs_cursor as a GdkCursor

invisible pointer 実装。
2020-11-22 14:46:55 +11:00
Yuuki Harano
ea3ecd320c init border_pixel.
* ../src/pgtkfns.c (Fx_create_frame): remove if preprocessor
2020-11-22 14:46:55 +11:00
Yuuki Harano
da3c3518ed border_color/pixel width
* src/pgtkterm.h (struct pgtk_output):

* src/pgtkterm.c (x_free_frame_resources, frame_highlight)
(frame_unhighlight, pgtk_frame_rehighlight): use css information

* src/pgtkfns.c (x_set_border_color, pgtk_frame_parm_handlers)
(Fx_create_frame): new functions connected

* src/frame.c (gui_set_border_width): ifdef for PGTK

border_color/pixel 対応。
2020-11-22 14:46:55 +11:00
Yuuki Harano
19da22ed25 Add support for handing the internal border
src/pgtkterm.c (pgtk_clear_under_internal_border): remove #if 0
src/pgtkfns.c (x_set_internal_border_width): add clear and fill support

internal-border 対応。
2020-11-22 14:46:55 +11:00
Yuuki Harano
fbba846ee8 Addframe highlighting support
* ../src/pgtkterm.c:
	(pgtk_focus_frame, set_opacity_recursively, x_set_frame_alpha)
	(frame_highlight, frame_unhighlight, pgtk_frame_rehighlight)
	(XTframe_rehighlight, x_new_focus_frame, pgtk_create_terminal):

frame の highlight に対応。

とりあえず opacity のみ対応。
2020-11-22 14:46:55 +11:00
Yuuki Harano
85441c96d7 Add Stipple support for PGTK
* ../src/pgtkterm.c (create_background_surface_by_face)
(create_background_surface, x_draw_glyph_string_background)
(x_draw_glyph_string_bg_rect, x_draw_image_glyph_string)
(x_draw_stretch_glyph_string, pgtk_draw_fringe_bitmap): handle stipple

* ../src/image.c (image_create_bitmap_from_file, )
(syms_of_image): Add pgtk support

* ../lisp/faces.el (face-valid-attribute-values): add pgtk support

stipple 対応。

stipple がまともに動いてなかったので修正。
2020-11-22 14:46:55 +11:00
Yuuki Harano
1d549fa069 Add support for make-frame-(in)visible
* ../src/pgtkterm.c (pgtk_make_frame_visible_wait_for_map_event_cb)
	(pgtk_make_frame_visible_wait_for_map_event_timeout)
	(x_make_frame_visible, x_new_font)
	(pgtk_make_frame_visible_invisible, pgtk_make_frame_visible)
	(pgtk_redisplay_interface, pgtk_create_terminal, map_event)
	(syms_of_pgtkterm):

make-frame-visible/invisible 実装。
2020-11-22 14:46:55 +11:00
Jeff Walsh
592badc357 Early toolbar improvements
* src/xdisp.c (redisplay_tool_bar):

* src/pgtkterm.h:

* src/pgtkterm.c:
(pgtk_make_frame_visible, pgtk_make_frame_invisible)
(pgtk_update_begin, pgtk_parse_color, pgtk_query_colors)
(syms_of_pgtkterm):

* src/pgtkfns.c: cleanup function

* src/image.c (image_create_bitmap_from_file):

* src/gtkutil.c (xg_get_pixbuf_from_pix_and_mask):
2020-11-22 14:46:55 +11:00
Yuuki Harano
164800da6f Add Preferred geometry settings
* ../src/pgtkterm.h (struct pgtk_output):

* ../src/pgtkterm.c (pgtk_set_window_size):

* ../src/gtkutil.c (x_wm_set_size_hint):

* ../src/emacsgtkfixed.c (emacs_fixed_get_preferred_width)
(emacs_fixed_get_preferred_height):

Fixup toolbar handling

toolbar, menubar の ON/OFF でサイズが変化していっていたのを修正。
2020-11-22 14:46:55 +11:00
Yuuki Harano
330a346ca7 Migrate to Emacs_GC
* ../src/xfaces.c (x_create_gc, x_free_gc):

* ../src/pgtkterm.h (struct pgtk_output, struct pgtk_output):

* ../src/pgtkterm.c (x_set_cursor_gc, x_set_mouse_face_gc)
(x_setup_relief_color, x_draw_image_foreground_1)
(x_draw_image_foreground)
(pgtk_cr_draw_image, pgtk_draw_fringe_bitmap)
(pgtk_begin_cr_clip, pgtk_set_cr_source_with_gc_foreground)
(pgtk_set_cr_source_with_gc_background):

* ../src/pgtkgui.h:

* ../src/dispextern.h (struct glyph_string): clean up XGCValues  emulation

XGCValues, GC 廃止。

Emacs_GC に統一。
2020-11-22 14:46:55 +11:00
Yuuki Harano
f4920a6883 Add pgtk-read-file-name function
* ../src/pgtkfns.c (read_file_name_closed_cb)
	(Fpgtk_read_file_name, syms_of_pgtkfns): add function

pgtk-read-file-name を作成。

toolbar からよく呼ばれるので…
2020-11-22 14:46:55 +11:00
Jeff Walsh
cdc04b4509 Implement menubar for pgtk emacs
* src/xdisp.c (display_menu_bar): add pgtk case

	* ../src/pgtkterm.c (pgtk_create_terminal): update hooks
	(pgtk_menu_show): delete

	* src/pgtkterm.h: add decls

	* src/pgtkmenu.c: new file

	* ../src/pgtkfns.c (x_set_menu_bar_lines)
	(x_change_tool_bar_height, x_set_tool_bar_lines)
	(Fx_create_frame):
2020-11-22 14:46:55 +11:00
Yuuki Harano
12cc104cd5 Cleanup x_* to gui_ to match upstream work
* ../src/pgtkterm.h (struct pgtk_display_info):

* ../src/pgtkterm.c (mark_pgtkterm, x_free_frame_resources)
(pgtk_update_window_end, pgtk_mouse_position)
(pgtk_redisplay_interface, pgtk_query_frame_background_color)
(pgtk_delete_terminal, pgtk_create_terminal)
(pgtk_query_frame_background_color, frame_highlight)
(motion_notify_event, button_event, scroll_event):

* ../src/pgtkfns.c (x_set_cursor_color, x_icon)
(pgtk_frame_parm_handlers, x_default_font_parameter)
(Fx_create_frame):

"for the time being, commit" -- rename x->gui, frame_X_X(f) macros

ひとまず commit。
2020-11-22 14:46:55 +11:00
Yuuki Harano
ed1f7d1e2a Simplify compilaiton condtion
* ../src/menu.c (single_menu_item):

change condition.
2020-11-22 14:46:55 +11:00
Yuuki Harano
53cb431639 replace listn with list.
* ../src/pgtkfns.c (frame_geometry):

replace listn with list.
2020-11-22 14:46:55 +11:00
Yuuki Harano
a9c8a56ba1 Fix xdg-open handling
* ../src/pgtkterm.c (pgtk_term_init, NUM_ARGV, pgtk_term_init):

* ../lisp/net/browse-url.el (browse-url):

xdg-open できなかったのを修正。
2020-11-22 14:46:55 +11:00
Yuuki Harano
045e25278b Add support for cursor_foreground_colors
* ../src/pgtkterm.c (x_set_cursor_gc):

	* ../src/pgtkfns.c (x_set_cursor_color, Fx_create_frame)
	(syms_of_pgtkfns):

	* src/pgtkterm.h (struct pgtk_output):

cursor_foreground_color 対応。

あんまり意味なかった感じ。
2020-11-22 14:46:55 +11:00
Yuuki Harano
1b621c8e3c Don't mark name_list_element as it's not required
* ../src/pgtkterm.c (mark_pgtkterm):

これは余分。
2020-11-22 14:46:55 +11:00