diff --git a/cmd/macfe/central/BrowserClasses.cp b/cmd/macfe/central/BrowserClasses.cp index 1677339685dd..a0047a7b0d40 100644 --- a/cmd/macfe/central/BrowserClasses.cp +++ b/cmd/macfe/central/BrowserClasses.cp @@ -335,6 +335,7 @@ void RegisterAllBrowserClasses(void) RegisterClass_(CInlineEditField); RegisterClass_(CChameleonCaption); + RegisterClass_(CNavCenterCaption); RegisterClass_(CChameleonBroadcastCaption); RegisterClass_(CNavCenterWindow); diff --git a/cmd/macfe/rdfui/CHyperTreeFlexTable.cp b/cmd/macfe/rdfui/CHyperTreeFlexTable.cp index 0e94ea390b60..71befbf159a5 100644 --- a/cmd/macfe/rdfui/CHyperTreeFlexTable.cp +++ b/cmd/macfe/rdfui/CHyperTreeFlexTable.cp @@ -40,7 +40,7 @@ #include "ufilemgr.h" #include "CInlineEditField.h" #include "CContextMenuAttachment.h" - +#include "libi18n.h" #include #include @@ -170,8 +170,17 @@ CHyperTreeFlexTable :: GetMainRowText( TableIndexT inRow, char* outText, UInt16 *outText = NULL; } // GetMainRowText +//---------------------------------------------------------------------------------------- +void CHyperTreeFlexTable::SetEditParam(int w, int h, char* utf8, SPoint32& ImagePoint) - +{ + mNameEditor->ResizeFrameTo(w, h, true); + char* editText = (char*) INTL_ConvertLineWithoutAutoDetect( + CS_UTF8, INTL_GetCharSetID(INTL_DefaultTextWidgetCsidSel), + (unsigned char*)utf8, strlen(utf8)); + mNameEditor->UpdateEdit(CStr255(editText), &ImagePoint, nil); + XP_FREEIF(editText); +} // SetEditParam // // FindTitleColumnID // @@ -1362,8 +1371,12 @@ CHyperTreeFlexTable :: InlineEditorDone ( ) { Str255 newName; mNameEditor->GetDescriptor(newName); - cstring nameAsCString(newName); - + // we need to convert to UTF8 here.... + unsigned char* utfText = INTL_ConvertLineWithoutAutoDetect( + INTL_GetCharSetID(INTL_DefaultTextWidgetCsidSel), CS_UTF8, newName+1, newName[0]); + cstring nameAsCString( (char*) utfText); + XP_FREEIF(utfText); + HT_Resource editedNode = HT_GetNthItem(GetHTView(), URDFUtilities::PPRowToHTRow(mRowBeingEdited) ); HT_SetNodeName ( editedNode, nameAsCString ); diff --git a/cmd/macfe/rdfui/CHyperTreeFlexTable.h b/cmd/macfe/rdfui/CHyperTreeFlexTable.h index a8c626b2dc9b..840a6576f7d5 100644 --- a/cmd/macfe/rdfui/CHyperTreeFlexTable.h +++ b/cmd/macfe/rdfui/CHyperTreeFlexTable.h @@ -150,6 +150,7 @@ protected: virtual void DeleteSelection ( const EventRecord& inEvent ); virtual void FindCommandStatus ( CommandT inCommand, Boolean &outEnabled, Boolean &outUsesMark, Char16 &outMark, Str255 outName) ; + virtual void SetEditParam(int w, int h, char* str, SPoint32& ImagePoint); HT_Resource TopNode ( ) const { return HT_TopNode(GetHTView()); } diff --git a/cmd/macfe/rdfui/CNavCenterTitle.cp b/cmd/macfe/rdfui/CNavCenterTitle.cp index 0d6daca8e739..eb8a970291b2 100644 --- a/cmd/macfe/rdfui/CNavCenterTitle.cp +++ b/cmd/macfe/rdfui/CNavCenterTitle.cp @@ -28,6 +28,19 @@ #include "URDFUtilities.h" #include "CContextMenuAttachment.h" #include "CRDFCoordinator.h" +#include "UGraphicGizmos.h" + +CNavCenterCaption :: CNavCenterCaption ( LStream *inStream ) + : CChameleonCaption(inStream) +{ +} +void CNavCenterCaption::DrawText(Rect frame, Int16 inJust) +{ + UGraphicGizmos::PlaceUTF8TextInRect((char*)&mText[1], + mText[0], + frame, + inJust); +} CNavCenterStrip :: CNavCenterStrip ( LStream *inStream ) diff --git a/cmd/macfe/rdfui/CNavCenterTitle.h b/cmd/macfe/rdfui/CNavCenterTitle.h index 8ec6fb354d00..99ac687df41b 100644 --- a/cmd/macfe/rdfui/CNavCenterTitle.h +++ b/cmd/macfe/rdfui/CNavCenterTitle.h @@ -69,7 +69,13 @@ private: }; // class CNavCenterTitle - +class CNavCenterCaption : public CChameleonCaption { +public: + enum { class_ID = 'ccp8' }; + CNavCenterCaption(LStream *inStream); +protected: + virtual void DrawText(Rect frame, Int16 inJust); +}; class CNavCenterTitle : public CNavCenterStrip { diff --git a/cmd/macfe/rsrc/communicator/NavCenter.cnst b/cmd/macfe/rsrc/communicator/NavCenter.cnst index c2d1a6543858..1441a67f73bf 100644 Binary files a/cmd/macfe/rsrc/communicator/NavCenter.cnst and b/cmd/macfe/rsrc/communicator/NavCenter.cnst differ diff --git a/lib/mac/UserInterface/CColorCaption.cp b/lib/mac/UserInterface/CColorCaption.cp index 3114a7d05ff7..f9d09899b55f 100644 --- a/lib/mac/UserInterface/CColorCaption.cp +++ b/lib/mac/UserInterface/CColorCaption.cp @@ -86,10 +86,16 @@ CChameleonCaption :: DrawSelf() ::RGBForeColor ( &textColor ); // ¥ Now we can finally get the text drawn - UTextDrawing::DrawWithJustification ( (Ptr)&mText[1], mText[0], localFrame, just ); + this->DrawText(localFrame, just); } } // DrawSelf +void +CChameleonCaption :: DrawText(Rect frame, Int16 inJust) +{ + UTextDrawing::DrawWithJustification ( (Ptr)&mText[1], mText[0], frame, inJust ); + +} #pragma mark - diff --git a/lib/mac/UserInterface/CColorCaption.h b/lib/mac/UserInterface/CColorCaption.h index 946d33259ef6..c6d681310c6e 100644 --- a/lib/mac/UserInterface/CColorCaption.h +++ b/lib/mac/UserInterface/CColorCaption.h @@ -42,6 +42,7 @@ public: protected: virtual void DrawSelf(); + virtual void DrawText(Rect frame, Int16 inJust); RGBColor mTextColor; RGBColor mBackColor; diff --git a/lib/mac/UserInterface/Tables/CStandardFlexTable.cp b/lib/mac/UserInterface/Tables/CStandardFlexTable.cp index 65f5210149a2..d8d056b62c5f 100755 --- a/lib/mac/UserInterface/Tables/CStandardFlexTable.cp +++ b/lib/mac/UserInterface/Tables/CStandardFlexTable.cp @@ -1161,13 +1161,17 @@ void CStandardFlexTable::DoInlineEditing(const STableCell &inCell, Rect& inTextR GetHiliteText(mRowBeingEdited, nameString, sizeof(nameString), false, &inTextRect); InsetRect(&inTextRect, -2, -2); inTextRect.bottom += 2; - mNameEditor->ResizeFrameTo(inTextRect.right - inTextRect.left, - inTextRect.bottom - inTextRect.top, true); - mNameEditor->UpdateEdit(CStr255(nameString), &imagePoint, nil); - + SetEditParam(inTextRect.right - inTextRect.left, inTextRect.bottom - inTextRect.top, nameString, imagePoint); SelectionChanged(); } // DoInlineEditing +//---------------------------------------------------------------------------------------- +void CStandardFlexTable::SetEditParam(int w, int h, char* str, SPoint32& ImagePoint) + +{ + mNameEditor->ResizeFrameTo(w, h, true); + mNameEditor->UpdateEdit(CStr255(str), &ImagePoint, nil); +} // SetEditParam //---------------------------------------------------------------------------------------- Boolean CStandardFlexTable::CellSelects(const STableCell& /*inCell*/) const // Determines if a cell is allowed to select the row. diff --git a/lib/mac/UserInterface/Tables/CStandardFlexTable.h b/lib/mac/UserInterface/Tables/CStandardFlexTable.h index 5346faea86b8..4ea59304d959 100755 --- a/lib/mac/UserInterface/Tables/CStandardFlexTable.h +++ b/lib/mac/UserInterface/Tables/CStandardFlexTable.h @@ -260,6 +260,10 @@ protected: virtual void InlineEditorTextChanged( ) { } virtual void InlineEditorDone( ) { } virtual void DoInlineEditing( const STableCell &inCell, Rect & inTextRect ); + virtual void SetEditParam(int w, int h, char* str, SPoint32& ImagePoint); + + + virtual Boolean CanDoInlineEditing( ) const { return true; } virtual void DrawCell(