Mercurial > hg > xemacs-beta
comparison src/frame-impl.h @ 5077:d372b17f63ce
clean up toolbar/gutter edge geometry
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2010-02-25 Ben Wing <ben@xemacs.org>
* EmacsFrame.c (EmacsFrameSetValues):
* frame-impl.h:
* frame-impl.h (struct frame):
* frame-impl.h (FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT):
* frame-impl.h (FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_HEIGHT):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_VISIBLE):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS):
* frame.h:
* frame.h (enum edge_pos):
* gutter.c:
* gutter.c (get_gutter_coords):
* gutter.c (display_boxes_in_gutter_p):
* gutter.c (construct_window_gutter_spec):
* gutter.c (calculate_gutter_size_from_display_lines):
* gutter.c (calculate_gutter_size):
* gutter.c (output_gutter):
* gutter.c (clear_gutter):
* gutter.c (mark_gutters):
* gutter.c (gutter_extent_signal_changed_region_maybe):
* gutter.c (update_gutter_geometry):
* gutter.c (update_frame_gutter_geometry):
* gutter.c (update_frame_gutters):
* gutter.c (reset_gutter_display_lines):
* gutter.c (redraw_exposed_gutter):
* gutter.c (redraw_exposed_gutters):
* gutter.c (free_frame_gutters):
* gutter.c (decode_gutter_position):
* gutter.c (Fset_default_gutter_position):
* gutter.c (Fgutter_pixel_width):
* gutter.c (Fgutter_pixel_height):
* gutter.c (recompute_overlaying_specifier):
* gutter.c (gutter_specs_changed_1):
* gutter.c (gutter_specs_changed):
* gutter.c (top_gutter_specs_changed):
* gutter.c (bottom_gutter_specs_changed):
* gutter.c (left_gutter_specs_changed):
* gutter.c (right_gutter_specs_changed):
* gutter.c (gutter_geometry_changed_in_window):
* gutter.c (init_frame_gutters):
* gutter.c (specifier_vars_of_gutter):
* gutter.h:
* gutter.h (WINDOW_REAL_TOP_GUTTER_BOUNDS):
* gutter.h (FRAME_TOP_GUTTER_BOUNDS):
* lisp.h (enum edge_style):
* native-gtk-toolbar.c:
* native-gtk-toolbar.c (gtk_output_toolbar):
* native-gtk-toolbar.c (gtk_clear_toolbar):
* native-gtk-toolbar.c (gtk_output_frame_toolbars):
* native-gtk-toolbar.c (gtk_initialize_frame_toolbars):
* toolbar-msw.c:
* toolbar-msw.c (TOOLBAR_HANDLE):
* toolbar-msw.c (allocate_toolbar_item_id):
* toolbar-msw.c (mswindows_clear_toolbar):
* toolbar-msw.c (mswindows_output_toolbar):
* toolbar-msw.c (mswindows_move_toolbar):
* toolbar-msw.c (mswindows_redraw_exposed_toolbars):
* toolbar-msw.c (mswindows_initialize_frame_toolbars):
* toolbar-msw.c (mswindows_output_frame_toolbars):
* toolbar-msw.c (mswindows_clear_frame_toolbars):
* toolbar-msw.c (DELETE_TOOLBAR):
* toolbar-msw.c (mswindows_free_frame_toolbars):
* toolbar-msw.c (mswindows_get_toolbar_button_text):
* toolbar-xlike.c:
* toolbar-xlike.c (__prepare_button_area):
* toolbar-xlike.c (XLIKE_OUTPUT_BUTTONS_LOOP):
* toolbar-xlike.c (xlike_output_toolbar):
* toolbar-xlike.c (xlike_clear_toolbar):
* toolbar-xlike.c (xlike_output_frame_toolbars):
* toolbar-xlike.c (xlike_clear_frame_toolbars):
* toolbar-xlike.c (xlike_redraw_exposed_toolbar):
* toolbar-xlike.c (xlike_redraw_exposed_toolbars):
* toolbar-xlike.c (xlike_redraw_frame_toolbars):
* toolbar.c:
* toolbar.c (decode_toolbar_position):
* toolbar.c (Fset_default_toolbar_position):
* toolbar.c (mark_frame_toolbar_buttons_dirty):
* toolbar.c (compute_frame_toolbar_buttons):
* toolbar.c (set_frame_toolbar):
* toolbar.c (compute_frame_toolbars_data):
* toolbar.c (update_frame_toolbars_geometry):
* toolbar.c (init_frame_toolbars):
* toolbar.c (get_toolbar_coords):
* toolbar.c (CHECK_TOOLBAR):
* toolbar.c (toolbar_buttons_at_pixpos):
* toolbar.c (CTB_ERROR):
* toolbar.c (recompute_overlaying_specifier):
* toolbar.c (specifier_vars_of_toolbar):
* toolbar.h:
* toolbar.h (SET_TOOLBAR_WAS_VISIBLE_FLAG):
Create new enum edge_pos with TOP_EDGE, BOTTOM_EDGE, LEFT_EDGE,
RIGHT_EDGE; subsume TOP_BORDER, TOP_GUTTER, enum toolbar_pos,
enum gutter_pos, etc.
Create EDGE_POS_LOOP, subsuming GUTTER_POS_LOOP.
Create NUM_EDGES, use in many places instead of hardcoded '4'.
Instead of top_toolbar_was_visible, bottom_toolbar_was_visible,
etc. make an array toolbar_was_visible[NUM_EDGES]. This increases
the frame size by 15 bytes or so (could be 3 if we use Boolbytes)
but hardly seems w to matter -- frames are heavy weight objects
anyway. Same with top_gutter_was_visible, etc.
Remove duplicated SET_TOOLBAR_WAS_VISIBLE_FLAG and put defn in
one place (toolbar.h).
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Thu, 25 Feb 2010 04:45:13 -0600 |
parents | c3cc3fa503a2 |
children | a04cf0fea770 |
comparison
equal
deleted
inserted
replaced
5076:d555581e3cba | 5077:d372b17f63ce |
---|---|
98 | 98 |
99 #ifdef HAVE_TOOLBARS | 99 #ifdef HAVE_TOOLBARS |
100 /* Size of toolbars as seen by redisplay. This is used to determine | 100 /* Size of toolbars as seen by redisplay. This is used to determine |
101 whether to re-layout windows by a call to change_frame_size early | 101 whether to re-layout windows by a call to change_frame_size early |
102 in redisplay_frame. */ | 102 in redisplay_frame. */ |
103 int current_toolbar_size[4]; | 103 int current_toolbar_size[NUM_EDGES]; |
104 #endif | 104 #endif |
105 | 105 |
106 /* Size of gutters as seen by redisplay. This is used to determine | 106 /* Size of gutters as seen by redisplay. This is used to determine |
107 whether to re-layout windows by a call to change_frame_size early | 107 whether to re-layout windows by a call to change_frame_size early |
108 in redisplay_frame. */ | 108 in redisplay_frame. */ |
109 int current_gutter_bounds[4]; | 109 int current_gutter_bounds[NUM_EDGES]; |
110 | |
111 /* Toolbar visibility */ | |
112 int toolbar_was_visible[NUM_EDGES]; | |
113 | |
114 /* gutter visibility */ | |
115 int gutter_was_visible[NUM_EDGES]; | |
110 | 116 |
111 /* Dynamic arrays of display lines for gutters */ | 117 /* Dynamic arrays of display lines for gutters */ |
112 display_line_dynarr *current_display_lines[4]; | 118 display_line_dynarr *current_display_lines[NUM_EDGES]; |
113 display_line_dynarr *desired_display_lines[4]; | 119 display_line_dynarr *desired_display_lines[NUM_EDGES]; |
114 | 120 |
115 /* A structure of auxiliary data specific to the device type. For | 121 /* A structure of auxiliary data specific to the device type. For |
116 example, struct x_frame is for X window frames; defined in | 122 example, struct x_frame is for X window frames; defined in |
117 console-x-impl.h. */ | 123 console-x-impl.h. */ |
118 void *frame_data; | 124 void *frame_data; |
157 0 if using a minibuffer window that isn't on this frame. */ | 163 0 if using a minibuffer window that isn't on this frame. */ |
158 unsigned int has_minibuffer :1; | 164 unsigned int has_minibuffer :1; |
159 | 165 |
160 /* True if frame's root window can't be split. */ | 166 /* True if frame's root window can't be split. */ |
161 unsigned int no_split :1; | 167 unsigned int no_split :1; |
162 | |
163 unsigned int top_toolbar_was_visible :1; | |
164 unsigned int bottom_toolbar_was_visible :1; | |
165 unsigned int left_toolbar_was_visible :1; | |
166 unsigned int right_toolbar_was_visible :1; | |
167 /* gutter visibility */ | |
168 unsigned int top_gutter_was_visible :1; | |
169 unsigned int bottom_gutter_was_visible :1; | |
170 unsigned int left_gutter_was_visible :1; | |
171 unsigned int right_gutter_was_visible :1; | |
172 | 168 |
173 /* redisplay flags */ | 169 /* redisplay flags */ |
174 unsigned int buffers_changed :1; | 170 unsigned int buffers_changed :1; |
175 unsigned int clip_changed :1; | 171 unsigned int clip_changed :1; |
176 unsigned int extents_changed :1; | 172 unsigned int extents_changed :1; |
579 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \ | 575 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \ |
580 ? FRAME_RAW_THEORETICAL_TOOLBAR_SIZE (f, pos) \ | 576 ? FRAME_RAW_THEORETICAL_TOOLBAR_SIZE (f, pos) \ |
581 : 0) | 577 : 0) |
582 | 578 |
583 #define FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT(f) \ | 579 #define FRAME_THEORETICAL_TOP_TOOLBAR_HEIGHT(f) \ |
584 FRAME_THEORETICAL_TOOLBAR_SIZE (f, TOP_TOOLBAR) | 580 FRAME_THEORETICAL_TOOLBAR_SIZE (f, TOP_EDGE) |
585 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_HEIGHT(f) \ | 581 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_HEIGHT(f) \ |
586 FRAME_THEORETICAL_TOOLBAR_SIZE (f, BOTTOM_TOOLBAR) | 582 FRAME_THEORETICAL_TOOLBAR_SIZE (f, BOTTOM_EDGE) |
587 #define FRAME_THEORETICAL_LEFT_TOOLBAR_WIDTH(f) \ | 583 #define FRAME_THEORETICAL_LEFT_TOOLBAR_WIDTH(f) \ |
588 FRAME_THEORETICAL_TOOLBAR_SIZE (f, LEFT_TOOLBAR) | 584 FRAME_THEORETICAL_TOOLBAR_SIZE (f, LEFT_EDGE) |
589 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_WIDTH(f) \ | 585 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_WIDTH(f) \ |
590 FRAME_THEORETICAL_TOOLBAR_SIZE (f, RIGHT_TOOLBAR) | 586 FRAME_THEORETICAL_TOOLBAR_SIZE (f, RIGHT_EDGE) |
591 | 587 |
592 #define FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \ | 588 #define FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH(f, pos) \ |
593 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \ | 589 (FRAME_RAW_THEORETICAL_TOOLBAR_VISIBLE (f, pos) \ |
594 ? FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, pos) \ | 590 ? FRAME_RAW_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, pos) \ |
595 : 0) | 591 : 0) |
596 | 592 |
597 #define FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH(f) \ | 593 #define FRAME_THEORETICAL_TOP_TOOLBAR_BORDER_WIDTH(f) \ |
598 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, TOP_TOOLBAR) | 594 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, TOP_EDGE) |
599 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \ | 595 #define FRAME_THEORETICAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \ |
600 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_TOOLBAR) | 596 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_EDGE) |
601 #define FRAME_THEORETICAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \ | 597 #define FRAME_THEORETICAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \ |
602 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, LEFT_TOOLBAR) | 598 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, LEFT_EDGE) |
603 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \ | 599 #define FRAME_THEORETICAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \ |
604 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_TOOLBAR) | 600 FRAME_THEORETICAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_EDGE) |
605 | 601 |
606 /* This returns the window-local value rather than the frame-local value; | 602 /* This returns the window-local value rather than the frame-local value; |
607 that tells you about what's actually visible rather than what should | 603 that tells you about what's actually visible rather than what should |
608 be used when computing the frame size. */ | 604 be used when computing the frame size. */ |
609 | 605 |
668 #define FRAME_REAL_TOOLBAR_BOUNDS(f, pos) \ | 664 #define FRAME_REAL_TOOLBAR_BOUNDS(f, pos) \ |
669 (FRAME_REAL_TOOLBAR_SIZE (f, pos) + \ | 665 (FRAME_REAL_TOOLBAR_SIZE (f, pos) + \ |
670 2 * FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, pos)) | 666 2 * FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, pos)) |
671 | 667 |
672 #define FRAME_REAL_TOP_TOOLBAR_HEIGHT(f) \ | 668 #define FRAME_REAL_TOP_TOOLBAR_HEIGHT(f) \ |
673 FRAME_REAL_TOOLBAR_SIZE (f, TOP_TOOLBAR) | 669 FRAME_REAL_TOOLBAR_SIZE (f, TOP_EDGE) |
674 #define FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT(f) \ | 670 #define FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT(f) \ |
675 FRAME_REAL_TOOLBAR_SIZE (f, BOTTOM_TOOLBAR) | 671 FRAME_REAL_TOOLBAR_SIZE (f, BOTTOM_EDGE) |
676 #define FRAME_REAL_LEFT_TOOLBAR_WIDTH(f) \ | 672 #define FRAME_REAL_LEFT_TOOLBAR_WIDTH(f) \ |
677 FRAME_REAL_TOOLBAR_SIZE (f, LEFT_TOOLBAR) | 673 FRAME_REAL_TOOLBAR_SIZE (f, LEFT_EDGE) |
678 #define FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) \ | 674 #define FRAME_REAL_RIGHT_TOOLBAR_WIDTH(f) \ |
679 FRAME_REAL_TOOLBAR_SIZE (f, RIGHT_TOOLBAR) | 675 FRAME_REAL_TOOLBAR_SIZE (f, RIGHT_EDGE) |
680 | 676 |
681 #define FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH(f) \ | 677 #define FRAME_REAL_TOP_TOOLBAR_BORDER_WIDTH(f) \ |
682 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, TOP_TOOLBAR) | 678 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, TOP_EDGE) |
683 #define FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \ | 679 #define FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH(f) \ |
684 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_TOOLBAR) | 680 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, BOTTOM_EDGE) |
685 #define FRAME_REAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \ | 681 #define FRAME_REAL_LEFT_TOOLBAR_BORDER_WIDTH(f) \ |
686 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, LEFT_TOOLBAR) | 682 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, LEFT_EDGE) |
687 #define FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \ | 683 #define FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH(f) \ |
688 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_TOOLBAR) | 684 FRAME_REAL_TOOLBAR_BORDER_WIDTH (f, RIGHT_EDGE) |
689 | 685 |
690 #define FRAME_REAL_TOP_TOOLBAR_VISIBLE(f) \ | 686 #define FRAME_REAL_TOP_TOOLBAR_VISIBLE(f) \ |
691 FRAME_REAL_TOOLBAR_VISIBLE (f, TOP_TOOLBAR) | 687 FRAME_REAL_TOOLBAR_VISIBLE (f, TOP_EDGE) |
692 #define FRAME_REAL_BOTTOM_TOOLBAR_VISIBLE(f) \ | 688 #define FRAME_REAL_BOTTOM_TOOLBAR_VISIBLE(f) \ |
693 FRAME_REAL_TOOLBAR_VISIBLE (f, BOTTOM_TOOLBAR) | 689 FRAME_REAL_TOOLBAR_VISIBLE (f, BOTTOM_EDGE) |
694 #define FRAME_REAL_LEFT_TOOLBAR_VISIBLE(f) \ | 690 #define FRAME_REAL_LEFT_TOOLBAR_VISIBLE(f) \ |
695 FRAME_REAL_TOOLBAR_VISIBLE (f, LEFT_TOOLBAR) | 691 FRAME_REAL_TOOLBAR_VISIBLE (f, LEFT_EDGE) |
696 #define FRAME_REAL_RIGHT_TOOLBAR_VISIBLE(f) \ | 692 #define FRAME_REAL_RIGHT_TOOLBAR_VISIBLE(f) \ |
697 FRAME_REAL_TOOLBAR_VISIBLE (f, RIGHT_TOOLBAR) | 693 FRAME_REAL_TOOLBAR_VISIBLE (f, RIGHT_EDGE) |
698 | 694 |
699 #define FRAME_REAL_TOP_TOOLBAR_BOUNDS(f) \ | 695 #define FRAME_REAL_TOP_TOOLBAR_BOUNDS(f) \ |
700 FRAME_REAL_TOOLBAR_BOUNDS (f, TOP_TOOLBAR) | 696 FRAME_REAL_TOOLBAR_BOUNDS (f, TOP_EDGE) |
701 #define FRAME_REAL_BOTTOM_TOOLBAR_BOUNDS(f) \ | 697 #define FRAME_REAL_BOTTOM_TOOLBAR_BOUNDS(f) \ |
702 FRAME_REAL_TOOLBAR_BOUNDS (f, BOTTOM_TOOLBAR) | 698 FRAME_REAL_TOOLBAR_BOUNDS (f, BOTTOM_EDGE) |
703 #define FRAME_REAL_LEFT_TOOLBAR_BOUNDS(f) \ | 699 #define FRAME_REAL_LEFT_TOOLBAR_BOUNDS(f) \ |
704 FRAME_REAL_TOOLBAR_BOUNDS (f, LEFT_TOOLBAR) | 700 FRAME_REAL_TOOLBAR_BOUNDS (f, LEFT_EDGE) |
705 #define FRAME_REAL_RIGHT_TOOLBAR_BOUNDS(f) \ | 701 #define FRAME_REAL_RIGHT_TOOLBAR_BOUNDS(f) \ |
706 FRAME_REAL_TOOLBAR_BOUNDS (f, RIGHT_TOOLBAR) | 702 FRAME_REAL_TOOLBAR_BOUNDS (f, RIGHT_EDGE) |
707 | 703 |
708 /************************************************************************/ | 704 /************************************************************************/ |
709 /* frame dimensions defined using toolbars and gutters */ | 705 /* frame dimensions defined using toolbars and gutters */ |
710 /************************************************************************/ | 706 /************************************************************************/ |
711 | 707 |