Author: stippi Date: Fri Apr 23 16:07:22 2010 New Revision: 457 URL: http://mmlr.dyndns.org/changeset/457 Log: Allow setting a listener target and a modification message. Modified: webkit/trunk/WebKit/haiku/WebPositive/support/FontSelectionView.cpp webkit/trunk/WebKit/haiku/WebPositive/support/FontSelectionView.h Modified: webkit/trunk/WebKit/haiku/WebPositive/support/FontSelectionView.cpp ============================================================================== --- webkit/trunk/WebKit/haiku/WebPositive/support/FontSelectionView.cpp Fri Apr 23 15:07:53 2010 (r456) +++ webkit/trunk/WebKit/haiku/WebPositive/support/FontSelectionView.cpp Fri Apr 23 16:07:22 2010 (r457) @@ -15,6 +15,7 @@ #include <Box.h> #include <Catalog.h> #include <Locale.h> +#include <Looper.h> #include <MenuField.h> #include <MenuItem.h> #include <PopUpMenu.h> @@ -43,7 +44,9 @@ FontSelectionView::FontSelectionView(const char* name, const char* label, bool separateStyles, const BFont* currentFont) : - BHandler(name) + BHandler(name), + fMessage(NULL), + fTarget(NULL) { if (currentFont == NULL) fCurrentFont = _DefaultFont(); @@ -96,6 +99,8 @@ delete fStylesMenuField; if (!fFontsMenuField->Window()) delete fFontsMenuField; + + delete fMessage; } @@ -120,6 +125,7 @@ fCurrentFont.SetSize(size); _UpdateFontPreview(); + _Invoke(); break; } @@ -153,6 +159,8 @@ if (fStylesMenuField != NULL) _AddStylesToMenu(fCurrentFont, fStylesMenuField->Menu()); } + + _Invoke(); break; } @@ -173,6 +181,7 @@ fCurrentFont.SetFamilyAndStyle(family, style); _UpdateFontPreview(); + _Invoke(); break; } @@ -182,6 +191,21 @@ } +void +FontSelectionView::SetMessage(BMessage* message) +{ + delete fMessage; + fMessage = message; +} + + +void +FontSelectionView::SetTarget(BHandler* target) +{ + fTarget = target; +} + + // #pragma mark - @@ -379,6 +403,16 @@ // #pragma mark - private +void +FontSelectionView::_Invoke() +{ + if (fTarget != NULL && fTarget->Looper() != NULL && fMessage != NULL) { + BMessage message(*fMessage); + fTarget->Looper()->PostMessage(&message, fTarget); + } +} + + BFont FontSelectionView::_DefaultFont() const { Modified: webkit/trunk/WebKit/haiku/WebPositive/support/FontSelectionView.h ============================================================================== --- webkit/trunk/WebKit/haiku/WebPositive/support/FontSelectionView.h Fri Apr 23 15:07:53 2010 (r456) +++ webkit/trunk/WebKit/haiku/WebPositive/support/FontSelectionView.h Fri Apr 23 16:07:22 2010 (r457) @@ -35,6 +35,9 @@ void AttachedToLooper(); virtual void MessageReceived(BMessage* message); + void SetMessage(BMessage* message); + void SetTarget(BHandler* target); + void SetFont(const BFont& font, float size); void SetFont(const BFont& font); void SetSize(float size); @@ -59,6 +62,8 @@ BView* PreviewBox() const; private: + void _Invoke(); + BFont _DefaultFont() const; void _SelectCurrentFont(bool select); void _SelectCurrentSize(bool select); @@ -78,6 +83,9 @@ BFont fSavedFont; BFont fCurrentFont; + + BMessage* fMessage; + BHandler* fTarget; }; #endif // FONT_SELECTION_VIEW_H