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