Mercurial > hg > xemacs-beta
view src/ui-gtk.h @ 5045:c3cc3fa503a2
more frame-sizing cleanups
-------------------- ChangeLog entries follow: --------------------
man/ChangeLog addition:
2010-02-16 Ben Wing <ben@xemacs.org>
* internals/internals.texi (Top):
* internals/internals.texi (Modules for the Basic Displayable Lisp Objects):
* internals/internals.texi (Creating a Window-System Type):
* internals/internals.texi (Window and Frame Geometry):
* internals/internals.texi (Intro to Window and Frame Geometry):
* internals/internals.texi (The Frame):
* internals/internals.texi (The Non-Client Area):
* internals/internals.texi (The Client Area):
* internals/internals.texi (The Paned Area):
* internals/internals.texi (Text Areas):
* internals/internals.texi (The Displayable Area):
* internals/internals.texi (Which Functions Use Which?):
* internals/internals.texi (The Redisplay Mechanism):
Integrate the long comment in frame.c into the internals manual.
src/ChangeLog addition:
2010-02-16 Ben Wing <ben@xemacs.org>
* frame-impl.h:
* frame-impl.h (FRAME_INTERNAL_BORDER_WIDTH):
* frame-impl.h (FRAME_REAL_TOOLBAR_BOUNDS):
* frame-impl.h (FRAME_REAL_TOP_TOOLBAR_BOUNDS):
* frame-impl.h (FRAME_BOTTOM_BORDER_START):
* frame-impl.h (FRAME_LEFT_BORDER_START):
* frame-impl.h (FRAME_RIGHT_BORDER_START):
* frame.c (frame_conversion_internal_1):
* frame.c (change_frame_size_1):
* redisplay-output.c (clear_left_border):
* redisplay-output.c (clear_right_border):
* redisplay-output.c (redisplay_clear_top_of_window):
* redisplay-output.c (redisplay_clear_to_window_end):
* redisplay-output.c (redisplay_clear_bottom_of_window):
Rename FRAME_BORDER_* to FRAME_INTERNAL_BORDER_*. Add
general FRAME_INTERNAL_BORDER_SIZE(). Add FRAME_REAL_TOOLBAR_BOUNDS()
to encompass the entire size of the toolbar including its border.
Add specific top/left/bottom/right versions of this macro.
Rewrite FRAME_*_BORDER_START and FRAME_*_BORDER_END to take into use
FRAME_REAL_*_TOOLBAR_BOUNDS(). Add some comments about existing
problems in frame sizing and how they might be fixed. Simplify
change_frame_size_1() using the macros just created.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Tue, 16 Feb 2010 01:21:32 -0600 |
parents | b3ce27ca7647 |
children | b5df3737028a |
line wrap: on
line source
/* ui-gtk.h ** ** Description: ** ** Created by: William M. Perry ** Copyright (c) 2000 Aventail Corporation ** ** This file is part of XEmacs. ** ** XEmacs is free software; you can redistribute it and/or modify it ** under the terms of the GNU General Public License as published by the ** Free Software Foundation; either version 2, or (at your option) any ** later version. ** ** XEmacs is distributed in the hope that it will be useful, but WITHOUT ** ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ** FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ** for more details. ** ** You should have received a copy of the GNU General Public License ** along with XEmacs; see the file COPYING. If not, write to ** the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, ** Boston, MA 02111-1301, USA. */ #ifndef __UI_GTK_H__ #define __UI_GTK_H__ /* Encapsulate a foreign function call */ #include "sysgtk.h" #include "sysdll.h" typedef void (*ffi_actual_function) (void); typedef void (*ffi_marshalling_function) (ffi_actual_function, GtkArg *); #define MAX_GTK_ARGS 100 typedef struct { struct LCRECORD_HEADER header; GtkType return_type; GtkType args[MAX_GTK_ARGS]; gint n_args; Lisp_Object function_name; dll_func function_ptr; ffi_marshalling_function marshal; } emacs_ffi_data; DECLARE_LRECORD (emacs_ffi, emacs_ffi_data); #define XFFI(x) XRECORD (x, emacs_ffi, emacs_ffi_data) #define wrap_emacs_ffi(p) wrap_record (p, emacs_ffi) #define FFIP(x) RECORDP (x, emacs_ffi) #define CHECK_FFI(x) CHECK_RECORD (x, emacs_ffi) /* Encapsulate a GtkObject in Lisp */ typedef struct { struct LCRECORD_HEADER header; gboolean alive_p; GtkObject *object; Lisp_Object plist; } emacs_gtk_object_data; DECLARE_LRECORD (emacs_gtk_object, emacs_gtk_object_data); #define XGTK_OBJECT(x) XRECORD (x, emacs_gtk_object, emacs_gtk_object_data) #define wrap_emacs_gtk_object(p) wrap_record (p, emacs_gtk_object) #define GTK_OBJECTP(x) RECORDP (x, emacs_gtk_object) #define CHECK_GTK_OBJECT(x) CHECK_RECORD (x, emacs_gtk_object) extern Lisp_Object build_gtk_object (GtkObject *obj); /* Encapsulate a GTK_TYPE_BOXED in lisp */ typedef struct { struct LCRECORD_HEADER header; GtkType object_type; void *object; } emacs_gtk_boxed_data; DECLARE_LRECORD (emacs_gtk_boxed, emacs_gtk_boxed_data); #define XGTK_BOXED(x) XRECORD (x, emacs_gtk_boxed, emacs_gtk_boxed_data) #define wrap_emacs_gtk_boxed(p) wrap_record (p, emacs_gtk_boxed) #define GTK_BOXEDP(x) RECORDP (x, emacs_gtk_boxed) #define CHECK_GTK_BOXED(x) CHECK_RECORD (x, emacs_gtk_boxed) extern Lisp_Object build_gtk_boxed (void *obj, GtkType t); #endif /* __UI_GTK_H__ */