2007-02-27 03:09:15 +00:00
|
|
|
/*
|
|
|
|
Copyright (C) 1992 Lucid, Inc.
|
2020-01-01 00:19:43 +00:00
|
|
|
Copyright (C) 2000-2020 Free Software Foundation, Inc.
|
2007-02-27 03:09:15 +00:00
|
|
|
|
|
|
|
This file is part of the Lucid Widget Library.
|
|
|
|
|
|
|
|
The Lucid Widget Library 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 1, or (at your option)
|
|
|
|
any later version.
|
|
|
|
|
|
|
|
The Lucid Widget Library 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
|
2017-09-13 22:52:52 +00:00
|
|
|
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
|
2007-02-27 03:09:15 +00:00
|
|
|
|
|
|
|
|
1994-01-18 23:47:41 +00:00
|
|
|
#ifndef LWLIB_INTERNAL_H
|
|
|
|
#define LWLIB_INTERNAL_H
|
|
|
|
|
|
|
|
#include "lwlib.h"
|
|
|
|
|
2010-04-11 18:25:09 +00:00
|
|
|
struct widget_xft_data;
|
|
|
|
|
1994-01-18 23:47:41 +00:00
|
|
|
typedef struct _widget_instance
|
|
|
|
{
|
|
|
|
Widget widget;
|
|
|
|
Widget parent;
|
|
|
|
Boolean pop_up_p;
|
Don't link libXft when using cairo
* configure.ac: Check cairo early. Don't try Xft if cairo is used.
* lwlib/lwlib-utils.h [USE_CAIRO]: Include cairo.h and fontconfig.h.
(XftFont, XftDraw, XftColor, XGlyphInfo) [USE_CAIRO]: New typedefs.
(XftFontOpenName, XftFontClose, XftDrawCreate, XftDrawDestroy)
(XftDrawRect, XftDrawStringUtf8, XftTextExtentsUtf8) [USE_CAIRO]: New macros.
(crxft_font_open_name, crxft_font_close, crxft_draw_create)
(crxft_draw_rect, crxft_draw_string, crxft_text_extents) [USE_CAIRO]: New
externs.
* lwlib/lwlib-utils.c [USE_CAIRO]: Include math.h, cairo-ft.h, and
cairo-xlib.h.
(crxft_font_open_name, crxft_font_close, crxft_draw_create)
(crxft_set_source_color, crxft_draw_rect, crxft_draw_string)
(crxft_text_extents) [USE_CAIRO]: New Xft compatibility functions.
* lwlib/xlwmenuP.h [USE_CAIRO]: Include lwlib-utils.h.
* lwlib/xlwmenu.c (display_menu_item) [USE_CAIRO]: Call
cairo_surface_mark_dirty and cairo_surface_flush.
* lwlib/lwlib-Xaw.c [USE_CAIRO]: Include stdlib.h and lwlib-utils.h.
(draw_text) [USE_CAIRO]: Call cairo_surface_flush.
* src/xsettings.c [USE_CAIRO]: Include fontconfig.h
(apply_xft_settings) [!HAVE_XFT]: Don't call XftDefaultSubstitute or
XftDefaultSet.
* lwlib/lwlib-Xaw.c:
* lwlib/lwlib-int.h:
* lwlib/xlwmenu.c:
* lwlib/xlwmenuP.h:
* src/xrdb.c:
* src/xsettings.c:
* src/xterm.c: Replace all #ifdef HAVE_XFT with #if defined USE_CAIRO ||
defined HAVE_XFT.
* src/xfns.c (x_default_font_parameter): Replace #ifdef HAVE_XFT with #if
defined USE_CAIRO || defined HAVE_XFT.
2019-04-24 03:31:37 +00:00
|
|
|
#if defined USE_CAIRO || defined HAVE_XFT
|
2010-04-11 18:25:09 +00:00
|
|
|
struct widget_xft_data *xft_data;
|
|
|
|
#endif
|
1994-01-18 23:47:41 +00:00
|
|
|
struct _widget_info* info;
|
|
|
|
struct _widget_instance* next;
|
|
|
|
} widget_instance;
|
|
|
|
|
|
|
|
typedef struct _widget_info
|
|
|
|
{
|
|
|
|
char* type;
|
|
|
|
char* name;
|
|
|
|
LWLIB_ID id;
|
|
|
|
widget_value* val;
|
|
|
|
Boolean busy;
|
|
|
|
lw_callback pre_activate_cb;
|
|
|
|
lw_callback selection_cb;
|
|
|
|
lw_callback post_activate_cb;
|
2000-01-17 09:10:21 +00:00
|
|
|
lw_callback highlight_cb;
|
1994-01-18 23:47:41 +00:00
|
|
|
struct _widget_instance* instances;
|
|
|
|
struct _widget_info* next;
|
|
|
|
} widget_info;
|
|
|
|
|
Change function definition from K&R to prototype. Fix prototype warnings.
* lwlib-Xaw.c (xaw_generic_callback, command_reset)
(xaw_update_one_value): Reformat.
(xaw_update_one_widget): Reformat and remove dead code.
(xaw_scrollbar_scroll, xaw_scrollbar_jump, xaw_create_scrollbar)
(xaw_update_scrollbar): Remove (not used).
(make_dialog): Change from K&R to prototype. Remove dead code.
(xaw_creation_table): Remove scrollbar entry.
* lwlib-Xlw.c (x_print_complete_resource_name): Change from K&R to
prototype.
(xlw_update_one_value): Reformat.
* lwlib-Xm.c (x_print_complete_resource_name)
(make_destroyed_instance, free_destroyed_instance, first_child)
(lw_motif_widget_p, resource_motif_string, destroy_all_children)
(xm_arm_callback, xm_update_label, xm_update_list)
(xm_update_pushbutton, xm_update_cascadebutton)
(xm_update_toggle, xm_update_radiobox, make_menu_in_widget)
(update_one_menu_entry, xm_update_menu, xm_update_text)
(xm_update_text_field, xm_update_one_widget)
(xm_update_one_value, activate_button, dialog_key_cb)
(make_dialog, mark_dead_instance_destroyed)
(find_matching_instance, recenter_widget, recycle_instance)
(xm_create_dialog, make_menubar, remove_grabs, make_popup_menu)
(make_main, xm_destroy_instance, xm_popup_menu)
(set_min_dialog_size, xm_pop_instance, do_call)
(xm_internal_update_other_instances, xm_generic_callback)
(xm_nosel_callback, xm_pull_down_callback, xm_pop_down_callback)
(xm_set_keyboard_focus, xm_set_main_areas, xm_manage_resizing): Change
from K&R to prototype.
* lwlib-int.h (widget_creation_function): Fix prototype.
* lwlib.c (allocate_widget_info, lw_register_widget): Change from K&R
to prototype.
(lw_internal_update_other_instances, merge_widget_value): Reformat.
* xlwmenu.c (size_menu_item): Change from K&R to prototype.
Change label_width and height to int.
(draw_arrow, draw_shadow_rectangle, draw_shadow_rhombus)
(draw_separator, display_menu, fit_to_screen, motion_event_is_in_menu)
(map_event_to_widget_value): Reformat.
(display_menu_item): Change from K&R to prototype.
2010-07-08 10:29:51 +00:00
|
|
|
typedef Widget (*widget_creation_function) (widget_instance *instance);
|
1994-01-18 23:47:41 +00:00
|
|
|
|
|
|
|
typedef struct _widget_creation_entry
|
|
|
|
{
|
|
|
|
char* type;
|
|
|
|
widget_creation_function function;
|
|
|
|
} widget_creation_entry;
|
|
|
|
|
|
|
|
/* update all other instances of a widget. Can be used in a callback when
|
1996-01-05 00:45:43 +00:00
|
|
|
a widget has been used by the user */
|
1994-01-18 23:47:41 +00:00
|
|
|
void
|
2010-07-02 09:26:33 +00:00
|
|
|
lw_internal_update_other_instances (Widget, XtPointer, XtPointer);
|
1994-01-18 23:47:41 +00:00
|
|
|
|
|
|
|
/* get the widget_value for a widget in a given instance */
|
|
|
|
widget_value*
|
2010-07-02 09:26:33 +00:00
|
|
|
lw_get_widget_value_for_widget (widget_instance *, Widget);
|
1994-01-18 23:47:41 +00:00
|
|
|
|
2010-07-02 09:26:33 +00:00
|
|
|
widget_info *lw_get_widget_info (LWLIB_ID);
|
|
|
|
widget_instance * lw_get_widget_instance (Widget);
|
1994-01-18 23:47:41 +00:00
|
|
|
|
1994-09-10 15:23:10 +00:00
|
|
|
#endif /* LWLIB_INTERNAL_H */
|