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