xref: /haiku/src/kits/interface/TextControl.cpp (revision 52a380120846174213ccce9c4aab0dda17c72083)
1*52a38012Sejakowatz //------------------------------------------------------------------------------
2*52a38012Sejakowatz //	Copyright (c) 2001-2002, OpenBeOS
3*52a38012Sejakowatz //
4*52a38012Sejakowatz //	Permission is hereby granted, free of charge, to any person obtaining a
5*52a38012Sejakowatz //	copy of this software and associated documentation files (the "Software"),
6*52a38012Sejakowatz //	to deal in the Software without restriction, including without limitation
7*52a38012Sejakowatz //	the rights to use, copy, modify, merge, publish, distribute, sublicense,
8*52a38012Sejakowatz //	and/or sell copies of the Software, and to permit persons to whom the
9*52a38012Sejakowatz //	Software is furnished to do so, subject to the following conditions:
10*52a38012Sejakowatz //
11*52a38012Sejakowatz //	The above copyright notice and this permission notice shall be included in
12*52a38012Sejakowatz //	all copies or substantial portions of the Software.
13*52a38012Sejakowatz //
14*52a38012Sejakowatz //	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*52a38012Sejakowatz //	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*52a38012Sejakowatz //	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17*52a38012Sejakowatz //	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18*52a38012Sejakowatz //	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19*52a38012Sejakowatz //	FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20*52a38012Sejakowatz //	DEALINGS IN THE SOFTWARE.
21*52a38012Sejakowatz //
22*52a38012Sejakowatz //	File Name:		TextControl.cpp
23*52a38012Sejakowatz //	Author:			Frans van Nispen (xlr8@tref.nl)
24*52a38012Sejakowatz //	Description:	BTextControl displays text that can act like a control.
25*52a38012Sejakowatz //------------------------------------------------------------------------------
26*52a38012Sejakowatz 
27*52a38012Sejakowatz // Standard Includes -----------------------------------------------------------
28*52a38012Sejakowatz #include <stdio.h>
29*52a38012Sejakowatz 
30*52a38012Sejakowatz // System Includes -------------------------------------------------------------
31*52a38012Sejakowatz #include <TextControl.h>
32*52a38012Sejakowatz #include <Window.h>
33*52a38012Sejakowatz #include <Message.h>
34*52a38012Sejakowatz 
35*52a38012Sejakowatz // Project Includes ------------------------------------------------------------
36*52a38012Sejakowatz 
37*52a38012Sejakowatz // Local Includes --------------------------------------------------------------
38*52a38012Sejakowatz #include "TextInput.h"
39*52a38012Sejakowatz 
40*52a38012Sejakowatz // Local Defines ---------------------------------------------------------------
41*52a38012Sejakowatz 
42*52a38012Sejakowatz // Globals ---------------------------------------------------------------------
43*52a38012Sejakowatz 
44*52a38012Sejakowatz //------------------------------------------------------------------------------
45*52a38012Sejakowatz BTextControl::BTextControl(BRect frame, const char* name, const char* label,
46*52a38012Sejakowatz 						   const char* text, BMessage* message, uint32 mask,
47*52a38012Sejakowatz 						   uint32 flags)
48*52a38012Sejakowatz 	:	BControl(frame, name, label, message, mask, flags)
49*52a38012Sejakowatz {
50*52a38012Sejakowatz 	if (label)
51*52a38012Sejakowatz 	{
52*52a38012Sejakowatz 		fDivider = frame.Width() / 2.0f;
53*52a38012Sejakowatz 	}
54*52a38012Sejakowatz 	else
55*52a38012Sejakowatz 	{
56*52a38012Sejakowatz 		// no label
57*52a38012Sejakowatz 		fDivider = 0.0f;
58*52a38012Sejakowatz 	}
59*52a38012Sejakowatz 
60*52a38012Sejakowatz 	fModificationMessage = NULL;
61*52a38012Sejakowatz 
62*52a38012Sejakowatz 	frame = Bounds();
63*52a38012Sejakowatz 	if (fDivider)
64*52a38012Sejakowatz 	{
65*52a38012Sejakowatz 		frame.left = fDivider + 5.0f;
66*52a38012Sejakowatz 	}
67*52a38012Sejakowatz 
68*52a38012Sejakowatz 	BRect rect(frame);
69*52a38012Sejakowatz 	rect.OffsetTo(0,0);
70*52a38012Sejakowatz 
71*52a38012Sejakowatz 	frame.OffsetBy(-2,1);
72*52a38012Sejakowatz 
73*52a38012Sejakowatz 	rect.InsetBy(2,2);
74*52a38012Sejakowatz 	fText = new _BTextInput_(this, frame, "text", rect);
75*52a38012Sejakowatz 	fText->SetText(text);
76*52a38012Sejakowatz 	AddChild(fText);
77*52a38012Sejakowatz }
78*52a38012Sejakowatz //------------------------------------------------------------------------------
79*52a38012Sejakowatz BTextControl::~BTextControl()
80*52a38012Sejakowatz {
81*52a38012Sejakowatz 	if (fText)
82*52a38012Sejakowatz 	{
83*52a38012Sejakowatz 		fText->RemoveSelf();
84*52a38012Sejakowatz 		delete fText;
85*52a38012Sejakowatz 	}
86*52a38012Sejakowatz }
87*52a38012Sejakowatz //------------------------------------------------------------------------------
88*52a38012Sejakowatz BTextControl::BTextControl(BMessage* data)
89*52a38012Sejakowatz 	:	BControl(data)
90*52a38012Sejakowatz {
91*52a38012Sejakowatz 	if (data->FindInt32("_a_label", (int32*)&fLabelAlign) != B_OK)
92*52a38012Sejakowatz 	{
93*52a38012Sejakowatz 		fLabelAlign = B_ALIGN_LEFT;
94*52a38012Sejakowatz 	}
95*52a38012Sejakowatz 
96*52a38012Sejakowatz 	alignment textAlign;
97*52a38012Sejakowatz 	if (data->FindInt32("_a_text", (int32*)&textAlign) != B_OK)
98*52a38012Sejakowatz 	{
99*52a38012Sejakowatz 		fText->SetAlignment(B_ALIGN_LEFT);
100*52a38012Sejakowatz 	}
101*52a38012Sejakowatz 	else
102*52a38012Sejakowatz 	{
103*52a38012Sejakowatz 		fText->SetAlignment(textAlign);
104*52a38012Sejakowatz 	}
105*52a38012Sejakowatz 
106*52a38012Sejakowatz 	if (data->FindFloat("_divide", &fDivider) != B_OK)
107*52a38012Sejakowatz 	{
108*52a38012Sejakowatz 		if (Label())
109*52a38012Sejakowatz 			fDivider = Frame().Width()/2.0f;
110*52a38012Sejakowatz 		else
111*52a38012Sejakowatz 			fDivider = 0.0f;
112*52a38012Sejakowatz 	}
113*52a38012Sejakowatz 
114*52a38012Sejakowatz 	if (data->FindMessage("_mod_msg", fModificationMessage) != B_OK)
115*52a38012Sejakowatz 	{
116*52a38012Sejakowatz 		fModificationMessage = NULL;	// Is this really necessary?
117*52a38012Sejakowatz 	}
118*52a38012Sejakowatz 
119*52a38012Sejakowatz 	// TODO: Recover additional info as per final implementation of Archive()
120*52a38012Sejakowatz }
121*52a38012Sejakowatz //------------------------------------------------------------------------------
122*52a38012Sejakowatz BArchivable* BTextControl::Instantiate(BMessage* data)
123*52a38012Sejakowatz {
124*52a38012Sejakowatz 	if (!validate_instantiation(data,"BTextControl"))
125*52a38012Sejakowatz 	{
126*52a38012Sejakowatz 		return NULL;
127*52a38012Sejakowatz 	}
128*52a38012Sejakowatz 
129*52a38012Sejakowatz 	return new BTextControl(data);
130*52a38012Sejakowatz }
131*52a38012Sejakowatz //------------------------------------------------------------------------------
132*52a38012Sejakowatz status_t BTextControl::Archive(BMessage* data, bool deep = true) const
133*52a38012Sejakowatz {
134*52a38012Sejakowatz 	// TODO: compare against original version and finish
135*52a38012Sejakowatz 	status_t err = BView::Archive(data, deep);
136*52a38012Sejakowatz 
137*52a38012Sejakowatz 	if (!err)
138*52a38012Sejakowatz 		err = data->AddInt32("_a_label", fLabelAlign);
139*52a38012Sejakowatz 	if (!err)
140*52a38012Sejakowatz 		err = data->AddInt32("_a_text", fText->Alignment());
141*52a38012Sejakowatz 	if (!err)
142*52a38012Sejakowatz 		err = data->AddFloat("_divide", fDivider);
143*52a38012Sejakowatz 	if (!err && fModificationMessage)
144*52a38012Sejakowatz 		err = data->AddMessage("_mod_msg", fModificationMessage);
145*52a38012Sejakowatz 
146*52a38012Sejakowatz 	return err;
147*52a38012Sejakowatz }
148*52a38012Sejakowatz //------------------------------------------------------------------------------
149*52a38012Sejakowatz void BTextControl::SetText(const char* text)
150*52a38012Sejakowatz {
151*52a38012Sejakowatz 	fText->SetText(text);
152*52a38012Sejakowatz }
153*52a38012Sejakowatz //------------------------------------------------------------------------------
154*52a38012Sejakowatz const char* BTextControl::Text() const
155*52a38012Sejakowatz {
156*52a38012Sejakowatz 	return fText->Text();
157*52a38012Sejakowatz }
158*52a38012Sejakowatz //------------------------------------------------------------------------------
159*52a38012Sejakowatz void BTextControl::SetValue(int32 value)
160*52a38012Sejakowatz {
161*52a38012Sejakowatz }
162*52a38012Sejakowatz //------------------------------------------------------------------------------
163*52a38012Sejakowatz status_t BTextControl::Invoke(BMessage* msg = NULL)
164*52a38012Sejakowatz {
165*52a38012Sejakowatz 	return BControl::Invoke(msg);
166*52a38012Sejakowatz }
167*52a38012Sejakowatz //------------------------------------------------------------------------------
168*52a38012Sejakowatz BTextView* BTextControl::TextView() const
169*52a38012Sejakowatz {
170*52a38012Sejakowatz 	return (BTextView*)fText;
171*52a38012Sejakowatz }
172*52a38012Sejakowatz //------------------------------------------------------------------------------
173*52a38012Sejakowatz void BTextControl::SetModificationMessage(BMessage* message)
174*52a38012Sejakowatz {
175*52a38012Sejakowatz 	fModificationMessage = message;
176*52a38012Sejakowatz }
177*52a38012Sejakowatz //------------------------------------------------------------------------------
178*52a38012Sejakowatz BMessage* BTextControl::ModificationMessage() const
179*52a38012Sejakowatz {
180*52a38012Sejakowatz 	return fModificationMessage;
181*52a38012Sejakowatz }
182*52a38012Sejakowatz //------------------------------------------------------------------------------
183*52a38012Sejakowatz void BTextControl::SetAlignment(alignment label, alignment text)
184*52a38012Sejakowatz {
185*52a38012Sejakowatz 	fLabelAlign = label;
186*52a38012Sejakowatz 	fText->SetAlignment(text);
187*52a38012Sejakowatz }
188*52a38012Sejakowatz //------------------------------------------------------------------------------
189*52a38012Sejakowatz void BTextControl::GetAlignment(alignment* label, alignment* text) const
190*52a38012Sejakowatz {
191*52a38012Sejakowatz 	*label = fLabelAlign;
192*52a38012Sejakowatz 	*text = fText->Alignment();
193*52a38012Sejakowatz }
194*52a38012Sejakowatz //------------------------------------------------------------------------------
195*52a38012Sejakowatz void BTextControl::SetDivider(float dividing_line)
196*52a38012Sejakowatz {
197*52a38012Sejakowatz 	fDivider = dividing_line;
198*52a38012Sejakowatz // here I need some code to resize and invalidate the textView
199*52a38012Sejakowatz 
200*52a38012Sejakowatz 	BRect frame = fText->Frame();
201*52a38012Sejakowatz 	if (fDivider)
202*52a38012Sejakowatz 	{
203*52a38012Sejakowatz 		frame.left = fDivider + 5.0f;
204*52a38012Sejakowatz 	}
205*52a38012Sejakowatz 	else
206*52a38012Sejakowatz 	{
207*52a38012Sejakowatz 		frame.left = 0.0f;
208*52a38012Sejakowatz 	}
209*52a38012Sejakowatz 
210*52a38012Sejakowatz 	if (!frame.IsValid())
211*52a38012Sejakowatz 	{
212*52a38012Sejakowatz 		frame.left = frame.right - 6.0f;
213*52a38012Sejakowatz 	}
214*52a38012Sejakowatz 
215*52a38012Sejakowatz 	fText->ResizeTo( frame.Width(), frame.Height());
216*52a38012Sejakowatz //	fText->FrameResized( frame.Width(), frame.Height());
217*52a38012Sejakowatz 	fText->MoveTo( frame.left, frame.top);
218*52a38012Sejakowatz 	fText->Invalidate();
219*52a38012Sejakowatz 
220*52a38012Sejakowatz 	Invalidate();
221*52a38012Sejakowatz }
222*52a38012Sejakowatz //------------------------------------------------------------------------------
223*52a38012Sejakowatz float BTextControl::Divider() const
224*52a38012Sejakowatz {
225*52a38012Sejakowatz 	return fDivider;
226*52a38012Sejakowatz }
227*52a38012Sejakowatz //------------------------------------------------------------------------------
228*52a38012Sejakowatz void BTextControl::Draw(BRect rect)
229*52a38012Sejakowatz {
230*52a38012Sejakowatz 	SetLowColor(ViewColor());
231*52a38012Sejakowatz 	BFont font;
232*52a38012Sejakowatz 	GetFont(&font);
233*52a38012Sejakowatz 	font_height fh;
234*52a38012Sejakowatz 	font.GetHeight(&fh);
235*52a38012Sejakowatz 
236*52a38012Sejakowatz 	if (Label())
237*52a38012Sejakowatz 	{
238*52a38012Sejakowatz 		float y = ceil(fh.ascent + fh.descent + fh.leading) + 2.0f;
239*52a38012Sejakowatz 		float x;
240*52a38012Sejakowatz 		switch (fLabelAlign)
241*52a38012Sejakowatz 		{
242*52a38012Sejakowatz 			case B_ALIGN_RIGHT:
243*52a38012Sejakowatz 				x = fDivider - font.StringWidth(Label()) - 3.0f;
244*52a38012Sejakowatz 				break;
245*52a38012Sejakowatz 
246*52a38012Sejakowatz 			case B_ALIGN_CENTER:
247*52a38012Sejakowatz 				x = fDivider - font.StringWidth(Label())/2.0f;
248*52a38012Sejakowatz 				break;
249*52a38012Sejakowatz 
250*52a38012Sejakowatz 			default:
251*52a38012Sejakowatz 				x = 3.0f;
252*52a38012Sejakowatz 				break;
253*52a38012Sejakowatz 		}
254*52a38012Sejakowatz 
255*52a38012Sejakowatz 		SetHighColor(tint_color(ui_color(B_PANEL_BACKGROUND_COLOR),
256*52a38012Sejakowatz 					 IsEnabled() ? B_DARKEN_MAX_TINT : B_DISABLED_LABEL_TINT));
257*52a38012Sejakowatz 		DrawString(Label(), BPoint(x, y));
258*52a38012Sejakowatz 	}
259*52a38012Sejakowatz 
260*52a38012Sejakowatz 	rect = fText->Frame();
261*52a38012Sejakowatz 
262*52a38012Sejakowatz 	rgb_color base = ui_color(B_PANEL_BACKGROUND_COLOR);
263*52a38012Sejakowatz 
264*52a38012Sejakowatz 	rect.InsetBy(-1,-1);
265*52a38012Sejakowatz 	SetHighColor(tint_color(base, IsEnabled() ?
266*52a38012Sejakowatz 							B_DARKEN_1_TINT : B_DARKEN_2_TINT));
267*52a38012Sejakowatz 	StrokeLine(BPoint(rect.left,rect.bottom), BPoint(rect.left, rect.top));
268*52a38012Sejakowatz 	StrokeLine(BPoint(rect.left+1.0f,rect.top), BPoint(rect.right, rect.top));
269*52a38012Sejakowatz 	SetHighColor(tint_color(base, IsEnabled() ?
270*52a38012Sejakowatz 							B_LIGHTEN_MAX_TINT : B_LIGHTEN_2_TINT));
271*52a38012Sejakowatz 	StrokeLine(BPoint(rect.left+1.0f,rect.bottom),
272*52a38012Sejakowatz 			   BPoint(rect.right, rect.bottom));
273*52a38012Sejakowatz 	StrokeLine(BPoint(rect.right,rect.bottom),
274*52a38012Sejakowatz 			   BPoint(rect.right, rect.top+1.0f));
275*52a38012Sejakowatz }
276*52a38012Sejakowatz //------------------------------------------------------------------------------
277*52a38012Sejakowatz void BTextControl::MouseDown(BPoint where)
278*52a38012Sejakowatz {
279*52a38012Sejakowatz 	if (IsEnabled())
280*52a38012Sejakowatz 	{
281*52a38012Sejakowatz 		MakeFocus(true);
282*52a38012Sejakowatz 	}
283*52a38012Sejakowatz }
284*52a38012Sejakowatz void BTextControl::AttachedToWindow()
285*52a38012Sejakowatz {
286*52a38012Sejakowatz 	BControl::AttachedToWindow();
287*52a38012Sejakowatz 	if (Parent())
288*52a38012Sejakowatz 	{
289*52a38012Sejakowatz 		SetViewColor(Parent()->ViewColor());
290*52a38012Sejakowatz 	}
291*52a38012Sejakowatz 
292*52a38012Sejakowatz 	float w;
293*52a38012Sejakowatz 	float h;
294*52a38012Sejakowatz 	GetPreferredSize(&w, &h);
295*52a38012Sejakowatz 	ResizeTo(Bounds().Width(), h);
296*52a38012Sejakowatz 	fText->ResizeTo(fText->Bounds().Width(), h);
297*52a38012Sejakowatz }
298*52a38012Sejakowatz void BTextControl::MakeFocus(bool state = true)
299*52a38012Sejakowatz {
300*52a38012Sejakowatz 	if (IsEnabled())
301*52a38012Sejakowatz 	{
302*52a38012Sejakowatz 		fText->MakeFocus(state);
303*52a38012Sejakowatz 		Invalidate();
304*52a38012Sejakowatz 	}
305*52a38012Sejakowatz }
306*52a38012Sejakowatz //------------------------------------------------------------------------------
307*52a38012Sejakowatz void BTextControl::SetEnabled(bool state)
308*52a38012Sejakowatz {
309*52a38012Sejakowatz 	fText->SetEnabled(state);
310*52a38012Sejakowatz 	BControl::SetEnabled(state);
311*52a38012Sejakowatz }
312*52a38012Sejakowatz //------------------------------------------------------------------------------
313*52a38012Sejakowatz void BTextControl::GetPreferredSize(float* width, float* height)
314*52a38012Sejakowatz {
315*52a38012Sejakowatz 	BFont font;
316*52a38012Sejakowatz 	GetFont(&font);
317*52a38012Sejakowatz 	font_height fh;
318*52a38012Sejakowatz 	font.GetHeight(&fh);
319*52a38012Sejakowatz 
320*52a38012Sejakowatz 	*height = ceil(fh.ascent + fh.descent + fh.leading) + 7.0f;
321*52a38012Sejakowatz 
322*52a38012Sejakowatz 	// TODO: this one I need to find out
323*52a38012Sejakowatz 	*width = 4.0f + ceil(font.StringWidth(Label()))*2.0f;
324*52a38012Sejakowatz }
325*52a38012Sejakowatz //------------------------------------------------------------------------------
326*52a38012Sejakowatz void BTextControl::ResizeToPreferred()
327*52a38012Sejakowatz {
328*52a38012Sejakowatz 	float w;
329*52a38012Sejakowatz 	float h;
330*52a38012Sejakowatz 	GetPreferredSize(&w, &h);
331*52a38012Sejakowatz 	BView::ResizeTo(w,h);
332*52a38012Sejakowatz }
333*52a38012Sejakowatz //------------------------------------------------------------------------------
334*52a38012Sejakowatz void BTextControl::SetFlags(uint32 flags)
335*52a38012Sejakowatz {
336*52a38012Sejakowatz 	BView::SetFlags(flags);
337*52a38012Sejakowatz }
338*52a38012Sejakowatz //------------------------------------------------------------------------------
339*52a38012Sejakowatz void BTextControl::MessageReceived(BMessage* msg)
340*52a38012Sejakowatz {
341*52a38012Sejakowatz 	switch(msg->what)
342*52a38012Sejakowatz 	{
343*52a38012Sejakowatz 		case B_CONTROL_MODIFIED:
344*52a38012Sejakowatz 			if (fModificationMessage)
345*52a38012Sejakowatz 			{
346*52a38012Sejakowatz 				BControl::Invoke(fModificationMessage);
347*52a38012Sejakowatz 			}
348*52a38012Sejakowatz 			break;
349*52a38012Sejakowatz 
350*52a38012Sejakowatz 		default:
351*52a38012Sejakowatz 			BControl::MessageReceived(msg);
352*52a38012Sejakowatz 			break;
353*52a38012Sejakowatz 	}
354*52a38012Sejakowatz }
355*52a38012Sejakowatz //------------------------------------------------------------------------------
356*52a38012Sejakowatz BHandler* BTextControl::ResolveSpecifier(BMessage* msg, int32 index,
357*52a38012Sejakowatz 										 BMessage* specifier, int32 form,
358*52a38012Sejakowatz 										 const char* property)
359*52a38012Sejakowatz {
360*52a38012Sejakowatz 	return NULL;
361*52a38012Sejakowatz }
362*52a38012Sejakowatz //------------------------------------------------------------------------------
363*52a38012Sejakowatz status_t BTextControl::GetSupportedSuites(BMessage* data)
364*52a38012Sejakowatz {
365*52a38012Sejakowatz 	return B_OK;
366*52a38012Sejakowatz }
367*52a38012Sejakowatz //------------------------------------------------------------------------------
368*52a38012Sejakowatz void BTextControl::MouseUp(BPoint pt)
369*52a38012Sejakowatz {
370*52a38012Sejakowatz 	BControl::MouseUp(pt);
371*52a38012Sejakowatz }
372*52a38012Sejakowatz //------------------------------------------------------------------------------
373*52a38012Sejakowatz void BTextControl::MouseMoved(BPoint pt, uint32 code, const BMessage* msg)
374*52a38012Sejakowatz {
375*52a38012Sejakowatz 	BControl::MouseMoved(pt, code, msg);
376*52a38012Sejakowatz }
377*52a38012Sejakowatz //------------------------------------------------------------------------------
378*52a38012Sejakowatz void BTextControl::DetachedFromWindow()
379*52a38012Sejakowatz {
380*52a38012Sejakowatz 	BControl::DetachedFromWindow();
381*52a38012Sejakowatz }
382*52a38012Sejakowatz //------------------------------------------------------------------------------
383*52a38012Sejakowatz void BTextControl::AllAttached()
384*52a38012Sejakowatz {
385*52a38012Sejakowatz 	BControl::AllAttached();
386*52a38012Sejakowatz }
387*52a38012Sejakowatz //------------------------------------------------------------------------------
388*52a38012Sejakowatz void BTextControl::AllDetached()
389*52a38012Sejakowatz {
390*52a38012Sejakowatz 	BControl::AllDetached();
391*52a38012Sejakowatz }
392*52a38012Sejakowatz //------------------------------------------------------------------------------
393*52a38012Sejakowatz void BTextControl::FrameMoved(BPoint newPosition)
394*52a38012Sejakowatz {
395*52a38012Sejakowatz 	BControl::FrameMoved(newPosition);
396*52a38012Sejakowatz }
397*52a38012Sejakowatz //------------------------------------------------------------------------------
398*52a38012Sejakowatz void BTextControl::FrameResized(float newWidth, float newHeight)
399*52a38012Sejakowatz {
400*52a38012Sejakowatz 	BControl::FrameResized(newWidth, newHeight);
401*52a38012Sejakowatz }
402*52a38012Sejakowatz //------------------------------------------------------------------------------
403*52a38012Sejakowatz void BTextControl::WindowActivated(bool active)
404*52a38012Sejakowatz {
405*52a38012Sejakowatz 	BControl::WindowActivated(active);
406*52a38012Sejakowatz }
407*52a38012Sejakowatz //------------------------------------------------------------------------------
408*52a38012Sejakowatz status_t BTextControl::Perform(perform_code d, void* arg)
409*52a38012Sejakowatz {
410*52a38012Sejakowatz 	return BControl::Perform(d, arg);
411*52a38012Sejakowatz }
412*52a38012Sejakowatz //------------------------------------------------------------------------------
413*52a38012Sejakowatz void BTextControl::_ReservedTextControl1()
414*52a38012Sejakowatz {
415*52a38012Sejakowatz }
416*52a38012Sejakowatz //------------------------------------------------------------------------------
417*52a38012Sejakowatz void BTextControl::_ReservedTextControl2()
418*52a38012Sejakowatz {
419*52a38012Sejakowatz }
420*52a38012Sejakowatz //------------------------------------------------------------------------------
421*52a38012Sejakowatz void BTextControl::_ReservedTextControl3()
422*52a38012Sejakowatz {
423*52a38012Sejakowatz }
424*52a38012Sejakowatz //------------------------------------------------------------------------------
425*52a38012Sejakowatz void BTextControl::_ReservedTextControl4()
426*52a38012Sejakowatz {
427*52a38012Sejakowatz }
428*52a38012Sejakowatz //------------------------------------------------------------------------------
429*52a38012Sejakowatz BTextControl& BTextControl::operator=(const BTextControl&)
430*52a38012Sejakowatz {
431*52a38012Sejakowatz 	// Assignment not allowed
432*52a38012Sejakowatz 	return *this;
433*52a38012Sejakowatz }
434*52a38012Sejakowatz //------------------------------------------------------------------------------
435*52a38012Sejakowatz 
436*52a38012Sejakowatz /*
437*52a38012Sejakowatz  * $Log $
438*52a38012Sejakowatz  *
439*52a38012Sejakowatz  * $Id  $
440*52a38012Sejakowatz  *
441*52a38012Sejakowatz  */
442*52a38012Sejakowatz 
443