All gadgets now send events
This commit is contained in:
parent
5e77e6f143
commit
dc84147b51
|
@ -4,6 +4,7 @@ D2X-Rebirth Changelog
|
||||||
--------
|
--------
|
||||||
d2x-Info.plist, d2xgl-Info.plist, English.lproj/InfoPlist.strings, RELEASE-NOTES.txt: Increment version to 0.57.2 for Mac and RELEASE-NOTES
|
d2x-Info.plist, d2xgl-Info.plist, English.lproj/InfoPlist.strings, RELEASE-NOTES.txt: Increment version to 0.57.2 for Mac and RELEASE-NOTES
|
||||||
d2x-rebirth.xcodeproj/project.pbxproj, editor/data/, editor/data/curve.pad, editor/data/dummy.pad, editor/data/group.pad, editor/data/lighting.pad, editor/data/med.mnu, editor/data/newobj.pad, editor/data/object.pad, editor/data/objmov.pad, editor/data/pc6x8.fnt, editor/data/pc8x16.fnt, editor/data/segmove.pad, editor/data/segsize.pad, editor/data/test.pad, editor/data/texture.pad, editor/med.c, include/physfsx.h, misc/physfsx.c, ui/ui.c: Actually add editor data files and make sure DXX can find them
|
d2x-rebirth.xcodeproj/project.pbxproj, editor/data/, editor/data/curve.pad, editor/data/dummy.pad, editor/data/group.pad, editor/data/lighting.pad, editor/data/med.mnu, editor/data/newobj.pad, editor/data/object.pad, editor/data/objmov.pad, editor/data/pc6x8.fnt, editor/data/pc8x16.fnt, editor/data/segmove.pad, editor/data/segsize.pad, editor/data/test.pad, editor/data/texture.pad, editor/med.c, include/physfsx.h, misc/physfsx.c, ui/ui.c: Actually add editor data files and make sure DXX can find them
|
||||||
|
arch/include/event.h, editor/med.c, include/ui.h, ui/button.c, ui/checkbox.c, ui/dialog.c, ui/gadget.c, ui/icon.c, ui/inputbox.c, ui/listbox.c, ui/radio.c, ui/scroll.c, ui/ui.c, ui/userbox.c: All gadgets now send events
|
||||||
|
|
||||||
20120109
|
20120109
|
||||||
--------
|
--------
|
||||||
|
|
|
@ -44,7 +44,12 @@ typedef enum event_type
|
||||||
|
|
||||||
EVENT_NEWMENU_DRAW, // draw after the newmenu stuff is drawn (e.g. savegame previews)
|
EVENT_NEWMENU_DRAW, // draw after the newmenu stuff is drawn (e.g. savegame previews)
|
||||||
EVENT_NEWMENU_CHANGED, // an item had its value/text changed
|
EVENT_NEWMENU_CHANGED, // an item had its value/text changed
|
||||||
EVENT_NEWMENU_SELECTED // user chose something - pressed enter/clicked on it
|
EVENT_NEWMENU_SELECTED, // user chose something - pressed enter/clicked on it
|
||||||
|
|
||||||
|
EVENT_UI_GADGET_PRESSED, // user 'pressed' a gadget
|
||||||
|
EVENT_UI_LISTBOX_MOVED,
|
||||||
|
EVENT_UI_LISTBOX_SELECTED,
|
||||||
|
EVENT_UI_USERBOX_DRAGGED
|
||||||
} event_type;
|
} event_type;
|
||||||
|
|
||||||
// A vanilla event. Cast to the correct type of event according to 'type'.
|
// A vanilla event. Cast to the correct type of event according to 'type'.
|
||||||
|
|
12
editor/med.c
12
editor/med.c
|
@ -1200,16 +1200,16 @@ void editor(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)GameViewBox) current_view=NULL;
|
// if (EditorWindow->keyboard_focus_gadget == (UI_GADGET *)GameViewBox) current_view=NULL;
|
||||||
// if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)GroupViewBox) current_view=NULL;
|
// if (EditorWindow->keyboard_focus_gadget == (UI_GADGET *)GroupViewBox) current_view=NULL;
|
||||||
|
|
||||||
new_cv = current_view ;
|
new_cv = current_view ;
|
||||||
|
|
||||||
#if ORTHO_VIEWS
|
#if ORTHO_VIEWS
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)LargeViewBox) new_cv=&LargeView;
|
if (EditorWindow->keyboard_focus_gadget == (UI_GADGET *)LargeViewBox) new_cv=&LargeView;
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)TopViewBox) new_cv=&TopView;
|
if (EditorWindow->keyboard_focus_gadget == (UI_GADGET *)TopViewBox) new_cv=&TopView;
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)FrontViewBox) new_cv=&FrontView;
|
if (EditorWindow->keyboard_focus_gadget == (UI_GADGET *)FrontViewBox) new_cv=&FrontView;
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)RightViewBox) new_cv=&RightView;
|
if (EditorWindow->keyboard_focus_gadget == (UI_GADGET *)RightViewBox) new_cv=&RightView;
|
||||||
#endif
|
#endif
|
||||||
if (new_cv != current_view ) {
|
if (new_cv != current_view ) {
|
||||||
current_view->ev_changed = 1;
|
current_view->ev_changed = 1;
|
||||||
|
|
36
include/ui.h
36
include/ui.h
|
@ -21,6 +21,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
#define _UI_H
|
#define _UI_H
|
||||||
|
|
||||||
struct d_event;
|
struct d_event;
|
||||||
|
enum event_type;
|
||||||
|
|
||||||
struct window;
|
struct window;
|
||||||
|
|
||||||
|
@ -245,9 +246,6 @@ typedef struct {
|
||||||
extern grs_font * ui_small_font;
|
extern grs_font * ui_small_font;
|
||||||
|
|
||||||
extern UI_MOUSE Mouse;
|
extern UI_MOUSE Mouse;
|
||||||
extern UI_DIALOG * CurWindow;
|
|
||||||
extern UI_DIALOG * FirstWindow;
|
|
||||||
extern UI_DIALOG * LastWindow;
|
|
||||||
|
|
||||||
extern unsigned char CBLACK,CGREY,CWHITE,CBRIGHT,CRED;
|
extern unsigned char CBLACK,CGREY,CWHITE,CBRIGHT,CRED;
|
||||||
extern UI_GADGET * selected_gadget;
|
extern UI_GADGET * selected_gadget;
|
||||||
|
@ -283,15 +281,17 @@ extern void ui_close_dialog( UI_DIALOG * dlg );
|
||||||
extern UI_GADGET * ui_gadget_add( UI_DIALOG * dlg, short kind, short x1, short y1, short x2, short y2 );
|
extern UI_GADGET * ui_gadget_add( UI_DIALOG * dlg, short kind, short x1, short y1, short x2, short y2 );
|
||||||
extern UI_GADGET_BUTTON * ui_add_gadget_button( UI_DIALOG * dlg, short x, short y, short w, short h, char * text, int (*function_to_call)(void) );
|
extern UI_GADGET_BUTTON * ui_add_gadget_button( UI_DIALOG * dlg, short x, short y, short w, short h, char * text, int (*function_to_call)(void) );
|
||||||
extern void ui_gadget_delete_all( UI_DIALOG * dlg );
|
extern void ui_gadget_delete_all( UI_DIALOG * dlg );
|
||||||
|
extern int ui_gadget_send_event(UI_DIALOG *dlg, enum event_type type, UI_GADGET *gadget);
|
||||||
|
extern UI_GADGET *ui_event_get_gadget(struct d_event *event);
|
||||||
extern int ui_dialog_do_gadgets( UI_DIALOG * dlg, struct d_event *event );
|
extern int ui_dialog_do_gadgets( UI_DIALOG * dlg, struct d_event *event );
|
||||||
extern void ui_draw_button( UI_GADGET_BUTTON * button );
|
extern void ui_draw_button( UI_DIALOG *dlg, UI_GADGET_BUTTON * button );
|
||||||
|
|
||||||
extern int ui_mouse_on_gadget( UI_GADGET * gadget );
|
extern int ui_mouse_on_gadget( UI_GADGET * gadget );
|
||||||
|
|
||||||
extern int ui_button_do( UI_GADGET_BUTTON * button, struct d_event *event );
|
extern int ui_button_do( UI_DIALOG *dlg, UI_GADGET_BUTTON * button, struct d_event *event );
|
||||||
|
|
||||||
extern int ui_listbox_do( UI_GADGET_LISTBOX * listbox, struct d_event *event );
|
extern int ui_listbox_do( UI_DIALOG *dlg, UI_GADGET_LISTBOX * listbox, struct d_event *event );
|
||||||
extern void ui_draw_listbox( UI_GADGET_LISTBOX * listbox );
|
extern void ui_draw_listbox( UI_DIALOG *dlg, UI_GADGET_LISTBOX * listbox );
|
||||||
extern UI_GADGET_LISTBOX *ui_add_gadget_listbox(UI_DIALOG *dlg, short x, short y, short w, short h, short numitems, char **list);
|
extern UI_GADGET_LISTBOX *ui_add_gadget_listbox(UI_DIALOG *dlg, short x, short y, short w, short h, short numitems, char **list);
|
||||||
|
|
||||||
extern void ui_mega_process();
|
extern void ui_mega_process();
|
||||||
|
@ -300,21 +300,21 @@ extern int ui_event_handler(struct d_event *event);
|
||||||
extern void ui_get_button_size( char * text, int * width, int * height );
|
extern void ui_get_button_size( char * text, int * width, int * height );
|
||||||
|
|
||||||
extern UI_GADGET_SCROLLBAR * ui_add_gadget_scrollbar( UI_DIALOG * dlg, short x, short y, short w, short h, int start, int stop, int position, int window_size );
|
extern UI_GADGET_SCROLLBAR * ui_add_gadget_scrollbar( UI_DIALOG * dlg, short x, short y, short w, short h, int start, int stop, int position, int window_size );
|
||||||
extern int ui_scrollbar_do( UI_GADGET_SCROLLBAR * scrollbar, struct d_event *event );
|
extern int ui_scrollbar_do( UI_DIALOG *dlg, UI_GADGET_SCROLLBAR * scrollbar, struct d_event *event );
|
||||||
extern void ui_draw_scrollbar( UI_GADGET_SCROLLBAR * scrollbar );
|
extern void ui_draw_scrollbar( UI_DIALOG *dlg, UI_GADGET_SCROLLBAR * scrollbar );
|
||||||
|
|
||||||
|
|
||||||
extern void ui_dprintf( UI_DIALOG * dlg, char * format, ... );
|
extern void ui_dprintf( UI_DIALOG * dlg, char * format, ... );
|
||||||
extern void ui_dprintf_at( UI_DIALOG * dlg, short x, short y, char * format, ... );
|
extern void ui_dprintf_at( UI_DIALOG * dlg, short x, short y, char * format, ... );
|
||||||
|
|
||||||
extern void ui_draw_radio( UI_GADGET_RADIO * radio );
|
extern void ui_draw_radio( UI_DIALOG *dlg, UI_GADGET_RADIO * radio );
|
||||||
extern UI_GADGET_RADIO * ui_add_gadget_radio( UI_DIALOG * dlg, short x, short y, short w, short h, short group, char * text );
|
extern UI_GADGET_RADIO * ui_add_gadget_radio( UI_DIALOG * dlg, short x, short y, short w, short h, short group, char * text );
|
||||||
extern int ui_radio_do( UI_GADGET_RADIO * radio, struct d_event *event );
|
extern int ui_radio_do( UI_DIALOG *dlg, UI_GADGET_RADIO * radio, struct d_event *event );
|
||||||
extern void ui_radio_set_value(UI_GADGET_RADIO *radio, int value);
|
extern void ui_radio_set_value(UI_GADGET_RADIO *radio, int value);
|
||||||
|
|
||||||
extern void ui_draw_checkbox( UI_GADGET_CHECKBOX * checkbox );
|
extern void ui_draw_checkbox( UI_DIALOG *dlg, UI_GADGET_CHECKBOX * checkbox );
|
||||||
extern UI_GADGET_CHECKBOX * ui_add_gadget_checkbox( UI_DIALOG * dlg, short x, short y, short w, short h, short group, char * text );
|
extern UI_GADGET_CHECKBOX * ui_add_gadget_checkbox( UI_DIALOG * dlg, short x, short y, short w, short h, short group, char * text );
|
||||||
extern int ui_checkbox_do( UI_GADGET_CHECKBOX * checkbox, struct d_event *event );
|
extern int ui_checkbox_do( UI_DIALOG *dlg, UI_GADGET_CHECKBOX * checkbox, struct d_event *event );
|
||||||
extern void ui_checkbox_check(UI_GADGET_CHECKBOX * checkbox, int check);
|
extern void ui_checkbox_check(UI_GADGET_CHECKBOX * checkbox, int check);
|
||||||
|
|
||||||
extern UI_GADGET * ui_gadget_get_prev( UI_GADGET * gadget );
|
extern UI_GADGET * ui_gadget_get_prev( UI_GADGET * gadget );
|
||||||
|
@ -324,15 +324,15 @@ extern void ui_gadget_calc_keys( UI_DIALOG * dlg);
|
||||||
extern void ui_listbox_change(UI_DIALOG *dlg, UI_GADGET_LISTBOX *listbox, short numitems, char **list);
|
extern void ui_listbox_change(UI_DIALOG *dlg, UI_GADGET_LISTBOX *listbox, short numitems, char **list);
|
||||||
|
|
||||||
|
|
||||||
extern void ui_draw_inputbox( UI_GADGET_INPUTBOX * inputbox );
|
extern void ui_draw_inputbox( UI_DIALOG *dlg, UI_GADGET_INPUTBOX * inputbox );
|
||||||
extern UI_GADGET_INPUTBOX * ui_add_gadget_inputbox( UI_DIALOG * dlg, short x, short y, short w, short h, char * text );
|
extern UI_GADGET_INPUTBOX * ui_add_gadget_inputbox( UI_DIALOG * dlg, short x, short y, short w, short h, char * text );
|
||||||
extern int ui_inputbox_do( UI_GADGET_INPUTBOX * inputbox, struct d_event *event );
|
extern int ui_inputbox_do( UI_DIALOG *dlg, UI_GADGET_INPUTBOX * inputbox, struct d_event *event );
|
||||||
extern void ui_inputbox_set_text(UI_GADGET_INPUTBOX *inputbox, char *text);
|
extern void ui_inputbox_set_text(UI_GADGET_INPUTBOX *inputbox, char *text);
|
||||||
|
|
||||||
|
|
||||||
extern int ui_userbox_do( UI_GADGET_USERBOX * userbox, struct d_event *event );
|
extern int ui_userbox_do( UI_DIALOG *dlg, UI_GADGET_USERBOX * userbox, struct d_event *event );
|
||||||
extern UI_GADGET_USERBOX * ui_add_gadget_userbox( UI_DIALOG * dlg, short x, short y, short w, short h );
|
extern UI_GADGET_USERBOX * ui_add_gadget_userbox( UI_DIALOG * dlg, short x, short y, short w, short h );
|
||||||
extern void ui_draw_userbox( UI_GADGET_USERBOX * userbox );
|
extern void ui_draw_userbox( UI_DIALOG *dlg, UI_GADGET_USERBOX * userbox );
|
||||||
|
|
||||||
|
|
||||||
extern int MenuX( int x, int y, int NumButtons, char * text[] );
|
extern int MenuX( int x, int y, int NumButtons, char * text[] );
|
||||||
|
@ -372,7 +372,7 @@ int ui_get_file( char * filename, char * Filespec );
|
||||||
int MessageBoxN( short xc, short yc, int NumButtons, char * text, char * Button[] );
|
int MessageBoxN( short xc, short yc, int NumButtons, char * text, char * Button[] );
|
||||||
|
|
||||||
void ui_draw_icon( UI_GADGET_ICON * icon );
|
void ui_draw_icon( UI_GADGET_ICON * icon );
|
||||||
int ui_icon_do( UI_GADGET_ICON * icon, struct d_event *event );
|
int ui_icon_do( UI_DIALOG *dlg, UI_GADGET_ICON * icon, struct d_event *event );
|
||||||
UI_GADGET_ICON * ui_add_gadget_icon( UI_DIALOG * dlg, char * text, short x, short y, short w, short h, int k,int (*f)(void) );
|
UI_GADGET_ICON * ui_add_gadget_icon( UI_DIALOG * dlg, char * text, short x, short y, short w, short h, int k,int (*f)(void) );
|
||||||
|
|
||||||
int GetKeyCode(char * text);
|
int GetKeyCode(char * text);
|
||||||
|
|
17
ui/button.c
17
ui/button.c
|
@ -51,7 +51,7 @@ void ui_get_button_size( char * text, int * width, int * height )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ui_draw_button( UI_GADGET_BUTTON * button )
|
void ui_draw_button(UI_DIALOG *dlg, UI_GADGET_BUTTON * button)
|
||||||
{
|
{
|
||||||
int color;
|
int color;
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ void ui_draw_button( UI_GADGET_BUTTON * button )
|
||||||
gr_set_current_canvas( button->canvas );
|
gr_set_current_canvas( button->canvas );
|
||||||
color = button->canvas->cv_color;
|
color = button->canvas->cv_color;
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)button)
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *)button)
|
||||||
gr_set_fontcolor( CRED, -1 );
|
gr_set_fontcolor( CRED, -1 );
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -129,7 +129,7 @@ UI_GADGET_BUTTON * ui_add_gadget_button( UI_DIALOG * dlg, short x, short y, shor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ui_button_do( UI_GADGET_BUTTON * button, d_event *event )
|
int ui_button_do(UI_DIALOG *dlg, UI_GADGET_BUTTON * button, d_event *event)
|
||||||
{
|
{
|
||||||
int rval = 0;
|
int rval = 0;
|
||||||
|
|
||||||
|
@ -165,7 +165,7 @@ int ui_button_do( UI_GADGET_BUTTON * button, d_event *event )
|
||||||
|
|
||||||
if ((keypress == button->hotkey) ||
|
if ((keypress == button->hotkey) ||
|
||||||
((keypress == button->hotkey1) && button->user_function1) ||
|
((keypress == button->hotkey1) && button->user_function1) ||
|
||||||
((CurWindow->keyboard_focus_gadget==(UI_GADGET *)button) && ((keypress==KEY_SPACEBAR) || (keypress==KEY_ENTER)) ))
|
((dlg->keyboard_focus_gadget==(UI_GADGET *)button) && ((keypress==KEY_SPACEBAR) || (keypress==KEY_ENTER)) ))
|
||||||
{
|
{
|
||||||
button->position = 2;
|
button->position = 2;
|
||||||
rval = 1;
|
rval = 1;
|
||||||
|
@ -180,7 +180,7 @@ int ui_button_do( UI_GADGET_BUTTON * button, d_event *event )
|
||||||
button->position = 0;
|
button->position = 0;
|
||||||
|
|
||||||
if ((keypress == button->hotkey) ||
|
if ((keypress == button->hotkey) ||
|
||||||
((CurWindow->keyboard_focus_gadget==(UI_GADGET *)button) && ((keypress==KEY_SPACEBAR) || (keypress==KEY_ENTER)) ))
|
((dlg->keyboard_focus_gadget==(UI_GADGET *)button) && ((keypress==KEY_SPACEBAR) || (keypress==KEY_ENTER)) ))
|
||||||
button->pressed = 1;
|
button->pressed = 1;
|
||||||
|
|
||||||
if ((keypress == button->hotkey1) && button->user_function1)
|
if ((keypress == button->hotkey1) && button->user_function1)
|
||||||
|
@ -190,13 +190,18 @@ int ui_button_do( UI_GADGET_BUTTON * button, d_event *event )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ui_draw_button( button );
|
ui_draw_button( dlg, button );
|
||||||
|
|
||||||
if (button->pressed && button->user_function )
|
if (button->pressed && button->user_function )
|
||||||
{
|
{
|
||||||
button->user_function();
|
button->user_function();
|
||||||
rval = 1;
|
rval = 1;
|
||||||
}
|
}
|
||||||
|
else if (button->pressed)
|
||||||
|
{
|
||||||
|
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, (UI_GADGET *)button);
|
||||||
|
rval = 1;
|
||||||
|
}
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ static char rcsid[] = "$Id: checkbox.c,v 1.1.1.1 2006/03/17 19:52:20 zicodxx Exp
|
||||||
|
|
||||||
#define Middle(x) ((2*(x)+1)/4)
|
#define Middle(x) ((2*(x)+1)/4)
|
||||||
|
|
||||||
void ui_draw_checkbox( UI_GADGET_CHECKBOX * checkbox )
|
void ui_draw_checkbox( UI_DIALOG *dlg, UI_GADGET_CHECKBOX * checkbox )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ((checkbox->status==1) || (checkbox->position != checkbox->oldposition))
|
if ((checkbox->status==1) || (checkbox->position != checkbox->oldposition))
|
||||||
|
@ -40,7 +40,7 @@ void ui_draw_checkbox( UI_GADGET_CHECKBOX * checkbox )
|
||||||
ui_mouse_hide();
|
ui_mouse_hide();
|
||||||
gr_set_current_canvas( checkbox->canvas );
|
gr_set_current_canvas( checkbox->canvas );
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)checkbox)
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *)checkbox)
|
||||||
gr_set_fontcolor( CRED, -1 );
|
gr_set_fontcolor( CRED, -1 );
|
||||||
else
|
else
|
||||||
gr_set_fontcolor( CBLACK, -1 );
|
gr_set_fontcolor( CBLACK, -1 );
|
||||||
|
@ -88,7 +88,7 @@ UI_GADGET_CHECKBOX * ui_add_gadget_checkbox( UI_DIALOG * dlg, short x, short y,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ui_checkbox_do( UI_GADGET_CHECKBOX * checkbox, d_event *event )
|
int ui_checkbox_do( UI_DIALOG *dlg, UI_GADGET_CHECKBOX * checkbox, d_event *event )
|
||||||
{
|
{
|
||||||
int rval = 0;
|
int rval = 0;
|
||||||
|
|
||||||
|
@ -122,7 +122,7 @@ int ui_checkbox_do( UI_GADGET_CHECKBOX * checkbox, d_event *event )
|
||||||
|
|
||||||
key = event_key_get(event);
|
key = event_key_get(event);
|
||||||
|
|
||||||
if ((CurWindow->keyboard_focus_gadget==(UI_GADGET *)checkbox) && ((key==KEY_SPACEBAR) || (key==KEY_ENTER)) )
|
if ((dlg->keyboard_focus_gadget==(UI_GADGET *)checkbox) && ((key==KEY_SPACEBAR) || (key==KEY_ENTER)) )
|
||||||
{
|
{
|
||||||
checkbox->position = 2;
|
checkbox->position = 2;
|
||||||
rval = 1;
|
rval = 1;
|
||||||
|
@ -136,17 +136,18 @@ int ui_checkbox_do( UI_GADGET_CHECKBOX * checkbox, d_event *event )
|
||||||
|
|
||||||
checkbox->position = 0;
|
checkbox->position = 0;
|
||||||
|
|
||||||
if ((CurWindow->keyboard_focus_gadget==(UI_GADGET *)checkbox) && ((key==KEY_SPACEBAR) || (key==KEY_ENTER)) )
|
if ((dlg->keyboard_focus_gadget==(UI_GADGET *)checkbox) && ((key==KEY_SPACEBAR) || (key==KEY_ENTER)) )
|
||||||
checkbox->pressed = 1;
|
checkbox->pressed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkbox->pressed == 1)
|
if (checkbox->pressed == 1)
|
||||||
{
|
{
|
||||||
checkbox->flag ^= 1;
|
checkbox->flag ^= 1;
|
||||||
|
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, (UI_GADGET *)checkbox);
|
||||||
rval = 1;
|
rval = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ui_draw_checkbox( checkbox );
|
ui_draw_checkbox( dlg, checkbox );
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,10 +47,6 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
#define _enable()
|
#define _enable()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
UI_DIALOG * CurWindow = NULL;
|
|
||||||
UI_DIALOG * FirstWindow = NULL;
|
|
||||||
UI_DIALOG * LastWindow = NULL;
|
|
||||||
|
|
||||||
int last_keypress = 0;
|
int last_keypress = 0;
|
||||||
|
|
||||||
#define BORDER_WIDTH 8
|
#define BORDER_WIDTH 8
|
||||||
|
@ -327,9 +323,6 @@ void ui_close_dialog( UI_DIALOG * dlg )
|
||||||
|
|
||||||
selected_gadget = NULL;
|
selected_gadget = NULL;
|
||||||
|
|
||||||
if (CurWindow==dlg)
|
|
||||||
CurWindow = NULL;
|
|
||||||
|
|
||||||
if (dlg->wind)
|
if (dlg->wind)
|
||||||
window_close(dlg->wind);
|
window_close(dlg->wind);
|
||||||
|
|
||||||
|
|
106
ui/gadget.c
106
ui/gadget.c
|
@ -33,6 +33,12 @@ static char rcsid[] = "$Id: gadget.c,v 1.1.1.1 2006/03/17 19:52:21 zicodxx Exp $
|
||||||
|
|
||||||
UI_GADGET * selected_gadget;
|
UI_GADGET * selected_gadget;
|
||||||
|
|
||||||
|
typedef struct event_gadget
|
||||||
|
{
|
||||||
|
event_type type;
|
||||||
|
UI_GADGET *gadget;
|
||||||
|
} event_gadget;
|
||||||
|
|
||||||
UI_GADGET * ui_gadget_add( UI_DIALOG * dlg, short kind, short x1, short y1, short x2, short y2 )
|
UI_GADGET * ui_gadget_add( UI_DIALOG * dlg, short kind, short x1, short y1, short x2, short y2 )
|
||||||
{
|
{
|
||||||
UI_GADGET * gadget;
|
UI_GADGET * gadget;
|
||||||
|
@ -172,7 +178,7 @@ int ui_mouse_on_gadget( UI_GADGET * gadget )
|
||||||
if ((x >= gadget->x1) && (x <= gadget->x2-1) && (y >= gadget->y1) && (y <= gadget->y2-1) )
|
if ((x >= gadget->x1) && (x <= gadget->x2-1) && (y >= gadget->y1) && (y <= gadget->y2-1) )
|
||||||
{
|
{
|
||||||
#if 0 // check is no longer required - if it is under another window, that dialog's handler would have returned 1
|
#if 0 // check is no longer required - if it is under another window, that dialog's handler would have returned 1
|
||||||
if (is_under_another_window(CurWindow, gadget))
|
if (is_under_another_window(dlg, gadget))
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -180,14 +186,67 @@ int ui_mouse_on_gadget( UI_GADGET * gadget )
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ui_gadget_do(UI_DIALOG *dlg, UI_GADGET *g, d_event *event)
|
||||||
|
{
|
||||||
|
switch( g->kind )
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
return ui_button_do(dlg, (UI_GADGET_BUTTON *)g, event);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
return ui_listbox_do(dlg, (UI_GADGET_LISTBOX *)g, event);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
return ui_scrollbar_do(dlg, (UI_GADGET_SCROLLBAR *)g, event);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
return ui_radio_do(dlg, (UI_GADGET_RADIO *)g, event);
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
return ui_checkbox_do(dlg, (UI_GADGET_CHECKBOX *)g, event);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
return ui_inputbox_do(dlg, (UI_GADGET_INPUTBOX *)g, event);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
return ui_userbox_do(dlg, (UI_GADGET_USERBOX *)g, event);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
return ui_keytrap_do((UI_GADGET_KEYTRAP *)g, event);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
return ui_icon_do(dlg, (UI_GADGET_ICON *)g, event);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ui_gadget_send_event(UI_DIALOG *dlg, event_type type, UI_GADGET *gadget)
|
||||||
|
{
|
||||||
|
event_gadget event;
|
||||||
|
|
||||||
|
event.type = type;
|
||||||
|
event.gadget = gadget;
|
||||||
|
|
||||||
|
if (gadget->parent)
|
||||||
|
return ui_gadget_do(dlg, gadget->parent, (d_event *) &event);
|
||||||
|
|
||||||
|
return window_send_event(ui_dialog_get_window(dlg), (d_event *) &event);
|
||||||
|
}
|
||||||
|
|
||||||
|
UI_GADGET *ui_event_get_gadget(d_event *event)
|
||||||
|
{
|
||||||
|
Assert(event->type == EVENT_UI_GADGET_PRESSED); // more to come?
|
||||||
|
return ((event_gadget *) event)->gadget;
|
||||||
|
}
|
||||||
|
|
||||||
int ui_dialog_do_gadgets(UI_DIALOG * dlg, d_event *event)
|
int ui_dialog_do_gadgets(UI_DIALOG * dlg, d_event *event)
|
||||||
{
|
{
|
||||||
int keypress = 0;
|
int keypress = 0;
|
||||||
UI_GADGET * tmp, * tmp1;
|
UI_GADGET * tmp, * tmp1;
|
||||||
int rval = 0;
|
int rval = 0;
|
||||||
|
|
||||||
CurWindow = dlg;
|
|
||||||
|
|
||||||
if (event->type == EVENT_KEY_COMMAND)
|
if (event->type == EVENT_KEY_COMMAND)
|
||||||
keypress = event_key_get(event);
|
keypress = event_key_get(event);
|
||||||
|
|
||||||
|
@ -274,46 +333,11 @@ int ui_dialog_do_gadgets(UI_DIALOG * dlg, d_event *event)
|
||||||
{
|
{
|
||||||
// If it is under another dialog, that dialog's handler would have returned 1 for mouse events.
|
// If it is under another dialog, that dialog's handler would have returned 1 for mouse events.
|
||||||
// Key events are handled in a priority depending on the window ordering.
|
// Key events are handled in a priority depending on the window ordering.
|
||||||
//if (!is_under_another_window( CurWindow, tmp ))
|
//if (!is_under_another_window( dlg, tmp ))
|
||||||
{
|
rval = ui_gadget_do(dlg, tmp, event);
|
||||||
UI_DIALOG *curwindow_save=CurWindow;
|
|
||||||
|
|
||||||
switch( tmp->kind )
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
rval = ui_button_do( (UI_GADGET_BUTTON *)tmp, event );
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
rval = ui_listbox_do( (UI_GADGET_LISTBOX *)tmp, event );
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
rval = ui_scrollbar_do( (UI_GADGET_SCROLLBAR *)tmp, event );
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
rval = ui_radio_do( (UI_GADGET_RADIO *)tmp, event );
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
rval = ui_checkbox_do( (UI_GADGET_CHECKBOX *)tmp, event );
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
rval = ui_inputbox_do( (UI_GADGET_INPUTBOX *)tmp, event );
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
rval = ui_userbox_do( (UI_GADGET_USERBOX *)tmp, event );
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
rval = ui_keytrap_do( (UI_GADGET_KEYTRAP *)tmp, event );
|
|
||||||
break;
|
|
||||||
case 9:
|
|
||||||
rval = ui_icon_do( (UI_GADGET_ICON *)tmp, event );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
CurWindow=curwindow_save;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
} while(/* !rval && */tmp != dlg->gadget ); // FIXME: Have to loop through all the controls, because of controls within controls
|
} while(/*!rval &&*/ tmp != dlg->gadget); // have to look for pesky scrollbars in case an arrow button or arrow key are held down
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,7 +117,7 @@ UI_GADGET_ICON * ui_add_gadget_icon( UI_DIALOG * dlg, char * text, short x, shor
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ui_icon_do( UI_GADGET_ICON * icon, d_event *event )
|
int ui_icon_do( UI_DIALOG *dlg, UI_GADGET_ICON * icon, d_event *event )
|
||||||
{
|
{
|
||||||
int rval = 0;
|
int rval = 0;
|
||||||
|
|
||||||
|
@ -173,6 +173,7 @@ int ui_icon_do( UI_GADGET_ICON * icon, d_event *event )
|
||||||
{
|
{
|
||||||
icon->status = 1;
|
icon->status = 1;
|
||||||
icon->flag = (sbyte)icon->user_function();
|
icon->flag = (sbyte)icon->user_function();
|
||||||
|
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, (UI_GADGET *)icon);
|
||||||
rval = 1;
|
rval = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,7 @@ void strndel(char *s, int p, int n)
|
||||||
*(s+p+n) = '\0'; // Delete and zero fill
|
*(s+p+n) = '\0'; // Delete and zero fill
|
||||||
}
|
}
|
||||||
|
|
||||||
void ui_draw_inputbox( UI_GADGET_INPUTBOX * inputbox )
|
void ui_draw_inputbox( UI_DIALOG *dlg, UI_GADGET_INPUTBOX * inputbox )
|
||||||
{
|
{
|
||||||
int w, h, aw;
|
int w, h, aw;
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ void ui_draw_inputbox( UI_GADGET_INPUTBOX * inputbox )
|
||||||
ui_mouse_hide();
|
ui_mouse_hide();
|
||||||
gr_set_current_canvas( inputbox->canvas );
|
gr_set_current_canvas( inputbox->canvas );
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)inputbox)
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *)inputbox)
|
||||||
{
|
{
|
||||||
if (inputbox->first_time)
|
if (inputbox->first_time)
|
||||||
gr_set_fontcolor( CBLACK, CRED );
|
gr_set_fontcolor( CBLACK, CRED );
|
||||||
|
@ -71,7 +71,7 @@ void ui_draw_inputbox( UI_GADGET_INPUTBOX * inputbox )
|
||||||
gr_setcolor( CBLACK );
|
gr_setcolor( CBLACK );
|
||||||
gr_rect( 2+w, 0, inputbox->width-1, inputbox->height-1 );
|
gr_rect( 2+w, 0, inputbox->width-1, inputbox->height-1 );
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)inputbox && !inputbox->first_time )
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *)inputbox && !inputbox->first_time )
|
||||||
{
|
{
|
||||||
gr_setcolor(CRED);
|
gr_setcolor(CRED);
|
||||||
Vline( 2,inputbox->height-3, 2+w+1 );
|
Vline( 2,inputbox->height-3, 2+w+1 );
|
||||||
|
@ -111,7 +111,7 @@ UI_GADGET_INPUTBOX * ui_add_gadget_inputbox( UI_DIALOG * dlg, short x, short y,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ui_inputbox_do( UI_GADGET_INPUTBOX * inputbox, d_event *event )
|
int ui_inputbox_do( UI_DIALOG *dlg, UI_GADGET_INPUTBOX * inputbox, d_event *event )
|
||||||
{
|
{
|
||||||
unsigned char ascii;
|
unsigned char ascii;
|
||||||
int keypress = 0;
|
int keypress = 0;
|
||||||
|
@ -123,7 +123,7 @@ int ui_inputbox_do( UI_GADGET_INPUTBOX * inputbox, d_event *event )
|
||||||
inputbox->oldposition = inputbox->position;
|
inputbox->oldposition = inputbox->position;
|
||||||
inputbox->pressed=0;
|
inputbox->pressed=0;
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget==(UI_GADGET *)inputbox)
|
if (dlg->keyboard_focus_gadget==(UI_GADGET *)inputbox)
|
||||||
{
|
{
|
||||||
switch( keypress )
|
switch( keypress )
|
||||||
{
|
{
|
||||||
|
@ -162,8 +162,14 @@ int ui_inputbox_do( UI_GADGET_INPUTBOX * inputbox, d_event *event )
|
||||||
} else {
|
} else {
|
||||||
inputbox->first_time = 1;
|
inputbox->first_time = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
ui_draw_inputbox( inputbox );
|
if (inputbox->pressed)
|
||||||
|
{
|
||||||
|
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, (UI_GADGET *)inputbox);
|
||||||
|
rval = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_draw_inputbox( dlg, inputbox );
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
27
ui/listbox.c
27
ui/listbox.c
|
@ -27,7 +27,7 @@ static char rcsid[] = "$Id: listbox.c,v 1.1.1.1 2006/03/17 19:52:20 zicodxx Exp
|
||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
|
||||||
void ui_draw_listbox( UI_GADGET_LISTBOX * listbox )
|
void ui_draw_listbox( UI_DIALOG *dlg, UI_GADGET_LISTBOX * listbox )
|
||||||
{
|
{
|
||||||
int i, x, y, stop;
|
int i, x, y, stop;
|
||||||
int w, h, aw;
|
int w, h, aw;
|
||||||
|
@ -57,14 +57,14 @@ void ui_draw_listbox( UI_GADGET_LISTBOX * listbox )
|
||||||
{
|
{
|
||||||
if (i !=listbox->current_item)
|
if (i !=listbox->current_item)
|
||||||
{
|
{
|
||||||
if ((listbox->current_item == -1) && (CurWindow->keyboard_focus_gadget == (UI_GADGET *)listbox) && (i == listbox->first_item) )
|
if ((listbox->current_item == -1) && (dlg->keyboard_focus_gadget == (UI_GADGET *)listbox) && (i == listbox->first_item) )
|
||||||
gr_set_fontcolor( CRED, CBLACK );
|
gr_set_fontcolor( CRED, CBLACK );
|
||||||
else
|
else
|
||||||
gr_set_fontcolor( CWHITE, CBLACK );
|
gr_set_fontcolor( CWHITE, CBLACK );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)listbox)
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *)listbox)
|
||||||
gr_set_fontcolor( CRED, CGREY );
|
gr_set_fontcolor( CRED, CGREY );
|
||||||
else
|
else
|
||||||
gr_set_fontcolor( CBLACK, CGREY );
|
gr_set_fontcolor( CBLACK, CGREY );
|
||||||
|
@ -150,7 +150,7 @@ UI_GADGET_LISTBOX * ui_add_gadget_listbox(UI_DIALOG *dlg, short x, short y, shor
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ui_listbox_do( UI_GADGET_LISTBOX * listbox, d_event *event )
|
int ui_listbox_do( UI_DIALOG *dlg, UI_GADGET_LISTBOX * listbox, d_event *event )
|
||||||
{
|
{
|
||||||
int mitem, oldfakepos, kf;
|
int mitem, oldfakepos, kf;
|
||||||
int keypress = 0;
|
int keypress = 0;
|
||||||
|
@ -168,11 +168,11 @@ int ui_listbox_do( UI_GADGET_LISTBOX * listbox, d_event *event )
|
||||||
listbox->first_item = 0;
|
listbox->first_item = 0;
|
||||||
listbox->old_current_item = listbox->current_item;
|
listbox->old_current_item = listbox->current_item;
|
||||||
listbox->old_first_item = listbox->first_item;
|
listbox->old_first_item = listbox->first_item;
|
||||||
ui_draw_listbox( listbox );
|
ui_draw_listbox( dlg, listbox );
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)listbox)
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *)listbox)
|
||||||
{
|
{
|
||||||
CurWindow->keyboard_focus_gadget = ui_gadget_get_next((UI_GADGET *)listbox);
|
dlg->keyboard_focus_gadget = ui_gadget_get_next((UI_GADGET *)listbox);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
|
@ -182,7 +182,8 @@ int ui_listbox_do( UI_GADGET_LISTBOX * listbox, d_event *event )
|
||||||
listbox->old_first_item = listbox->first_item;
|
listbox->old_first_item = listbox->first_item;
|
||||||
|
|
||||||
|
|
||||||
if (listbox->scrollbar->moved )
|
if ((event->type == EVENT_UI_GADGET_PRESSED) &&
|
||||||
|
(ui_event_get_gadget(event) == (UI_GADGET *)listbox->scrollbar))
|
||||||
{
|
{
|
||||||
listbox->moved = 1;
|
listbox->moved = 1;
|
||||||
|
|
||||||
|
@ -205,7 +206,7 @@ int ui_listbox_do( UI_GADGET_LISTBOX * listbox, d_event *event )
|
||||||
rval = 1;
|
rval = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( CurWindow->keyboard_focus_gadget==(UI_GADGET *)listbox )
|
if ( dlg->keyboard_focus_gadget==(UI_GADGET *)listbox )
|
||||||
{
|
{
|
||||||
if (keypress==KEY_ENTER) {
|
if (keypress==KEY_ENTER) {
|
||||||
listbox->selected_item = listbox->current_item;
|
listbox->selected_item = listbox->current_item;
|
||||||
|
@ -364,8 +365,14 @@ int ui_listbox_do( UI_GADGET_LISTBOX * listbox, d_event *event )
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (listbox->moved || (listbox->selected_item > 0))
|
||||||
|
{
|
||||||
|
ui_gadget_send_event(dlg, (listbox->selected_item > 0) ? EVENT_UI_LISTBOX_SELECTED : EVENT_UI_LISTBOX_MOVED, (UI_GADGET *)listbox);
|
||||||
|
rval = 1;
|
||||||
|
}
|
||||||
|
|
||||||
ui_draw_listbox( listbox );
|
ui_draw_listbox( dlg, listbox );
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
20
ui/radio.c
20
ui/radio.c
|
@ -30,7 +30,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
|
|
||||||
#define Middle(x) ((2*(x)+1)/4)
|
#define Middle(x) ((2*(x)+1)/4)
|
||||||
|
|
||||||
void ui_draw_radio( UI_GADGET_RADIO * radio )
|
void ui_draw_radio( UI_DIALOG *dlg, UI_GADGET_RADIO * radio )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ((radio->status==1) || (radio->position != radio->oldposition))
|
if ((radio->status==1) || (radio->position != radio->oldposition))
|
||||||
|
@ -40,7 +40,7 @@ void ui_draw_radio( UI_GADGET_RADIO * radio )
|
||||||
ui_mouse_hide();
|
ui_mouse_hide();
|
||||||
gr_set_current_canvas( radio->canvas );
|
gr_set_current_canvas( radio->canvas );
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *) radio)
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *) radio)
|
||||||
gr_set_fontcolor(CRED, -1);
|
gr_set_fontcolor(CRED, -1);
|
||||||
else
|
else
|
||||||
gr_set_fontcolor(CBLACK, -1);
|
gr_set_fontcolor(CBLACK, -1);
|
||||||
|
@ -87,7 +87,7 @@ UI_GADGET_RADIO * ui_add_gadget_radio( UI_DIALOG * dlg, short x, short y, short
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ui_radio_do( UI_GADGET_RADIO * radio, d_event *event )
|
int ui_radio_do( UI_DIALOG *dlg, UI_GADGET_RADIO * radio, d_event *event )
|
||||||
{
|
{
|
||||||
UI_GADGET * tmp;
|
UI_GADGET * tmp;
|
||||||
UI_GADGET_RADIO * tmpr;
|
UI_GADGET_RADIO * tmpr;
|
||||||
|
@ -123,7 +123,7 @@ int ui_radio_do( UI_GADGET_RADIO * radio, d_event *event )
|
||||||
|
|
||||||
key = event_key_get(event);
|
key = event_key_get(event);
|
||||||
|
|
||||||
if ((CurWindow->keyboard_focus_gadget==(UI_GADGET *)radio) && ((key==KEY_SPACEBAR) || (key==KEY_ENTER)) )
|
if ((dlg->keyboard_focus_gadget==(UI_GADGET *)radio) && ((key==KEY_SPACEBAR) || (key==KEY_ENTER)) )
|
||||||
{
|
{
|
||||||
radio->position = 2;
|
radio->position = 2;
|
||||||
rval = 1;
|
rval = 1;
|
||||||
|
@ -137,7 +137,7 @@ int ui_radio_do( UI_GADGET_RADIO * radio, d_event *event )
|
||||||
|
|
||||||
radio->position = 0;
|
radio->position = 0;
|
||||||
|
|
||||||
if ((CurWindow->keyboard_focus_gadget==(UI_GADGET *)radio) && ((key==KEY_SPACEBAR) || (key==KEY_ENTER)) )
|
if ((dlg->keyboard_focus_gadget==(UI_GADGET *)radio) && ((key==KEY_SPACEBAR) || (key==KEY_ENTER)) )
|
||||||
radio->pressed = 1;
|
radio->pressed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,10 +161,14 @@ int ui_radio_do( UI_GADGET_RADIO * radio, d_event *event )
|
||||||
}
|
}
|
||||||
radio->flag = 1;
|
radio->flag = 1;
|
||||||
}
|
}
|
||||||
else if (radio->pressed)
|
|
||||||
rval = 1;
|
|
||||||
|
|
||||||
ui_draw_radio( radio );
|
if (radio->pressed)
|
||||||
|
{
|
||||||
|
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, (UI_GADGET *)radio);
|
||||||
|
rval = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ui_draw_radio( dlg, radio );
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
17
ui/scroll.c
17
ui/scroll.c
|
@ -27,7 +27,7 @@ static char rcsid[] = "$Id: scroll.c,v 1.1.1.1 2006/03/17 19:52:16 zicodxx Exp $
|
||||||
#include "key.h"
|
#include "key.h"
|
||||||
#include "timer.h"
|
#include "timer.h"
|
||||||
|
|
||||||
void ui_draw_scrollbar( UI_GADGET_SCROLLBAR * scrollbar )
|
void ui_draw_scrollbar( UI_DIALOG *dlg, UI_GADGET_SCROLLBAR * scrollbar )
|
||||||
{
|
{
|
||||||
if (scrollbar->status==0)
|
if (scrollbar->status==0)
|
||||||
return;
|
return;
|
||||||
|
@ -36,7 +36,7 @@ void ui_draw_scrollbar( UI_GADGET_SCROLLBAR * scrollbar )
|
||||||
ui_mouse_hide();
|
ui_mouse_hide();
|
||||||
gr_set_current_canvas( scrollbar->canvas );
|
gr_set_current_canvas( scrollbar->canvas );
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)scrollbar)
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *)scrollbar)
|
||||||
gr_setcolor( CRED );
|
gr_setcolor( CRED );
|
||||||
else
|
else
|
||||||
gr_setcolor( CGREY );
|
gr_setcolor( CGREY );
|
||||||
|
@ -96,7 +96,7 @@ UI_GADGET_SCROLLBAR * ui_add_gadget_scrollbar( UI_DIALOG * dlg, short x, short y
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ui_scrollbar_do( UI_GADGET_SCROLLBAR * scrollbar, d_event *event )
|
int ui_scrollbar_do( UI_DIALOG *dlg, UI_GADGET_SCROLLBAR * scrollbar, d_event *event )
|
||||||
{
|
{
|
||||||
int OnMe, OnSlider, keyfocus;
|
int OnMe, OnSlider, keyfocus;
|
||||||
int oldpos, op;
|
int oldpos, op;
|
||||||
|
@ -105,14 +105,14 @@ int ui_scrollbar_do( UI_GADGET_SCROLLBAR * scrollbar, d_event *event )
|
||||||
|
|
||||||
keyfocus = 0;
|
keyfocus = 0;
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget==(UI_GADGET *)scrollbar)
|
if (dlg->keyboard_focus_gadget==(UI_GADGET *)scrollbar)
|
||||||
keyfocus = 1;
|
keyfocus = 1;
|
||||||
|
|
||||||
if (scrollbar->start==scrollbar->stop)
|
if (scrollbar->start==scrollbar->stop)
|
||||||
{
|
{
|
||||||
scrollbar->position = 0;
|
scrollbar->position = 0;
|
||||||
scrollbar->fake_position = 0;
|
scrollbar->fake_position = 0;
|
||||||
ui_draw_scrollbar( scrollbar );
|
ui_draw_scrollbar( dlg, scrollbar );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,10 +276,15 @@ int ui_scrollbar_do( UI_GADGET_SCROLLBAR * scrollbar, d_event *event )
|
||||||
|
|
||||||
if (op != scrollbar->position )
|
if (op != scrollbar->position )
|
||||||
scrollbar->moved = 1;
|
scrollbar->moved = 1;
|
||||||
|
if (scrollbar->moved)
|
||||||
|
{
|
||||||
|
ui_gadget_send_event(dlg, EVENT_UI_GADGET_PRESSED, (UI_GADGET *)scrollbar);
|
||||||
|
rval = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (oldpos != scrollbar->fake_position)
|
if (oldpos != scrollbar->fake_position)
|
||||||
scrollbar->status = 1;
|
scrollbar->status = 1;
|
||||||
ui_draw_scrollbar( scrollbar );
|
ui_draw_scrollbar( dlg, scrollbar );
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
2
ui/ui.c
2
ui/ui.c
|
@ -58,8 +58,6 @@ void ui_init()
|
||||||
|
|
||||||
gr_set_fontcolor( CBLACK, CWHITE );
|
gr_set_fontcolor( CBLACK, CWHITE );
|
||||||
|
|
||||||
CurWindow = NULL;
|
|
||||||
|
|
||||||
ui_pad_init();
|
ui_pad_init();
|
||||||
|
|
||||||
atexit(ui_close );
|
atexit(ui_close );
|
||||||
|
|
27
ui/userbox.c
27
ui/userbox.c
|
@ -27,7 +27,7 @@ static char rcsid[] = "$Id: userbox.c,v 1.1.1.1 2006/03/17 19:52:22 zicodxx Exp
|
||||||
#include "mouse.h"
|
#include "mouse.h"
|
||||||
#include "key.h"
|
#include "key.h"
|
||||||
|
|
||||||
void ui_draw_userbox( UI_GADGET_USERBOX * userbox )
|
void ui_draw_userbox( UI_DIALOG *dlg, UI_GADGET_USERBOX * userbox )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( userbox->status==1 )
|
if ( userbox->status==1 )
|
||||||
|
@ -37,7 +37,7 @@ void ui_draw_userbox( UI_GADGET_USERBOX * userbox )
|
||||||
ui_mouse_hide();
|
ui_mouse_hide();
|
||||||
gr_set_current_canvas( userbox->canvas );
|
gr_set_current_canvas( userbox->canvas );
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget == (UI_GADGET *)userbox)
|
if (dlg->keyboard_focus_gadget == (UI_GADGET *)userbox)
|
||||||
gr_setcolor( CRED );
|
gr_setcolor( CRED );
|
||||||
else
|
else
|
||||||
gr_setcolor( CBRIGHT );
|
gr_setcolor( CBRIGHT );
|
||||||
|
@ -76,7 +76,7 @@ UI_GADGET_USERBOX * ui_add_gadget_userbox( UI_DIALOG * dlg, short x, short y, sh
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ui_userbox_do( UI_GADGET_USERBOX * userbox, d_event *event )
|
int ui_userbox_do( UI_DIALOG *dlg, UI_GADGET_USERBOX * userbox, d_event *event )
|
||||||
{
|
{
|
||||||
int OnMe, olddrag;
|
int OnMe, olddrag;
|
||||||
int x, y, z;
|
int x, y, z;
|
||||||
|
@ -101,22 +101,23 @@ int ui_userbox_do( UI_GADGET_USERBOX * userbox, d_event *event )
|
||||||
{
|
{
|
||||||
if ( B1_JUST_PRESSED )
|
if ( B1_JUST_PRESSED )
|
||||||
{
|
{
|
||||||
userbox->b1_dragging = 1;
|
userbox->b1_held_down = 1;
|
||||||
userbox->b1_drag_x1 = x - userbox->x1;
|
userbox->b1_drag_x1 = x - userbox->x1;
|
||||||
userbox->b1_drag_y1 = y - userbox->y1;
|
userbox->b1_drag_y1 = y - userbox->y1;
|
||||||
userbox->b1_clicked = 1;
|
|
||||||
rval = 1;
|
rval = 1;
|
||||||
}
|
}
|
||||||
else if (B1_JUST_RELEASED)
|
else if (B1_JUST_RELEASED)
|
||||||
{
|
{
|
||||||
userbox->b1_held_down = 0;
|
|
||||||
userbox->b1_dragging = 0;
|
userbox->b1_dragging = 0;
|
||||||
|
if (userbox->b1_held_down)
|
||||||
|
userbox->b1_clicked = 1;
|
||||||
|
userbox->b1_held_down = 0;
|
||||||
rval = 1;
|
rval = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( userbox->b1_dragging )
|
if ( (event->type == EVENT_MOUSE_MOVED) && userbox->b1_held_down )
|
||||||
{
|
{
|
||||||
userbox->b1_held_down = 1;
|
userbox->b1_dragging = 1;
|
||||||
userbox->b1_drag_x2 = x - userbox->x1;
|
userbox->b1_drag_x2 = x - userbox->x1;
|
||||||
userbox->b1_drag_y2 = y - userbox->y1;
|
userbox->b1_drag_y2 = y - userbox->y1;
|
||||||
}
|
}
|
||||||
|
@ -142,13 +143,19 @@ int ui_userbox_do( UI_GADGET_USERBOX * userbox, d_event *event )
|
||||||
userbox->b1_done_dragging = 1;
|
userbox->b1_done_dragging = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CurWindow->keyboard_focus_gadget==(UI_GADGET *)userbox)
|
if (dlg->keyboard_focus_gadget==(UI_GADGET *)userbox)
|
||||||
{
|
{
|
||||||
userbox->keypress = keypress;
|
userbox->keypress = keypress;
|
||||||
rval = 1;
|
rval = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (userbox->b1_clicked || userbox->b1_dragging)
|
||||||
|
{
|
||||||
|
ui_gadget_send_event(dlg, userbox->b1_clicked ? EVENT_UI_GADGET_PRESSED : EVENT_UI_USERBOX_DRAGGED, (UI_GADGET *)userbox);
|
||||||
|
rval = 1;
|
||||||
|
}
|
||||||
|
|
||||||
ui_draw_userbox( userbox );
|
ui_draw_userbox( dlg, userbox );
|
||||||
|
|
||||||
return rval;
|
return rval;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue