diff options
Diffstat (limited to 'cocoa/PlatCocoa.mm')
| -rw-r--r-- | cocoa/PlatCocoa.mm | 80 | 
1 files changed, 48 insertions, 32 deletions
diff --git a/cocoa/PlatCocoa.mm b/cocoa/PlatCocoa.mm index 5d6d43b09..259387846 100644 --- a/cocoa/PlatCocoa.mm +++ b/cocoa/PlatCocoa.mm @@ -1352,8 +1352,8 @@ void ListBoxImpl::Create(Window &/*parent*/, int /*ctrlID*/, Scintilla::Point /*    unicodeMode = unicodeMode_;    maxWidth = 2000; -  WindowClass windowClass = kHelpWindowClass; -  WindowAttributes attributes = kWindowNoAttributes; +  //WindowClass windowClass = kHelpWindowClass; +  //WindowAttributes attributes = kWindowNoAttributes;    Rect contentBounds;    WindowRef outWindow; @@ -1365,7 +1365,7 @@ void ListBoxImpl::Create(Window &/*parent*/, int /*ctrlID*/, Scintilla::Point /*    //InstallStandardEventHandler(GetWindowEventTarget(outWindow)); -  ControlRef root; +  //ControlRef root;    //CreateRootControl(outWindow, &root);    //CreateDataBrowserControl(outWindow, &contentBounds, kDataBrowserListView, &lb); @@ -1377,22 +1377,24 @@ void ListBoxImpl::Create(Window &/*parent*/, int /*ctrlID*/, Scintilla::Point /*    // get rid of the frame, forces databrowser to the full size    // of the window -  Boolean frameAndFocus = false; +  //Boolean frameAndFocus = false;    //SetControlData(lb, kControlNoPart, kControlDataBrowserIncludesFrameAndFocusTag,    //       sizeof(frameAndFocus), &frameAndFocus); -  ListBoxImpl* lbThis = this; +  //ListBoxImpl* lbThis = this;    //SetControlProperty( lb, scintillaListBoxType, 0, sizeof( this ), &lbThis );    ConfigureDataBrowser();    InstallDataBrowserCustomCallbacks();    // install event handlers +  /*    static const EventTypeSpec kWindowEvents[] =    {      { kEventClassMouse, kEventMouseDown },      { kEventClassMouse, kEventMouseMoved },    }; +   */    eventHandler = NULL;    //InstallWindowEventHandler( outWindow, WindowEventHandler, @@ -1537,7 +1539,7 @@ pascal void ListBoxDrawItemCallback(ControlRef browser, DataBrowserItemID item,  {    if (property != kIconColumn) return;    ListBoxImpl* lbThis = NULL; -  OSStatus err; +  //OSStatus err;    //err = GetControlProperty( browser, scintillaListBoxType, 0, sizeof( lbThis ), NULL, &lbThis );    // adjust our rect    lbThis->DrawRow(item, property, itemState, theRect); @@ -1547,7 +1549,7 @@ pascal void ListBoxDrawItemCallback(ControlRef browser, DataBrowserItemID item,  void ListBoxImpl::ConfigureDataBrowser()  {    DataBrowserViewStyle viewStyle; -  DataBrowserSelectionFlags selectionFlags; +  //DataBrowserSelectionFlags selectionFlags;    //GetDataBrowserViewStyle(lb, &viewStyle);    //SetDataBrowserHasScrollBars(lb, false, true); @@ -1793,7 +1795,7 @@ int ListBoxImpl::Find(const char *prefix) {    char s[255];    for (int i = 0; i < count; i++) {      GetValue(i, s, 255); -    if (s[0] != NULL && (0 == strncmp(prefix, s, strlen(prefix)))) { +    if ((s[0] != '\0') && (0 == strncmp(prefix, s, strlen(prefix)))) {        return i;      }    } @@ -1840,6 +1842,27 @@ void ListBoxImpl::ClearRegisteredImages() {    xset.Clear();  } +//----------------- ScintillaContextMenu ----------------------------------------------------------- + +@implementation ScintillaContextMenu : NSMenu + +// This NSMenu subclass serves also as target for menu commands and forwards them as +// notfication messages to the front end. + +- (void) handleCommand: (NSMenuItem*) sender +{ +  owner->HandleCommand([sender tag]); +} + +//-------------------------------------------------------------------------------------------------- + +- (void) setOwner: (Scintilla::ScintillaCocoa*) newOwner +{ +  owner = newOwner; +} + +@end +  //----------------- Menu ---------------------------------------------------------------------------  Menu::Menu() @@ -1849,34 +1872,27 @@ Menu::Menu()  //-------------------------------------------------------------------------------------------------- -void Menu::CreatePopUp() { -  // TODO: Could I just feed a constant menu ID parameter, or does -  // it really need to be unique? -  static int nextMenuID = 1; +void Menu::CreatePopUp() +{    Destroy(); -  OSStatus err; -  //    err = CreateNewMenu( nextMenuID++, 0, reinterpret_cast<MenuRef*>( &id ) ); +  mid = [[ScintillaContextMenu alloc] initWithTitle: @""];  } -void Menu::Destroy() { +//-------------------------------------------------------------------------------------------------- + +void Menu::Destroy() +{ +  ScintillaContextMenu* menu = reinterpret_cast<ScintillaContextMenu*>(mid); +  [menu release]; +  mid = NULL;  } -void Menu::Show(Point pt, Window &) { -  /* -   UInt32 userSelection = 0; -   SInt16 menuId = 0; -   MenuItemIndex menuItem = 0; -   ::Point globalPoint; -   globalPoint.h = pt.x; -   globalPoint.v = pt.y; -   OSStatus err; -   err = ContextualMenuSelect( reinterpret_cast<MenuRef>( id ), globalPoint, -   false, kCMHelpItemRemoveHelp, NULL, -   NULL, &userSelection, -   &menuId, -   &menuItem -   ); -   */ +//-------------------------------------------------------------------------------------------------- + +void Menu::Show(Point pt, Window &) +{ +  // Cocoa menus are handled a bit differently. We only create the menu. The framework +  // takes care to show it properly.  }  //----------------- ElapsedTime -------------------------------------------------------------------- @@ -1973,7 +1989,7 @@ bool Platform::MouseButtonBounce()   */  long Platform::SendScintilla(WindowID w, unsigned int msg, unsigned long wParam, long lParam)   { -  return scintilla_send_message( w, msg, wParam, lParam ); +  return scintilla_send_message(w, msg, wParam, lParam);  }  //--------------------------------------------------------------------------------------------------  | 
