summaryrefslogtreecommitdiff
path: root/tikzit/src/gtk/Application.m
diff options
context:
space:
mode:
Diffstat (limited to 'tikzit/src/gtk/Application.m')
-rw-r--r--tikzit/src/gtk/Application.m34
1 files changed, 31 insertions, 3 deletions
diff --git a/tikzit/src/gtk/Application.m b/tikzit/src/gtk/Application.m
index 1459355..a7f1824 100644
--- a/tikzit/src/gtk/Application.m
+++ b/tikzit/src/gtk/Application.m
@@ -52,6 +52,11 @@ Application* app = nil;
- (void) windowClosed:(NSNotification*)notification;
- (void) windowGainedFocus:(NSNotification*)notification;
- (void) selectedToolChanged:(NSNotification*)notification;
+- (void) windowDocumentChanged:(NSNotification*)n;
+@end
+
+@interface Application (Private)
+- (void) setActiveWindow:(Window*)window;
@end
@implementation Application
@@ -227,7 +232,9 @@ Application* app = nil;
selector:@selector(windowGainedFocus:)
name:@"WindowGainedFocus"
object:window];
- // FIXME: focus?
+ if ([window hasFocus]) {
+ [self setActiveWindow:window];
+ }
}
- (void) newWindow {
@@ -339,11 +346,12 @@ Application* app = nil;
gtk_main_quit();
}
}
+
- (void) windowGainedFocus:(NSNotification*)notification {
Window *window = [notification object];
- TikzDocument *doc = [window document];
- [propertiesWindow setDocument:doc];
+ [self setActiveWindow:window];
}
+
- (void) selectedToolChanged:(NSNotification*)n {
id<Tool> tool = [[n userInfo] objectForKey:@"tool"];
if (tool != nil)
@@ -351,6 +359,26 @@ Application* app = nil;
else
NSLog(@"nil tool!");
}
+
+- (void) windowDocumentChanged:(NSNotification*)n {
+ [propertiesWindow setDocument:[[n userInfo] objectForKey:@"document"]];
+}
+@end
+
+@implementation Application (Private)
+- (void) setActiveWindow:(Window*)window {
+ [[NSNotificationCenter defaultCenter] removeObserver:self
+ name:@"DocumentChanged"
+ object:nil];
+
+ [propertiesWindow setDocument:[window document]];
+
+ [[NSNotificationCenter defaultCenter]
+ addObserver:self
+ selector:@selector(windowDocumentChanged:)
+ name:@"DocumentChanged"
+ object:window];
+}
@end
// vim:ft=objc:ts=8:et:sts=4:sw=4:foldmethod=marker