X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c3ead1d1513a5eb79091a604f4e42b45d1bdf5d..4ceca854975482e71b634f3fca325e3df6c12116:/src/ribbon/gallery.cpp diff --git a/src/ribbon/gallery.cpp b/src/ribbon/gallery.cpp index 440455e16f..6d7c300e92 100644 --- a/src/ribbon/gallery.cpp +++ b/src/ribbon/gallery.cpp @@ -15,10 +15,9 @@ #pragma hdrstop #endif -#include "wx/ribbon/gallery.h" - #if wxUSE_RIBBON +#include "wx/ribbon/gallery.h" #include "wx/ribbon/art.h" #include "wx/ribbon/bar.h" #include "wx/dcbuffer.h" @@ -33,6 +32,7 @@ wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONGALLERY_HOVER_CHANGED, wxRibbonGalleryEvent); wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONGALLERY_SELECTED, wxRibbonGalleryEvent); +wxDEFINE_EVENT(wxEVT_COMMAND_RIBBONGALLERY_CLICKED, wxRibbonGalleryEvent); IMPLEMENT_DYNAMIC_CLASS(wxRibbonGalleryEvent, wxCommandEvent) IMPLEMENT_CLASS(wxRibbonGallery, wxRibbonControl) @@ -357,6 +357,13 @@ void wxRibbonGallery::OnMouseUp(wxMouseEvent& evt) notification.SetGalleryItem(m_selected_item); ProcessWindowEvent(notification); } + + wxRibbonGalleryEvent notification( + wxEVT_COMMAND_RIBBONGALLERY_CLICKED, GetId()); + notification.SetEventObject(this); + notification.SetGallery(this); + notification.SetGalleryItem(m_selected_item); + ProcessWindowEvent(notification); } } m_mouse_active_rect = NULL; @@ -436,10 +443,20 @@ void wxRibbonGallery::EnsureVisible(const wxRibbonGalleryItem* item) if(item == NULL || !item->IsVisible() || IsEmpty()) return; - int y = item->GetPosition().GetTop(); - int base_y = m_items.Item(0)->GetPosition().GetTop(); - int delta = y - base_y - m_scroll_amount; - ScrollLines(delta / m_bitmap_padded_size.GetHeight()); + if(m_art->GetFlags() & wxRIBBON_BAR_FLOW_VERTICAL) + { + int x = item->GetPosition().GetLeft(); + int base_x = m_items.Item(0)->GetPosition().GetLeft(); + int delta = x - base_x - m_scroll_amount; + ScrollLines(delta / m_bitmap_padded_size.GetWidth()); + } + else + { + int y = item->GetPosition().GetTop(); + int base_y = m_items.Item(0)->GetPosition().GetTop(); + int delta = y - base_y - m_scroll_amount; + ScrollLines(delta / m_bitmap_padded_size.GetHeight()); + } } bool wxRibbonGallery::IsHovered() const @@ -458,9 +475,6 @@ void wxRibbonGallery::OnPaint(wxPaintEvent& WXUNUSED(evt)) if(m_art == NULL) return; - wxSize cur_size = GetSize(); - wxSize min_size = GetMinSize(); - m_art->DrawGalleryBackground(dc, this, GetSize()); int padding_top = m_art->GetMetric(wxRIBBON_ART_GALLERY_BITMAP_PADDING_TOP_SIZE);