]> git.saurik.com Git - wxWidgets.git/commitdiff
Implement toolbar tool clicks. Get rid of wxNSActionCell stuff because
authorDavid Elliott <dfe@tgwbd.org>
Wed, 17 Nov 2004 18:02:56 +0000 (18:02 +0000)
committerDavid Elliott <dfe@tgwbd.org>
Wed, 17 Nov 2004 18:02:56 +0000 (18:02 +0000)
Cells send their action from the view anyway so we'd have no way of knowing
which tool was clicked.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/cocoa/toolbar.h
src/cocoa/toolbar.mm

index d8ccd336b920b1d65f785b3c5924db80ffef05cd..da01f719fd25abad5706ab3acf29a195dbd825a0 100644 (file)
@@ -61,6 +61,7 @@ protected:
     virtual bool Cocoa_mouseDown(WX_NSEvent theEvent);
     virtual bool Cocoa_mouseDragged(WX_NSEvent theEvent);
     wxToolBarTool *CocoaFindToolForPosition(const NSPoint& pos) const;
     virtual bool Cocoa_mouseDown(WX_NSEvent theEvent);
     virtual bool Cocoa_mouseDragged(WX_NSEvent theEvent);
     wxToolBarTool *CocoaFindToolForPosition(const NSPoint& pos) const;
+    void CocoaToolClickEnded();
 // ------------------------------------------------------------------------
 // Implementation
 // ------------------------------------------------------------------------
 // ------------------------------------------------------------------------
 // Implementation
 // ------------------------------------------------------------------------
index 6ad048346d0481f7a444bd4157b08c86cb64c577..3688f0e7b370c308b9b26dd7d5d068e05c3bb6c1 100644 (file)
 
 #include <math.h>
 
 
 #include <math.h>
 
-DECLARE_WXCOCOA_OBJC_CLASS(NSActionCell);
-
-// ========================================================================
-// wxCocoaNSActionCell
-// ========================================================================
-WX_DECLARE_OBJC_HASHMAP(NSActionCell);
-
-class wxCocoaNSActionCell
-{
-    WX_DECLARE_OBJC_INTERFACE(NSActionCell)
-public:
-    virtual void CocoaTarget_wxNSActionCellAction() {}
-protected:
-    static struct objc_object *sm_cocoaTarget;
-};
-
-// ============================================================================
-// @class wxNSActionCellTarget
-// ============================================================================
-@interface wxNSActionCellTarget : NSObject
-{
-}
-
-- (void)wxNSActionCellAction: (id)sender;
-@end //interface wxNSActionCellTarget
-
-@implementation wxNSActionCellTarget : NSObject
-
-- (void)wxNSActionCellAction: (id)sender
-{
-    wxLogTrace(wxTRACE_COCOA,wxT("wxNSActionCellAction"));
-    wxCocoaNSActionCell *wxcontrol = wxCocoaNSActionCell::GetFromCocoa(sender);
-    wxCHECK_RET(wxcontrol,wxT("wxNSActionCellAction received but no wxCocoaNSActionCell exists!"));
-    wxcontrol->CocoaTarget_wxNSActionCellAction();
-}
-
-@end //implementation wxNSActionCellTarget
-
-// ========================================================================
-// wxCocoaNSActionCell
-// ========================================================================
-struct objc_object *wxCocoaNSActionCell::sm_cocoaTarget = [[wxNSActionCellTarget alloc] init];
-WX_IMPLEMENT_OBJC_INTERFACE(NSActionCell)
-
 // ========================================================================
 // wxToolBarTool
 // ========================================================================
 // ========================================================================
 // wxToolBarTool
 // ========================================================================
-class wxToolBarTool : public wxToolBarToolBase, protected wxCocoaNSActionCell
+class wxToolBarTool : public wxToolBarToolBase
 {
 public:
     wxToolBarTool(wxToolBar *tbar, int toolid, const wxString& label,
 {
 public:
     wxToolBarTool(wxToolBar *tbar, int toolid, const wxString& label,
@@ -139,9 +95,16 @@ void wxToolBarTool::Init()
     m_frameRect = NSZeroRect;
 }
 
     m_frameRect = NSZeroRect;
 }
 
+void wxToolBar::CocoaToolClickEnded()
+{
+    wxASSERT(m_mouseDownTool);
+    wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED, m_mouseDownTool->GetId());
+    InitCommandEvent(event);
+    Command(event);
+}
+
 wxToolBarTool::~wxToolBarTool()
 {
 wxToolBarTool::~wxToolBarTool()
 {
-    DisassociateNSActionCell(m_cocoaNSButtonCell);
     [m_cocoaNSButtonCell release];
 }
 
     [m_cocoaNSButtonCell release];
 }
 
@@ -186,7 +149,6 @@ bool wxToolBarTool::CreateButtonCell()
     [m_cocoaNSButtonCell setBordered:NO];
 //    [m_cocoaNSButtonCell setHighlightsBy:NSContentsCellMask|NSPushInCellMask];
 //    [m_cocoaNSButtonCell setShowsStateBy:NSContentsCellMask|NSPushInCellMask];
     [m_cocoaNSButtonCell setBordered:NO];
 //    [m_cocoaNSButtonCell setHighlightsBy:NSContentsCellMask|NSPushInCellMask];
 //    [m_cocoaNSButtonCell setShowsStateBy:NSContentsCellMask|NSPushInCellMask];
-    AssociateNSActionCell(m_cocoaNSButtonCell);
     return true;
 }
 
     return true;
 }
 
@@ -296,6 +258,7 @@ bool wxToolBar::Cocoa_mouseDragged(WX_NSEvent theEvent)
                 inRect:AddToolPadding(m_mouseDownTool->GetFrameRect()) ofView:m_cocoaNSView
                 untilMouseUp:NO])
             {
                 inRect:AddToolPadding(m_mouseDownTool->GetFrameRect()) ofView:m_cocoaNSView
                 untilMouseUp:NO])
             {
+                CocoaToolClickEnded();
                 m_mouseDownTool = NULL;
                 wxLogTrace(wxTRACE_COCOA,wxT("Button was clicked after drag!"));
             }
                 m_mouseDownTool = NULL;
                 wxLogTrace(wxTRACE_COCOA,wxT("Button was clicked after drag!"));
             }
@@ -319,6 +282,7 @@ bool wxToolBar::Cocoa_mouseDown(WX_NSEvent theEvent)
                 inRect:AddToolPadding(tool->GetFrameRect()) ofView:m_cocoaNSView
                 untilMouseUp:NO])
             {
                 inRect:AddToolPadding(tool->GetFrameRect()) ofView:m_cocoaNSView
                 untilMouseUp:NO])
             {
+                CocoaToolClickEnded();
                 m_mouseDownTool = NULL;
                 wxLogTrace(wxTRACE_COCOA,wxT("Button was clicked!"));
             }
                 m_mouseDownTool = NULL;
                 wxLogTrace(wxTRACE_COCOA,wxT("Button was clicked!"));
             }