1 /* -------------- combobox.c -------------- */
5 int ListProc(DFWINDOW
, DFMESSAGE
, PARAM
, PARAM
);
7 int ComboProc(DFWINDOW wnd
, DFMESSAGE msg
, PARAM p1
, PARAM p2
)
11 wnd
->extension
= DfCreateWindow(
14 wnd
->rc
.lf
,wnd
->rc
.tp
+1,
19 HASBORDER
| NOCLIP
| SAVESELF
);
20 ((DFWINDOW
)(wnd
->extension
))->ct
->command
=
23 wnd
->rc
.bt
= wnd
->rc
.tp
;
26 foreground
= WndBackground(wnd
);
27 background
= WndForeground(wnd
);
28 wputch(wnd
, DOWNSCROLLBOX
, WindowWidth(wnd
), 0);
32 DfSendMessage(wnd
->extension
, SETFOCUS
, TRUE
, 0);
37 if ((int)p1
== GetRight(wnd
) + 1)
38 DfSendMessage(wnd
->extension
, SETFOCUS
, TRUE
, 0);
41 DfSendMessage(wnd
->extension
, CLOSE_WINDOW
, 0, 0);
46 return BaseWndProc(COMBOBOX
, wnd
, msg
, p1
, p2
);
49 int ListProc(DFWINDOW wnd
, DFMESSAGE msg
, PARAM p1
, PARAM p2
)
51 DFWINDOW pwnd
= GetParent(GetParent(wnd
));
52 DBOX
*db
= pwnd
->extension
;
61 wnd
->ct
= DFmalloc(sizeof(CTLWINDOW
));
62 wnd
->ct
->setting
= OFF
;
63 wnd
->WindowColors
[FRAME_COLOR
][FG
] =
64 wnd
->WindowColors
[STD_COLOR
][FG
];
65 wnd
->WindowColors
[FRAME_COLOR
][BG
] =
66 wnd
->WindowColors
[STD_COLOR
][BG
];
67 rtn
= DefaultWndProc(wnd
, msg
, p1
, p2
);
75 DfSendMessage(wnd
, DFM_HIDE_WINDOW
, 0, 0);
76 wnd
->ct
->setting
= OFF
;
80 wnd
->ct
->setting
= ON
;
84 if (wnd
->ct
->setting
== OFF
)
91 rtn
= DefaultWndProc(wnd
, msg
, p1
, p2
);
96 rtn
= DefaultWndProc(wnd
, msg
, p1
, p2
);
97 DfSendMessage(wnd
, DFM_LB_GETTEXT
,
98 (PARAM
) text
, wnd
->selection
);
99 PutItemText(pwnd
, wnd
->ct
->command
, text
);
100 cwnd
= ControlWindow(db
, wnd
->ct
->command
);
101 DfSendMessage(cwnd
, PAINT
, 0, 0);
102 cwnd
->TextChanged
= TRUE
;
111 cwnd
= ControlWindow(db
, wnd
->ct
->command
);
112 DfSendMessage(cwnd
, SETFOCUS
, TRUE
, 0);
121 cwnd
= ControlWindow(db
, wnd
->ct
->command
);
122 DfSendMessage(cwnd
, SETFOCUS
, TRUE
, 0);
135 return DefaultWndProc(wnd
, msg
, p1
, p2
);
138 void PutComboListText(DFWINDOW wnd
, enum commands cmd
, char *text
)
140 CTLWINDOW
*ct
= FindCommand(wnd
->extension
, cmd
, COMBOBOX
);
144 DFWINDOW lwnd
= ((DFWINDOW
)(ct
->wnd
))->extension
;
145 DfSendMessage(lwnd
, ADDTEXT
, (PARAM
) text
, 0);