summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.iOS
AgeCommit message (Collapse)AuthorFilesLines
2017-03-24Clean sync with 2.3.4-2Kangho Hur32-1059/+186
Change-Id: I6a7423d2690a1c30f46e0c128d9504a2464f8f0b
2017-03-24Add pressed and released events to Button (#446)Kangho1-0/+10
* Add pressed and released events to Button * Update ButtonRenderer.cs * Apply safely casting to android button renderer * Use safety casting for Android buttin renderer * [Windows] Fix modal pages being laid out below soft buttons (#395) * Add sample HanselForms and TwitterDemo to ControlGallery (#651) * [Controls] Add Hanselforms sample * Remove extra twitter sample * [Controls]Add TwitterDemo sample * [Controls] Fix build * Slider should show user-set value on initial load (#378) * [UWP] Use toolbar foreground color on primary items (#640) * Avoid duplicating code in OmPlatform (#591) * [iOS] Entry should not pass a newline to the next responder (#397) * UITextField should not return so that the next field does not get passed a newline * Added code sample * [XamlC] import members on x:Static and factories (#642) * [Xaml] support short Properties for PropertyCondition (#645) * Xamlc compile data triggers (#648) * [Xaml] DataTrigger and PropertyCondition no longer use a ServiceProvider * [XamlC] avoid generating ServiceProvider for unused ProvideValue * fix tests * Fix comment typo * [UWP] Fix TextBox style for foreground focus color (#618) * Adding image to use for CellsGalleryImageUrlCellList UI test * Update ImageCellListPage to use an image we control; Update CellsGalleryImageUrlCellList test to wait longer than 1s for images to load if necessary * fix nre when changing content in datepickerselected (#494) * Make CellsGalleryImageUrlCellList test finish early if possible * [iOS] Change keyboard type while keyboard is visible (#443) * Change keyboard while changing text * add sample code * [Android] Fix NavigationPage dispose crash when it parents a MasterDetailPage (#577) * fix navigation page dispose crash * changes after review * [XamlC] detect duplicate x:Name at compile time (#655) * [XamlC] detect duplicate x:Name at compile time * invoking methods with the right arguments produces better results * Make UWP toolbar display rules consistent with other platforms (#638) * Allow subscriber to be collected if MessagingCenter is the only reference to it (#617) * Repro * Make messaging center callbacks weak references * Preserve attribute * Fix test method name * Watch for collection of actual delegate target instead of wrapper delegate * Preserve the original platform instance when changing main page * Better tests for lambda situations * Update tests, make callback target a weakreference if it's the subscriber * Ensure old Platform MessagingCenter subs are gone before creating new Platform * [iOS] Prevent multiple ListView cells from being swiped simultaneously (#578) * disable multiple cell swipe * add sample code * refactored * convert to weakreference * remove null setting * change weakreference setting place * remove if * revert isopen changes * add instructions * [WinRT/UWP] Apply BackgroundColor to Stepper buttons (#581) * [WinRT/UWP] Apply BackgroundColor to Stepper buttons * Add explanatory text; use nameof * Move explanatory text to a label * Return group instead of internal class (#461) * [iOS/Android] Move Map camera to correct region on layout change (#548) * Move to region on layout change * remove visibility check * [iOS] Platform specifics for controlling Picker SelectedIndex change behavior (#540) * picker selected index could change when picker view is dismissed * use enum * [iOS] Ignore intermittent failing test on XTC (#666) * [UITest] Update to UITest 2.0.5 (#665) * Rebase the current branch onto upstream latest
2017-03-24[iOS,macOS] Use NS constructor from string to parse correctly the string (#734)Rui Marinho1-2/+3
2017-03-24[All] Basic Accessibility Support (#713)Samantha Houts4-2/+142
* [Core] Add accessibility properties * [Controls] Add accessibility gallery * [iOS] Implement accessibility properties * [Android] Implement accessibilty properties * [Win] Implement accessibility properties * [Win] Select ListView item on selected for a11y * Update docs * TODO: macOS accessibility * [iOS] Fix failing UI Tests
2017-03-24MacOS (#650)Rui Marinho27-134/+767
* [MacOS] Add SwitchRenderer * [MacOS] Add TimePickerRenderer * [MacOS] Cleanup TimePcikerRender * [MacOS] Add WebViewRenderer * [MacOS] Add Javascript evaluate to webview * [MacOS] Fix build error on WebViewRenderer * [MacOS] Add Base and TextCell renderers * [MacOS] Start on ListViewRenderer * [MacOS] Cleanup * [MacOS] Vertical center text on default NSTextField * [MacOS] Center NSTextField vertically * [MacOS] Add ImageCellRenderer * [MacOS] Add SwitchCellRenderer * [MacOS] Add SwitchCellRenderer * [iOS] Allow to set background color on other CellRenderers * [MacOS] Fix selection mode on ListView * [MacOS] Set background on Entry of entry cell * [MacOS] Fix casting bug on CellRenderer * [MacOS] Other fix on CellRenderer background * [MacOS] Add ViewCellRenderer * [MacOS] Fixes and cleanup on cells * [MacOS] Add NSScrollView so NSTableView can scroll * [MacOS] Add HeaderView to ListView * [MacOS] Cleanup * [Controls] Add Header support to ListView * [MacOS] NSView reuse on NSTableView * [MacOS] Some fix on layour order * [MacOS] Add CarouselPageRenderer * [MacOS] Implement EventTracker on PageRenderer * [MacOS] Cleanup CarouselPageRenderer * [MacOS] Add MasterDetailPage renderer * [MacOS] MDP renderer don't allow drag of splitter * [MacOS] Add TabbedPage renderer * [MacOS] Initial sketch of NavigationPageRenderer * [MacOS] Send disappearing of CurrentPage on Dispose on NavigationPageRenderer * [MacOS] Add Gallery page for Mac * [MacOS] Add MacOSExpressionSearch * [MacOS] Fix ColorExtension * [MacOS] Fix MDP renderer layout * [MacOS] Implement native selection on ListViewRenderer * [MacOS] Deselect a item on NSTableView * [MacOS] Remove previous SplitViewItems * [MacOS] Fix navigationpage height * [MacOS] Add toolbar for NavigationPageRenderer * [MacOS] Don't remove selection for now (crashing) * [MacOS] Refactor page and back button title on NavigationPageRenderer * [MacOS] Fix bug when native navigate back * [MacOS] Hide layer when transition * [MacOS] ListviewRenderer fix BbackgroundColor * [MacOS] Fix background on ScrollViewRenderer * [MacOS] Fix header measure on ListViewRenderer * [MacOS] Add Mac twitter demo * [Controls] Spaces for easy reading * [MacOS] More xaml cleanup * [Core] Add Mac as aTargetPlatform * [MacOS] Add alerts and actionsheets * [MacOS] Add GestureRecognizers * [MacOS] Fix Layout issues when adding children, enable transformations * [MacOS] Fix title on tab item, move to tabbed navigation based on segmented control * [MacOS] Hide toolbar when not needed, this allows to work with tabbed page, cleanup * [MacOS] Add NativeBindings and NativeViewWrapper * [MacOS] Fix AssemblyInfo * [MacOS] FIX NRE on SetBackgroundColor BoxView * [MacOS] Fix NavigationPageRenderer * [MacOS] Fix build * [MacOS] Also update page when it resizes * [MacOS] Add LayoutRenderer for handle items position when the bounds change. * [MacOS] Refactor/Cleanup * [MacOS] Add toolbar items support to NavigationPage * [MacOS] Resize images for TabViewITems * [MacOS] Fix TabbedPage resize issues , allow users to override some features when creating TVI * [MacOS] Fix hide/show Navigation toolbar * [MacOS] Redo CarouselPageRenderer with NSPageController * [MacOS] Add support for Modal pages * [MacOS] Refactor navigation from platform * [Nuget] Add nuget for MacOS * [Nuget]Fix nuspec * [Nuget] Add variables for CI * [Controls] Remove MainMenu from MacOS * [MacOS] Add TableView renderer (no headers yet) * [MacOS] Refactoring, marking extensions as internal * [MacOS] Add group headers for TableViewRenderer * [MacOS] Workaround for updates on listview collection * [MacOS] Handle updates of rows in the ListViewRenderer properly * [MacOS] Fix navigation animation * Fix navigation header issues with modal pages * [MacOS] Fix MDP issues with resizing * [MacOS] Fix general dispose * [MacOS] Add a ViewControllerWrapper for NSSplitView * [MacOS] MDP renderer fix animation * [MacOS] Fix ListView selection bug * [MacOS] Fix rendering MDP Layout inside wrappers * [MacOS] Re write the MainToolbar handler * [MacOS] Don't use Sierra new extensions so we can run in stable channel * [MacOS] Another way to hide the toolbar (smarter i think) * [MacOS] Fix MDP bug and remove debug color * [Controls] Add HanselForms sample * [MacOS] Fix NRE WebviewRenderer * [MacOS] Fix uneven rows on ListView renderer * [MacOS] Fix NRE on load (can+t find the reason this happens) * [MacOS] Fix uneven rows * [MacOS] Fix header sizing on ListViewRenderer * [Controls] More stuff on HanselForms * [MacOS] Remove warning from ListViewRenderer * [MacOS] Fix PageRenderer bug double init * [MacOS] Don't calculate height if RowHeight is provided * [Controls] More Hanselforms stuff * [MacOS] Once again a new implementation for the NavigationBar, this time using a custom view to support BackgroundColor * [MacOS] Fix build * [MacOS] Refactoring AwesomeBar related controls * Fix build * [MacOS] NavigationBar update background and t test colors * [MacOS] Fix when we remove navigation so it works when the NavigationRenderer wasn't removed from the parent controller like in a TabbedPage * [MacOS] Add support for ListView grouping * [MacOS] Fix image extension method. * [MacOS] Add base Maps project * [MacOS] Export MapRenderer * [MacOS] Add pin click and geocoderbacked for Maps * [MacOS] Add extra binding project for API not in stable. * [MacOS] Add MacOS Maps lib * [MacOS]Fix build on alpha * [MacOS] Remove MacOS Maps extra binding * [UITest] Basic macOS setup * [UITest] Add MacOSApp wrapper implementation * [MacOS] Set AutomationID * [UITests] Add ActionSheetUITests to MacOS UITest * [MacOS] Fix bug on Picker * [UITests] Link basic uitest basefixture and related files * [MacOS] Fix pickers reuse * [UItests] Fix MacOS app path * [UITest] Ignore UItest for appearing on macOS for now * [UITest] Update macOS for 2.0.3 * [UITest] Refactor EnterText MacOS app * [UITest]Fix ViewQuery on MacOS * [UITest]Fix IsEnabled UItest on macOS * [UITest] Implement Enter, mark some tests inconclusive fix others * [MacOS] Implement Entry Completed event * [UITests] Fix UITest for IsVisible, ignore ToolbarItem test for now * [UITests] Fix ISVisible again add extra category * [Controls] Cleanup macOS gallery * [MacOS] Fix Assembly info * [Docs] Fix docs * Fix build * [Nuget] Fix nuspec * [Controls] Link files on MacOS * [Core] Update Forms stack before firing a event saying page was removed, possible breaking change * [MacOS] Implement RemovePage on NavigationPAgeRenderer * [UItest] Ignore some , implement back on MacOS UITest app * [MacOS] Add default back button name (needs to be translated) * [MacOS] Fix dispose * [UITest] Make 29257 work on MacOS * [MacOS] Rename stuff * [MacOS] More renaming and cleanup * [MacOS] Share implementations for iOS * [MacOS] Reuse more IOS extensions * [MacOS] Reuse FontExtensions * [MacOS] Share NativeViewWrapper related stuff * [MAcOS] Share event args and ExportRenderer * [MacOS] Share platform effect * [MacOS] Fix build * [Docs]Fixing docs * [MacOS] Fix ViewCell reuse * [Core] Support ListView CachingStrategy on MacOS * [MacOS] Fix issues with TextCell and ImageCell (we can’t set null to a NSControl value) * [MacOS] Fix MDP child sizing bug [UITest] Query marked by id and text * [MacOS] Comment test related with context actions * [MacOS] Implement missing stuff on ticker * [MacOS] Make sure VisualElemenTracker calls the ticker update * [UITests]Ignore context actions and not possible to test * [MacOS] Fix Grouping bug on Listview * [MacOS] Fix selection on Listview when using grouping * [MacOS] Update navbar when page is popped * [MacOS] Cleanup NavigationBar * [Controls] More info on exceptions * [MacOS] Fix bug animation pop modal * [MacOS] Bring back BackgroundColor of NavigationBar * [MacOS] Fix UITest animation delay * [MacOS] Treat warnings as errors * [MacOS] Center title on toolbar * [Core] Add Platform configuration specific for MacOS * [MacOS] Implement TabbedPage platform specific to handle TabItems on NavigationPage bar * [MacOS] Fix warning * [MacOS] Fix bug on SearchBar color * [MacOS]Fix build * [MacOS] remove extra dll from maps * [Docs] Update docs * [MacOS]Cleanup and refactoring * Revert "[MacOS] remove extra dll from maps" This reverts commit 73b948937001fea3f28449a963d0b94943e07aa0. * [MacOS] Fix wrong refactoring * [MacOS] Remove gallery and uitest project * [MacOS] dix formatting * [MacOS] Remove extra stuff * Merge branch 'master' into macOS-gallery * [MacOS] Fix rebase * [MacOS] Fix TargetPlatform * fix docs * [MacOS] Fix bug on TabbedPageRenderer no title * [MacOS] Remove FormsNSView * [MacOS] Cleanup on dispose on MDP renderer * [MacOS] Update current page when source changes * [MacOS] More cleanup * [MacOS] Make sure we show the previous page when popping a Modal * [MacOS] Fix issue with sizing the Header and visibility, remove for now header renderer reuse * [MacOS] Clean CustomNSTableView * [MacOS] Share LabelRenderer with iOS * [MacOS] Share ResourcesProvider with iOS * [MAcoS] Share VisualElementPackager with iOS * [MacOS] Share ViewRenderer with iOS * [MacOS] Merge with VisualElementTracker from iOS * [MacOS] Merge with EventTracker from iOS * [MacOS] Merge with VisualElementRenderer of iOS * [MacOS] Make sure we always have a layer * [MacOS] Fix Tracker merge with iOS version * [MacOS] Fix bug with tabbed page on modal without navigation * [Core] Rever change on core * [MacOS] Clear renderers before setting them MDP * [MacOS] Update tabbedPage ContainerArea * [MacOS] Fix ListViewRenderer * [MacOS] Make sure we don’t pass null to TextField string value * [MacOS] Support for multiple clicks in same selected item on NSTableView * [MacOS] Support Focus on EntryRenderer * [MacOS] Fix index bug on TablevIewDataSource * [MacOS] Fix SelectedItem TableViewDataSource * [Nuget] Add Mac to Maps nuspec * [Nuget]Fix path * [macOS] Fixed Tab NSImage crash in TabbedPageRenderer (#705) * [macOS] Fixed Tab NSImage crash in TabbedPageRenderer * Coding Style * Coding Style * [MacOS] Fix previous merge with master * [MacOS] Possible simple fix for click on views overlapping * [MacOS] Rename to IsOnViewCell * [MacOS] Cleanup, Address feedback from Samantha’s review
2017-03-24[iOS/Critical] Fix ListView memory leaks (#524)adrianknight893-49/+134
* fix memory leaks added sample code changed page name Changed page title add screen instructions fix copy paste error change subview dispose logic Fix context action memory leak add sample code change custom page names Revert "change custom page names" This reverts commit 7aaab2625d9526080ca5c51c02e909f09ee3f610. changed class names changes UI test for 32206 update ui test fix whitespace UITests done * run UI tests on iOS only * fix code style * dispose prototype * fix child renderer issue * add null check
2017-03-24Reduce overhead of pushing existing navigation stack (#672)E.Z. Hart1-2/+2
* Make StackCopy less awkward * Clean up comment * Update docs * Update docs * Replace SecondToLast with an arbitrarily deep Peek method * Update docs * Handle negative depths in Peek()
2017-03-24[iOS] Fix NRE when re-adding header/footer (#702)Jimmy Garrido1-0/+4
2017-03-22[iOS/Win] Label will not unnecessarily expand (#827)Samantha Houts1-6/+21
* Add repro for 53362 * [iOS] Label will not unnecessarily expand * [Win] Label will not unnecessarily expand
2017-03-18Adopt iOS status bar visibility defaults (#822)kingces951-6/+1
2017-03-14Bug 51536, initial iOS cell layout is incorrect when cell has context ↵Vitaly Knyazev1-1/+2
actions … (#787) * Bug 51536, initial height is incorrect when cell has context actions or ListView is in recycle mode * Improved fix for iOS uneven height cell layout * Fixed indentation and added test case for issue 44525 * Fixed indentation for test case * Added 1px room, this will fix Bugzilla31330 test, renamed test case to 51536 * Updated shared project file
2017-03-10[iOS] Label should not return infinite widthSamantha Houts1-2/+3
2017-03-09Fix for nullreferenceexception when a TabbedPage is rendered without a set ↵Joris Vergeer1-1/+5
CurrentPage (#669)
2017-01-30[iOS] Remove "Enabled" usage on AdjustsFontSizeToFitWidth (#696)Paul DiPietro1-1/+1
* [iOS] Remove "Enabled" usage on AdjustsFontSizeToFitWidth * Update docs
2017-01-30[iOS] redraw Frame on CornerRadius changed (#697)Stephane Delcroix1-2/+4
2017-01-12[C] new OnPlatform mechanism (#658)Stephane Delcroix1-1/+2
* [C] Obsolete TargetPlatform * [Xaml] support and test the new syntax * blind fix windows platforms
2017-01-12[iOS] Labels with WordWrap or CharacterWrap will Expand (#529)Samantha Houts1-2/+2
* Add reproduction for 28650 * [iOS] Expand the label to fill width if wrapping Also, simplify the `if` statement, since `LineBreakMode` is not a flags enum and the only excluded member was `None`. * Test two small labels next to each other in horizontal layout
2017-01-12fix bug-39359 (#599)fengrui1-0/+7
UriImageSource does cache failed HTTP responses
2017-01-12[iOS] Fix child view position when the Navigation Bar is translucent (#659)Sandro Cavazzoni1-2/+8
2017-01-10iOS and Android timers should be runnable from any thread and execute… (#374)adrianknight891-49/+7
* iOS and Android timers should be runnable from any thread and executed on the main thread * removing unused Timer class declarations with minor refactoring efforts * iOS and Android timers should be runnable from any thread and executed on the main thread * removing bak file * switch to v7 * add test code
2017-01-09[iOS] Register effects for ScrollView and WebView (#641)adrianknight899-17/+36
* fix effects * move effect utilities to core * use core class * move to internals namespace * remove IEffectControlProvider from IVisualElementRenderer
2017-01-04[iOS] Platform specifics for controlling Picker SelectedIndex change ↵adrianknight891-1/+4
behavior (#540) * picker selected index could change when picker view is dismissed * use enum
2017-01-03Allow subscriber to be collected if MessagingCenter is the only reference to ↵E.Z. Hart1-1/+3
it (#617) * Repro * Make messaging center callbacks weak references * Preserve attribute * Fix test method name * Watch for collection of actual delegate target instead of wrapper delegate * Preserve the original platform instance when changing main page * Better tests for lambda situations * Update tests, make callback target a weakreference if it's the subscriber * Ensure old Platform MessagingCenter subs are gone before creating new Platform
2017-01-03[iOS] Prevent multiple ListView cells from being swiped simultaneously (#578)adrianknight891-4/+27
* disable multiple cell swipe * add sample code * refactored * convert to weakreference * remove null setting * change weakreference setting place * remove if * revert isopen changes * add instructions
2016-12-30[iOS] Change keyboard type while keyboard is visible (#443)adrianknight892-0/+2
* Change keyboard while changing text * add sample code
2016-12-28fix nre when changing content in datepickerselected (#494)adrianknight891-1/+1
2016-12-22[iOS] Entry should not pass a newline to the next responder (#397)adrianknight891-1/+1
* UITextField should not return so that the next field does not get passed a newline * Added code sample
2016-12-14Removing now non-existent IsiOS8OrNewer checkE.Z. Hart1-1/+1
2016-12-14Deprecate versions of iOS older than 8 (#630)Jason Smith17-247/+46
2016-12-13Disable using EstimatedRowHeight for uneven rows with known heights (#454)E.Z. Hart1-11/+43
2016-12-09Revert "Deprecate iOS 8 and earlier (#626)"Jason Smith17-50/+257
This reverts commit c4b1c88f506ebf76a2a40f005b45ec9b24e46e1a.
2016-12-09Deprecate iOS 8 and earlier (#626)Paul DiPietro17-257/+50
2016-12-07Fix for 45743 which works with iOS 8 (#616)E.Z. Hart1-66/+8
* Explicitly set window bounds when presenting alert * Remove unused methods
2016-12-04dispose tap gesture (#601)adrianknight891-1/+1
2016-12-02Restore old Alert/ActionSheet method for iOS 8 (#595)E.Z. Hart1-28/+102
* Rename action sheet overload * Restoring iOS8-compatible alert/actionsheet handling
2016-11-30[iOS] Avoid using DrawRect on base VisualElementRenderer (#570)Rui Marinho2-6/+7
* [Controls] Add retro for Bugzilla 48158 * [iOS] Avoid using DrawRect as this will make some properties not being applied to the layer * [iOS] Make sure BoxRenderer calls base LayoutSubviews * [iOS] Better fix for adding the Blur effect and avoid override draw’s * [Controls] Remove extra nunit category
2016-11-22Fix broken alerts for iPad (#549)beta-2.3.4-pre1E.Z. Hart1-15/+16
* Fix broken alerts for iPad * Remove unnecessary parameter and add null check * Dropping test limit to 10 so we can get iOS passing
2016-11-18[iOS] Revert changes in popping navigation (#547)Rui Marinho1-27/+44
* [iOS] Revert changes in popping navigation * [iOS] Remove unified if
2016-11-18Have PresentAlert hide new window when alert is dismissed (#543)E.Z. Hart1-48/+82
2016-11-18Platform specifics naming adjustments (#526)Paul DiPietro1-1/+1
2016-11-16Run multiple UI tests without restarting ControlGallery (#539)E.Z. Hart2-2/+2
* Allow UI tests to bypass "manual" navigation to isses pages * Add missing Preserve attribute * Make Issue198 test work with direct navigation * Remove empty UI tests * Fix error handling for iOS * Use navigation which works for subsequent TestNavigationPages on iOS * Fix race condition in 39530 test Remove master page nesting when doing direct nav for UI tests * Set up and run a single instance of Control Gallery for UI tests * Force NavigateToIssue to wait for main page appearing to deal with iOS timing * Move remaining UI tests into Issues namespace * Change the connection check URL so it'll work on iOS * Make Appearing Gallery tests work without restarting app * Prevent ContextActions tests from stepping on each other * Make context menu test more robust * Move ButtonExtensions back to Controls namespace * Have test 774 dismiss the action sheet before ending * Update UITest package to 2.0.0 stable * Make 2948 restore orientation when it's done * Null check on PageController before calling SendDisappearing * Adding a wait for the root page in the core tests * Add consecutive tests reset to prevent memory slog on older iOS devices
2016-11-16[W] Support 0 as valid BorderWidth (#537)Stephane Delcroix1-1/+1
2016-11-16[iOS] Update Editor text from autocorrect when losing focus (#535)Paul DiPietro1-0/+3
2016-11-16Set TabBarItem properly (#530)adrianknight891-23/+24
2016-11-16[iOS] Add Platform Specific option to not adjust the status bar text color ↵Samantha Houts1-7/+9
based on the luminosity of the NavigationBar text color (#517) * Add reproduction for 37431 * [Core] Add iOS PS StatusBarTextColorMode * [iOS] Implement StatusBarTextColorMode on NavPage * Add reproduction for 44777 * Add instructions to 44777 repro * Update docs
2016-11-16[C] Use a Binding for ItemsSource object selectionStephane Delcroix1-2/+3
2016-11-16Use static method syntax to prevent mono compiler error (#538)E.Z. Hart1-17/+4
2016-11-16[iOS] Add Platform Specific features for ↵Paul DiPietro7-2/+144
PrefersStatusBarHidden/UIStatusBarAnimation (#463) * [iOS] Add Platform Specific features for PrefersStatusBarHidden/UIStatusBarAnimation * Update docs
2016-11-16[iOS] Fix AccessoryView covered by section index list (#493)Jimmy Garrido1-5/+2
* [iOS] Fix AccessoryView below section index list * Add UITest
2016-11-15[iOS] Text should not overflow Entry if it can't fit inside the bounds (#400)adrianknight891-0/+1
* Entry subviews should clip to parent bounds * Adding sample code * Adding sample code * Adding sample code * remove sample * remove sample * add back the sample code * add back missing include * use spaces instead of tabs