diff options
| author | Jan Djärv | 2010-07-29 18:49:59 +0200 |
|---|---|---|
| committer | Jan Djärv | 2010-07-29 18:49:59 +0200 |
| commit | bfeabdc3d7568d08491eb3eab7249bc6c2c24af3 (patch) | |
| tree | 8d91481669f60b8507911afe7182975c057d53fd /src/xfns.c | |
| parent | 063e52940d4d97fe372f226c895d6d0f9d87f5d4 (diff) | |
| download | emacs-bfeabdc3d7568d08491eb3eab7249bc6c2c24af3.tar.gz emacs-bfeabdc3d7568d08491eb3eab7249bc6c2c24af3.zip | |
Add ability to put Gtk+ tool bar on the left/right/bottom or top. Default top.
* lisp/menu-bar.el (menu-bar-showhide-tool-bar-menu-customize-enable-left)
(menu-bar-showhide-tool-bar-menu-customize-disable)
(menu-bar-showhide-tool-bar-menu-customize-enable-right)
(menu-bar-showhide-tool-bar-menu-customize-enable-top)
(menu-bar-showhide-tool-bar-menu-customize-enable-bottom): New functions
(menu-bar-showhide-tool-bar-menu): If tool bar is moveable,
make a menu for Options => toolbar that can move it.
* src/frame.c (Qtool_bar_position): New variable.
(make_frame): Set tool_bar_position to Qtop.
(frame_parms): Add tool-bar-position.
(x_report_frame_params): Store tool_bar_position.
(x_set_fringe_width): Reset wm size hint after fringe changes.
* src/frame.h (struct frame): Add tool_bar_position.
(Qbottom): Declare.
* src/gtkutil.c (FRAME_TOTAL_PIXEL_WIDTH): New macro.
(xg_frame_set_char_size): Add FRAME_TOOLBAR_WIDTH to pixelwidth.
(xg_height_or_width_changed): Use FRAME_TOTAL_PIXEL_WIDTH.
(xg_create_frame_widgets): Create a hobox for placing widgets
vertically. Use gtk_box_pack_start.
(xg_height_or_width_changed): Renamed from xg_height_changed.
(x_wm_set_size_hint): Add FRAME_TOOLBAR_WIDTH to base_width.
(xg_update_frame_menubar, free_frame_menubar): Change to
xg_height_or_width_changed.
(xg_tool_bar_detach_callback): Update left/right/top/bottom tool bar
size correctly. Remove hardcoded 4, instead use handlebox size -
toolbar size.
(xg_tool_bar_attach_callback): Update left/right/top/bottom tool bar
size correctly. Use handlebox size + toolbar size as additional
size.
(xg_pack_tool_bar): POS is a new parameter.
Set orientation of tool bar based on pos.
Only make handlebox_widget if NULL.
Check if tool bar goes to vbox or hbox depending on pos.
(xg_update_tool_bar_sizes): New function.
(update_frame_tool_bar): Remove old_req, new_req. Do not get tool bar
height, call xg_update_tool_bar_sizes instead.
(free_frame_tool_bar): Remove from hbox or vbox depending on
toolbar_in_hbox, Set all FRAME_TOOLBAR_*_(WIDTH|HEIGHT) to zero.
(xg_change_toolbar_position): New function.
* src/gtkutil.h (xg_change_toolbar_position): Declare.
* src/window.c (calc_absolute_offset): Check for FRAME_TOOLBAR_TOP_HEIGHT
and FRAME_TOOLBAR_LEFT_WIDTH.
* src/xfns.c (x_set_tool_bar_position): New function.
(xic_set_statusarea): Use FRAME_TOOLBAR_TOP_HEIGHT.
(x_frame_parm_handlers): Add x_set_tool_bar_position.
(syms_of_xfns): if USE_GTK, provide move-toolbar.
* src/xterm.c (x_set_window_size_1): Add FRAME_TOOLBAR_WIDTH to pixelwidth.
* src/xterm.h (struct x_output): Add toolbar_top_height,
toolbar_bottom_height, toolbar_left_width, toolbar_right_width. Remove
toolbar_height.
if USE_GTK: Add hbox_widget and toolbar_in_hbox.
(FRAME_TOOLBAR_TOP_HEIGHT, FRAME_TOOLBAR_BOTTOM_HEIGHT)
(FRAME_TOOLBAR_LEFT_WIDTH, FRAME_TOOLBAR_RIGHT_WIDTH): New macros.
(FRAME_TOOLBAR_HEIGHT): Is now TOP_HEIGHT + BOTTOM_HEIGHT.
Diffstat (limited to 'src/xfns.c')
| -rw-r--r-- | src/xfns.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/xfns.c b/src/xfns.c index f19498dfb87..6b1a78ba740 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -715,6 +715,23 @@ x_set_wait_for_wm (struct frame *f, Lisp_Object new_value, Lisp_Object old_value | |||
| 715 | f->output_data.x->wait_for_wm = !NILP (new_value); | 715 | f->output_data.x->wait_for_wm = !NILP (new_value); |
| 716 | } | 716 | } |
| 717 | 717 | ||
| 718 | static void | ||
| 719 | x_set_tool_bar_position (struct frame *f, | ||
| 720 | Lisp_Object new_value, | ||
| 721 | Lisp_Object old_value) | ||
| 722 | { | ||
| 723 | if (! EQ (new_value, Qleft) && ! EQ (new_value, Qright) | ||
| 724 | && ! EQ (new_value, Qbottom) && ! EQ (new_value, Qtop)) | ||
| 725 | return; | ||
| 726 | if (EQ (new_value, old_value)) return; | ||
| 727 | |||
| 728 | #ifdef USE_GTK | ||
| 729 | fprintf (stderr, "Pos: %s\n", SDATA (SYMBOL_NAME (new_value))); | ||
| 730 | if (xg_change_toolbar_position (f, new_value)) | ||
| 731 | f->tool_bar_position = new_value; | ||
| 732 | #endif | ||
| 733 | } | ||
| 734 | |||
| 718 | #ifdef USE_GTK | 735 | #ifdef USE_GTK |
| 719 | 736 | ||
| 720 | /* Set icon from FILE for frame F. By using GTK functions the icon | 737 | /* Set icon from FILE for frame F. By using GTK functions the icon |
| @@ -2344,7 +2361,7 @@ xic_set_statusarea (struct frame *f) | |||
| 2344 | area.x = FRAME_PIXEL_WIDTH (f) - area.width - FRAME_INTERNAL_BORDER_WIDTH (f); | 2361 | area.x = FRAME_PIXEL_WIDTH (f) - area.width - FRAME_INTERNAL_BORDER_WIDTH (f); |
| 2345 | area.y = (FRAME_PIXEL_HEIGHT (f) - area.height | 2362 | area.y = (FRAME_PIXEL_HEIGHT (f) - area.height |
| 2346 | - FRAME_MENUBAR_HEIGHT (f) | 2363 | - FRAME_MENUBAR_HEIGHT (f) |
| 2347 | - FRAME_TOOLBAR_HEIGHT (f) | 2364 | - FRAME_TOOLBAR_TOP_HEIGHT (f) |
| 2348 | - FRAME_INTERNAL_BORDER_WIDTH (f)); | 2365 | - FRAME_INTERNAL_BORDER_WIDTH (f)); |
| 2349 | XFree (needed); | 2366 | XFree (needed); |
| 2350 | 2367 | ||
| @@ -5747,6 +5764,7 @@ frame_parm_handler x_frame_parm_handlers[] = | |||
| 5747 | x_set_font_backend, | 5764 | x_set_font_backend, |
| 5748 | x_set_alpha, | 5765 | x_set_alpha, |
| 5749 | x_set_sticky, | 5766 | x_set_sticky, |
| 5767 | x_set_tool_bar_position, | ||
| 5750 | }; | 5768 | }; |
| 5751 | 5769 | ||
| 5752 | void | 5770 | void |
| @@ -5897,6 +5915,7 @@ the tool bar buttons. */); | |||
| 5897 | accepts --with-x-toolkit=gtk. */ | 5915 | accepts --with-x-toolkit=gtk. */ |
| 5898 | Fprovide (intern_c_string ("x-toolkit"), Qnil); | 5916 | Fprovide (intern_c_string ("x-toolkit"), Qnil); |
| 5899 | Fprovide (intern_c_string ("gtk"), Qnil); | 5917 | Fprovide (intern_c_string ("gtk"), Qnil); |
| 5918 | Fprovide (intern_c_string ("move-toolbar"), Qnil); | ||
| 5900 | 5919 | ||
| 5901 | DEFVAR_LISP ("gtk-version-string", &Vgtk_version_string, | 5920 | DEFVAR_LISP ("gtk-version-string", &Vgtk_version_string, |
| 5902 | doc: /* Version info for GTK+. */); | 5921 | doc: /* Version info for GTK+. */); |