1 /* -------------- combobox.c -------------- */
5 int ListProc(DFWINDOW
, DFMESSAGE
, DF_PARAM
, DF_PARAM
);
7 int DfComboProc(DFWINDOW wnd
, DFMESSAGE msg
, DF_PARAM p1
, DF_PARAM p2
)
10 case DFM_CREATE_WINDOW
:
11 wnd
->extension
= DfDfCreateWindow(
14 wnd
->rc
.lf
,wnd
->rc
.tp
+1,
19 DF_HASBORDER
| DF_NOCLIP
| DF_SAVESELF
);
20 ((DFWINDOW
)(wnd
->extension
))->ct
->command
=
23 wnd
->rc
.bt
= wnd
->rc
.tp
;
26 DfForeground
= DfWndBackground(wnd
);
27 DfBackground
= DfWndForeground(wnd
);
28 DfWPutch(wnd
, DF_DOWNSCROLLBOX
, DfWindowWidth(wnd
), 0);
31 if ((int)p1
== DF_DN
) {
32 DfSendMessage(wnd
->extension
, DFM_SETFOCUS
, TRUE
, 0);
37 if ((int)p1
== DfGetRight(wnd
) + 1)
38 DfSendMessage(wnd
->extension
, DFM_SETFOCUS
, TRUE
, 0);
40 case DFM_CLOSE_WINDOW
:
41 DfSendMessage(wnd
->extension
, DFM_CLOSE_WINDOW
, 0, 0);
46 return DfBaseWndProc(DF_COMBOBOX
, wnd
, msg
, p1
, p2
);
49 int ListProc(DFWINDOW wnd
, DFMESSAGE msg
, DF_PARAM p1
, DF_PARAM p2
)
51 DFWINDOW pwnd
= DfGetParent(DfGetParent(wnd
));
52 DF_DBOX
*db
= pwnd
->extension
;
60 case DFM_CREATE_WINDOW
:
61 wnd
->ct
= DfMalloc(sizeof(DF_CTLWINDOW
));
62 wnd
->ct
->setting
= DF_OFF
;
63 wnd
->WindowColors
[DF_FRAME_COLOR
][DF_FG
] =
64 wnd
->WindowColors
[DF_STD_COLOR
][DF_FG
];
65 wnd
->WindowColors
[DF_FRAME_COLOR
][DF_BG
] =
66 wnd
->WindowColors
[DF_STD_COLOR
][DF_BG
];
67 rtn
= DfDefaultWndProc(wnd
, msg
, p1
, p2
);
75 DfSendMessage(wnd
, DFM_HIDE_WINDOW
, 0, 0);
76 wnd
->ct
->setting
= DF_OFF
;
80 wnd
->ct
->setting
= DF_ON
;
84 if (wnd
->ct
->setting
== DF_OFF
)
89 currFocus
= DfInFocus
;
91 rtn
= DfDefaultWndProc(wnd
, msg
, p1
, p2
);
92 DfInFocus
= currFocus
;
95 case DFM_LB_SELECTION
:
96 rtn
= DfDefaultWndProc(wnd
, msg
, p1
, p2
);
97 DfSendMessage(wnd
, DFM_LB_GETTEXT
,
98 (DF_PARAM
) text
, wnd
->selection
);
99 DfPutItemText(pwnd
, wnd
->ct
->command
, text
);
100 cwnd
= DfControlWindow(db
, wnd
->ct
->command
);
101 DfSendMessage(cwnd
, DFM_PAINT
, 0, 0);
102 cwnd
->TextChanged
= TRUE
;
111 cwnd
= DfControlWindow(db
, wnd
->ct
->command
);
112 DfSendMessage(cwnd
, DFM_SETFOCUS
, TRUE
, 0);
121 cwnd
= DfControlWindow(db
, wnd
->ct
->command
);
122 DfSendMessage(cwnd
, DFM_SETFOCUS
, TRUE
, 0);
125 case DFM_CLOSE_WINDOW
:
135 return DfDefaultWndProc(wnd
, msg
, p1
, p2
);
138 void DfPutComboListText(DFWINDOW wnd
, enum DfCommands cmd
, char *text
)
140 DF_CTLWINDOW
*ct
= DfFindCommand(wnd
->extension
, cmd
, DF_COMBOBOX
);
144 DFWINDOW lwnd
= ((DFWINDOW
)(ct
->wnd
))->extension
;
145 DfSendMessage(lwnd
, DFM_ADDTEXT
, (DF_PARAM
) text
, 0);