Skip to content

Commit

Permalink
Force a table reload (just the view not the actual data retrieval) wh…
Browse files Browse the repository at this point in the history
…enever the view binary data as hex option is toggled. Fixes #1875.
  • Loading branch information
stuconnolly committed Jan 20, 2014
1 parent 2d299f2 commit 0d1e518
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 31 deletions.
76 changes: 46 additions & 30 deletions Source/SPDatabaseDocument.m
Expand Up @@ -119,14 +119,18 @@
static NSString *SPAlterDatabaseAction = @"SPAlterDatabase";

@interface SPDatabaseDocument ()

- (void)_addDatabase;
- (void)_alterDatabase;

#ifndef SP_CODA /* method decls */
- (void)_copyDatabase;
#endif

- (void)_renameDatabase;
- (void)_removeDatabase;
- (void)_selectDatabaseAndItem:(NSDictionary *)selectionDetails;

#ifndef SP_CODA /* method decls */
- (void)_processDatabaseChangedBundleTriggerActions;
#endif
Expand Down Expand Up @@ -166,9 +170,12 @@ @implementation SPDatabaseDocument
@synthesize structureContentSwitcher;
#endif

#pragma mark -

- (id)init
{
if ((self = [super init])) {

#ifndef SP_CODA /* init ivars */

_mainNibLoaded = NO;
Expand All @@ -179,6 +186,7 @@ - (id)init
_supportsEncoding = NO;
databaseListIsSelectable = YES;
_queryMode = SPInterfaceQueryMode;

chooseDatabaseButton = nil;
#ifndef SP_CODA /* init ivars */
chooseDatabaseToolbarItem = nil;
Expand All @@ -200,6 +208,7 @@ - (id)init
mySQLVersion = nil;
allDatabases = nil;
allSystemDatabases = nil;

#ifndef SP_CODA /* init ivars */
mainToolbar = nil;
parentWindow = nil;
Expand All @@ -225,6 +234,7 @@ - (id)init
#endif

titleAccessoryView = nil;

#ifndef SP_CODA /* init ivars */
taskProgressWindow = nil;
taskDisplayIsIndeterminate = YES;
Expand All @@ -241,6 +251,7 @@ - (id)init
addDatabaseCharsetHelper = nil;

keyChainID = nil;

#ifndef SP_CODA /* init ivars */
statusValues = nil;
printThread = nil;
Expand All @@ -262,34 +273,11 @@ - (id)init
return self;
}

#ifdef SP_CODA /* glue */
- (SPConnectionController*)createConnectionController
{
// Set up the connection controller
connectionController = [[SPConnectionController alloc] initWithDocument:self];

// Set the connection controller's delegate
[connectionController setDelegate:self];

return connectionController;
}

- (void)setTableSourceInstance:(SPTableStructure*)source
{
tableSourceInstance = source;
}

- (void)setTableContentInstance:(SPTableContent*)content
{
tableContentInstance = content;
}

#endif

- (void)awakeFromNib
{
#ifndef SP_CODA
if (_mainNibLoaded) return;

_mainNibLoaded = YES;

// Set up the toolbar
Expand All @@ -300,7 +288,7 @@ - (void)awakeFromNib

// Set up the connection controller
connectionController = [[SPConnectionController alloc] initWithDocument:self];

// Set the connection controller's delegate
[connectionController setDelegate:self];

Expand All @@ -317,13 +305,15 @@ - (void)awakeFromNib
[prefs addObserver:[SPQueryController sharedQueryController] forKeyPath:SPUseMonospacedFonts options:NSKeyValueObservingOptionNew context:NULL];

[prefs addObserver:tableContentInstance forKeyPath:SPGlobalResultTableFont options:NSKeyValueObservingOptionNew context:NULL];
[prefs addObserver:tableContentInstance forKeyPath:SPDisplayBinaryDataAsHex options:NSKeyValueObservingOptionNew context:NULL];

// Register observers for when the logging preference changes
[prefs addObserver:[SPQueryController sharedQueryController] forKeyPath:SPConsoleEnableLogging options:NSKeyValueObservingOptionNew context:NULL];

// Register a second observer for when the logging preference changes so we can tell the current connection about it
[prefs addObserver:self forKeyPath:SPConsoleEnableLogging options:NSKeyValueObservingOptionNew context:NULL];
#endif

// Register for notifications
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willPerformQuery:)
name:@"SMySQLQueryWillBePerformed" object:self];
Expand All @@ -341,7 +331,7 @@ - (void)awakeFromNib

// Hide the activity list
[self setActivityPaneHidden:[NSNumber numberWithInteger:1]];

// Load additional nibs, keeping track of the top-level objects to allow correct release
NSArray *connectionDialogTopLevelObjects = nil;
NSNib *nibLoader = [[NSNib alloc] initWithNibNamed:@"ConnectionErrorDialog" bundle:[NSBundle mainBundle]];
Expand All @@ -353,7 +343,7 @@ - (void)awakeFromNib
[nibLoader release];

// SP_CODA can't use progress indicator because of BWToolkit dependency

NSArray *progressIndicatorLayerTopLevelObjects = nil;
nibLoader = [[NSNib alloc] initWithNibNamed:@"ProgressIndicatorLayer" bundle:[NSBundle mainBundle]];
if (![nibLoader instantiateNibWithOwner:self topLevelObjects:&progressIndicatorLayerTopLevelObjects]) {
Expand All @@ -366,7 +356,7 @@ - (void)awakeFromNib
// Retain the icon accessory view to allow it to be added and removed from windows
[titleAccessoryView retain];
#endif

#ifndef SP_CODA
// Set up the progress indicator child window and layer - change indicator color and size
[taskProgressIndicator setForeColor:[NSColor whiteColor]];
Expand All @@ -385,11 +375,37 @@ - (void)awakeFromNib

[self updateTitlebarStatusVisibilityForcingHide:NO];
#endif

alterDatabaseCharsetHelper = [[SPCharsetCollationHelper alloc] initWithCharsetButton:databaseAlterEncodingButton CollationButton:databaseAlterCollationButton];
addDatabaseCharsetHelper = [[SPCharsetCollationHelper alloc] initWithCharsetButton:databaseEncodingButton CollationButton:databaseCollationButton];
addDatabaseCharsetHelper = [[SPCharsetCollationHelper alloc] initWithCharsetButton:databaseEncodingButton CollationButton:databaseCollationButton];
}

#pragma mark -

#ifdef SP_CODA /* glue */
- (SPConnectionController*)createConnectionController
{
// Set up the connection controller
connectionController = [[SPConnectionController alloc] initWithDocument:self];

// Set the connection controller's delegate
[connectionController setDelegate:self];

return connectionController;
}

- (void)setTableSourceInstance:(SPTableStructure*)source
{
tableSourceInstance = source;
}

- (void)setTableContentInstance:(SPTableContent*)content
{
tableContentInstance = content;
}

#endif

#ifndef SP_CODA /* password sheet and history navigation */
/**
* Set the return code for entering the encryption passowrd sheet
Expand Down
7 changes: 6 additions & 1 deletion Source/SPTableContent.m
Expand Up @@ -4191,10 +4191,15 @@ - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(N
// Table font preference changed
else if ([keyPath isEqualToString:SPGlobalResultTableFont]) {
NSFont *tableFont = [NSUnarchiver unarchiveObjectWithData:[change objectForKey:NSKeyValueChangeNewKey]];
[tableContentView setRowHeight:2.0f+NSSizeToCGSize([@"{ǞṶḹÜ∑zgyf" sizeWithAttributes:[NSDictionary dictionaryWithObject:tableFont forKey:NSFontAttributeName]]).height];

[tableContentView setRowHeight:2.0f + NSSizeToCGSize([@"{ǞṶḹÜ∑zgyf" sizeWithAttributes:[NSDictionary dictionaryWithObject:tableFont forKey:NSFontAttributeName]]).height];
[tableContentView setFont:tableFont];
[tableContentView reloadData];
}
// Display binary data as Hex
else if ([keyPath isEqualToString:SPDisplayBinaryDataAsHex] && [tableContentView numberOfRows] > 0) {
[tableContentView reloadData];
}
#endif
}

Expand Down

0 comments on commit 0d1e518

Please sign in to comment.