]> git.saurik.com Git - wxWidgets.git/commitdiff
Allow wxPGMultiButton to work even if primary editor control was not created in wxPGE...
authorJaakko Salli <jaakko.salli@dnainternet.net>
Mon, 9 Mar 2009 18:32:43 +0000 (18:32 +0000)
committerJaakko Salli <jaakko.salli@dnainternet.net>
Mon, 9 Mar 2009 18:32:43 +0000 (18:32 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/propgrid/editors.h
interface/wx/propgrid/editors.h
samples/propgrid/propgrid.cpp
src/propgrid/propgrid.cpp

index fcb42d8bc76d69fad6be97a450b7566a0df81671..dcc66671e580a20b92c793b93ab9146ebbe4bae4 100644 (file)
@@ -534,6 +534,8 @@ public:
 
 protected:
 
 
 protected:
 
+    void DoAddButton( wxWindow* button, const wxSize& sz );
+
     int GenId( int id ) const;
 
     wxArrayPtrVoid  m_buttons;
     int GenId( int id ) const;
 
     wxArrayPtrVoid  m_buttons;
index be902a925befebfe223d7fd99b1c7ac801822e41..29738a5c22ee858211196d9d47c76d035dacd49f 100644 (file)
@@ -220,18 +220,19 @@ public:
 
             if ( event.GetId() == buttons->GetButtonId(0) )
             {
 
             if ( event.GetId() == buttons->GetButtonId(0) )
             {
-                // Do something when first button is pressed
-                return true;
+                // Do something when the first button is pressed
+                // Return true if the action modified the value in editor.
+                ...
             }
             if ( event.GetId() == buttons->GetButtonId(1) )
             {
             }
             if ( event.GetId() == buttons->GetButtonId(1) )
             {
-                // Do something when second button is pressed
-                return true;
+                // Do something when the second button is pressed
+                ...
             }
             if ( event.GetId() == buttons->GetButtonId(2) )
             {
             }
             if ( event.GetId() == buttons->GetButtonId(2) )
             {
-                // Do something when third button is pressed
-                return true;
+                // Do something when the third button is pressed
+                ...
             }
         }
         return wxPGTextCtrlEditor::OnEvent(propGrid, property, ctrl, event);
             }
         }
         return wxPGTextCtrlEditor::OnEvent(propGrid, property, ctrl, event);
index 56abbad6d29b28cc8038b8e0a8a9ee29f6030b69..07099777a8bfcf2cc43a461418ff7325f6efe9b2 100644 (file)
@@ -134,21 +134,21 @@ bool wxSampleMultiButtonEditor::OnEvent( wxPropertyGrid* propGrid,
 
         if ( event.GetId() == buttons->GetButtonId(0) )
         {
 
         if ( event.GetId() == buttons->GetButtonId(0) )
         {
-            // Do something when first button is pressed
+            // Do something when the first button is pressed
             wxLogDebug("First button pressed");
             wxLogDebug("First button pressed");
-            return true;
+            return false;  // Return false since value did not change
         }
         if ( event.GetId() == buttons->GetButtonId(1) )
         {
         }
         if ( event.GetId() == buttons->GetButtonId(1) )
         {
-            // Do something when second button is pressed
-            wxLogDebug("Second button pressed");
-            return true;
+            // Do something when the second button is pressed
+            wxMessageBox("Second button pressed");
+            return false;  // Return false since value did not change
         }
         if ( event.GetId() == buttons->GetButtonId(2) )
         {
         }
         if ( event.GetId() == buttons->GetButtonId(2) )
         {
-            // Do something when third button is pressed
-            wxLogDebug("Third button pressed");
-            return true;
+            // Do something when the third button is pressed
+            wxMessageBox("Third button pressed");
+            return false;  // Return false since value did not change
         }
     }
     return wxPGTextCtrlEditor::OnEvent(propGrid, property, ctrl, event);
         }
     }
     return wxPGTextCtrlEditor::OnEvent(propGrid, property, ctrl, event);
index 842706e742a35d2e9dc8c1bb9854fe9bd239f6c1..a9557f3461164162159781974923951dff4d62f2 100644 (file)
@@ -2842,10 +2842,10 @@ void wxPropertyGrid::HandleCustomEditorEvent( wxEvent &event )
 
     wxVariant pendingValue(selected->GetValueRef());
     wxWindow* wnd = GetEditorControl();
 
     wxVariant pendingValue(selected->GetValueRef());
     wxWindow* wnd = GetEditorControl();
+    wxWindow* editorWnd = wxDynamicCast(event.GetEventObject(), wxWindow);
     int selFlags = 0;
     bool wasUnspecified = selected->IsValueUnspecified();
     int usesAutoUnspecified = selected->UsesAutoUnspecified();
     int selFlags = 0;
     bool wasUnspecified = selected->IsValueUnspecified();
     int usesAutoUnspecified = selected->UsesAutoUnspecified();
-
     bool valueIsPending = false;
 
     m_chgInfo_changedProperty = NULL;
     bool valueIsPending = false;
 
     m_chgInfo_changedProperty = NULL;
@@ -2891,17 +2891,19 @@ void wxPropertyGrid::HandleCustomEditorEvent( wxEvent &event )
 
     if ( !buttonWasHandled )
     {
 
     if ( !buttonWasHandled )
     {
-        if ( wnd )
+        if ( wnd || m_wndEditor2 )
         {
             // First call editor class' event handler.
             const wxPGEditor* editor = selected->GetEditorClass();
 
         {
             // First call editor class' event handler.
             const wxPGEditor* editor = selected->GetEditorClass();
 
-            if ( editor->OnEvent( this, selected, wnd, event ) )
+            if ( editor->OnEvent( this, selected, editorWnd, event ) )
             {
                 // If changes, validate them
                 if ( DoEditorValidate() )
                 {
             {
                 // If changes, validate them
                 if ( DoEditorValidate() )
                 {
-                    if ( editor->GetValueFromControl( pendingValue, m_selected, wnd ) )
+                    if ( editor->GetValueFromControl( pendingValue,
+                                                      m_selected,
+                                                      wnd ) )
                         valueIsPending = true;
                 }
                 else
                         valueIsPending = true;
                 }
                 else
@@ -2914,7 +2916,7 @@ void wxPropertyGrid::HandleCustomEditorEvent( wxEvent &event )
         // Then the property's custom handler (must be always called, unless
         // validation failed).
         if ( !validationFailure )
         // Then the property's custom handler (must be always called, unless
         // validation failed).
         if ( !validationFailure )
-            buttonWasHandled = selected->OnEvent( this, wnd, event );
+            buttonWasHandled = selected->OnEvent( this, editorWnd, event );
     }
 
     // SetValueInEvent(), as called in one of the functions referred above
     }
 
     // SetValueInEvent(), as called in one of the functions referred above