summaryrefslogtreecommitdiff
path: root/tikzit/src
diff options
context:
space:
mode:
Diffstat (limited to 'tikzit/src')
-rw-r--r--tikzit/src/gtk/GraphRenderer.m5
-rw-r--r--tikzit/src/gtk/Surface.h3
-rw-r--r--tikzit/src/gtk/WidgetSurface.m24
3 files changed, 31 insertions, 1 deletions
diff --git a/tikzit/src/gtk/GraphRenderer.m b/tikzit/src/gtk/GraphRenderer.m
index 76fe551..4278551 100644
--- a/tikzit/src/gtk/GraphRenderer.m
+++ b/tikzit/src/gtk/GraphRenderer.m
@@ -91,8 +91,11 @@ void graph_renderer_expose_event(GtkWidget *widget, GdkEventExpose *event);
[self invalidateGraph];
}
-- (void) renderWithContext:(id<RenderContext>)context onSurface:(id<Surface>)surface {
+- (void) renderWithContext:(id<RenderContext>)context onSurface:(id<Surface>)s {
[self renderWithContext:context];
+ if ([s hasFocus]) {
+ [s renderFocus];
+ }
}
- (void) renderWithContext:(id<RenderContext>)context {
diff --git a/tikzit/src/gtk/Surface.h b/tikzit/src/gtk/Surface.h
index b6d8d2e..db4288e 100644
--- a/tikzit/src/gtk/Surface.h
+++ b/tikzit/src/gtk/Surface.h
@@ -99,6 +99,9 @@ typedef enum {
- (void) zoomResetAboutPoint:(NSPoint)p;
- (void) setCursor:(Cursor)c;
+
+- (BOOL) hasFocus;
+- (void) renderFocus;
@end
// vim:ft=objc:ts=8:et:sts=4:sw=4
diff --git a/tikzit/src/gtk/WidgetSurface.m b/tikzit/src/gtk/WidgetSurface.m
index 64adc25..680cf90 100644
--- a/tikzit/src/gtk/WidgetSurface.m
+++ b/tikzit/src/gtk/WidgetSurface.m
@@ -225,6 +225,30 @@ static gboolean scroll_event_cb (GtkWidget *widget, GdkEventScroll *event, Widge
}
}
+- (BOOL) hasFocus {
+ return gtk_widget_has_focus (widget);
+}
+
+- (void) renderFocus {
+ GdkWindow *window = gtk_widget_get_window (widget);
+ if (window) {
+ int width = 0;
+ int height = 0;
+ gdk_drawable_get_size (window, &width, &height);
+ gtk_paint_focus (gtk_widget_get_style (widget),
+ window,
+ GTK_STATE_NORMAL,
+ NULL,
+ widget,
+ NULL,
+ 0,
+ 0,
+ width,
+ height
+ );
+ }
+}
+
- (CGFloat) defaultScale {
return defaultScale;
}