In SampleWindow, pass ownership of menus to SkWindow, so it can safely
delete them in its destructor.
BUG=557
TEST=Run SampleApp on linux. Then press escape.
Review URL: https://codereview.appspot.com/6050047
git-svn-id: http://skia.googlecode.com/svn/trunk@3719 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index 1d50b5c..9bcd1f0 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -769,57 +769,59 @@
fTransitionPrev = 2;
int sinkID = this->getSinkID();
- fAppMenu.setTitle("Global Settings");
+ fAppMenu = new SkOSMenu;
+ fAppMenu->setTitle("Global Settings");
int itemID;
- itemID =fAppMenu.appendList("Device Type", "Device Type", sinkID, 0,
+ itemID =fAppMenu->appendList("Device Type", "Device Type", sinkID, 0,
"Raster", "Picture", "OpenGL",
#if SK_ANGLE
"ANGLE",
#endif
NULL);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'd');
- itemID = fAppMenu.appendTriState("AA", "AA", sinkID, fAAState);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'b');
- itemID = fAppMenu.appendTriState("LCD", "LCD", sinkID, fLCDState);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'l');
- itemID = fAppMenu.appendTriState("Filter", "Filter", sinkID, fFilterState);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'n');
- itemID = fAppMenu.appendTriState("Hinting", "Hinting", sinkID, fHintingState);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'h');
- fUsePipeMenuItemID = fAppMenu.appendSwitch("Pipe", "Pipe" , sinkID, fUsePipe);
- fAppMenu.assignKeyEquivalentToItem(fUsePipeMenuItemID, 'p');
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'd');
+ itemID = fAppMenu->appendTriState("AA", "AA", sinkID, fAAState);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'b');
+ itemID = fAppMenu->appendTriState("LCD", "LCD", sinkID, fLCDState);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'l');
+ itemID = fAppMenu->appendTriState("Filter", "Filter", sinkID, fFilterState);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'n');
+ itemID = fAppMenu->appendTriState("Hinting", "Hinting", sinkID, fHintingState);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'h');
+ fUsePipeMenuItemID = fAppMenu->appendSwitch("Pipe", "Pipe" , sinkID, fUsePipe);
+ fAppMenu->assignKeyEquivalentToItem(fUsePipeMenuItemID, 'p');
#ifdef DEBUGGER
- itemID = fAppMenu.appendSwitch("Debugger", "Debugger", sinkID, fDebugger);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'q');
+ itemID = fAppMenu->appendSwitch("Debugger", "Debugger", sinkID, fDebugger);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'q');
#endif
- itemID = fAppMenu.appendSwitch("Slide Show", "Slide Show" , sinkID, false);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'a');
- itemID = fAppMenu.appendSwitch("Clip", "Clip" , sinkID, fUseClip);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'c');
- itemID = fAppMenu.appendSwitch("Flip X", "Flip X" , sinkID, false);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'x');
- itemID = fAppMenu.appendSwitch("Flip Y", "Flip Y" , sinkID, false);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'y');
- itemID = fAppMenu.appendSwitch("Zoomer", "Zoomer" , sinkID, fShowZoomer);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'z');
- itemID = fAppMenu.appendSwitch("Magnify", "Magnify" , sinkID, fMagnify);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'm');
- itemID =fAppMenu.appendList("Transition-Next", "Transition-Next", sinkID,
+ itemID = fAppMenu->appendSwitch("Slide Show", "Slide Show" , sinkID, false);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'a');
+ itemID = fAppMenu->appendSwitch("Clip", "Clip" , sinkID, fUseClip);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'c');
+ itemID = fAppMenu->appendSwitch("Flip X", "Flip X" , sinkID, false);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'x');
+ itemID = fAppMenu->appendSwitch("Flip Y", "Flip Y" , sinkID, false);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'y');
+ itemID = fAppMenu->appendSwitch("Zoomer", "Zoomer" , sinkID, fShowZoomer);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'z');
+ itemID = fAppMenu->appendSwitch("Magnify", "Magnify" , sinkID, fMagnify);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'm');
+ itemID =fAppMenu->appendList("Transition-Next", "Transition-Next", sinkID,
fTransitionNext, "Up", "Up and Right", "Right",
"Down and Right", "Down", "Down and Left",
"Left", "Up and Left", NULL);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'j');
- itemID =fAppMenu.appendList("Transition-Prev", "Transition-Prev", sinkID,
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'j');
+ itemID =fAppMenu->appendList("Transition-Prev", "Transition-Prev", sinkID,
fTransitionPrev, "Up", "Up and Right", "Right",
"Down and Right", "Down", "Down and Left",
"Left", "Up and Left", NULL);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'k');
- itemID = fAppMenu.appendAction("Save to PDF", sinkID);
- fAppMenu.assignKeyEquivalentToItem(itemID, 'e');
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'k');
+ itemID = fAppMenu->appendAction("Save to PDF", sinkID);
+ fAppMenu->assignKeyEquivalentToItem(itemID, 'e');
- this->addMenu(&fAppMenu);
- this->addMenu(&fSlideMenu);
+ this->addMenu(fAppMenu);
+ fSlideMenu = new SkOSMenu;
+ this->addMenu(fSlideMenu);
// this->setConfig(SkBitmap::kRGB_565_Config);
this->setConfig(SkBitmap::kARGB_8888_Config);
@@ -1282,8 +1284,8 @@
//Stop Pipe when fDebugger is active
fUsePipe = false;
(void)SampleView::SetUsePipe(curr, false);
- fAppMenu.getItemByID(fUsePipeMenuItemID)->setBool(fUsePipe);
- this->onUpdateMenu(&fAppMenu);
+ fAppMenu->getItemByID(fUsePipeMenuItemID)->setBool(fUsePipe);
+ this->onUpdateMenu(fAppMenu);
//Reset any transformations
fGesture.stop();
@@ -1673,9 +1675,9 @@
break;
}
- if (fAppMenu.handleKeyEquivalent(uni)|| fSlideMenu.handleKeyEquivalent(uni)) {
- this->onUpdateMenu(&fAppMenu);
- this->onUpdateMenu(&fSlideMenu);
+ if (fAppMenu->handleKeyEquivalent(uni)|| fSlideMenu->handleKeyEquivalent(uni)) {
+ this->onUpdateMenu(fAppMenu);
+ this->onUpdateMenu(fSlideMenu);
return true;
}
return this->INHERITED::onHandleChar(uni);
@@ -1847,7 +1849,7 @@
view->setSize(this->width(), this->height());
//repopulate the slide menu when a view is loaded
- fSlideMenu.reset();
+ fSlideMenu->reset();
#ifdef DEBUGGER
if (!is_debugger(view) && !is_overview(view) && !is_transition(view) && fDebugger) {
//Force Pipe to be on if using debugger
@@ -1856,8 +1858,8 @@
#endif
(void)SampleView::SetUsePipe(view, fUsePipe);
if (SampleView::IsSampleView(view))
- ((SampleView*)view)->requestMenu(&fSlideMenu);
- this->onUpdateMenu(&fSlideMenu);
+ ((SampleView*)view)->requestMenu(fSlideMenu);
+ this->onUpdateMenu(fSlideMenu);
this->updateTitle();
}