From 07cd03452dd576d7943801102a0079e319f1d8b9 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sun, 22 May 2016 14:20:54 -0400 Subject: [PATCH] Implemented non-wrapping multiline entries in GTK+ and started implementing them in OS X. --- darwin/multilineentry.m | 14 ++++++++++++-- unix/multilineentry.c | 16 +++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/darwin/multilineentry.m b/darwin/multilineentry.m index 23e3d5c4..7b248385 100644 --- a/darwin/multilineentry.m +++ b/darwin/multilineentry.m @@ -101,7 +101,7 @@ void uiMultilineEntrySetReadOnly(uiMultilineEntry *e, int readonly) [e->tv setEditable:editable]; } -uiMultilineEntry *uiNewMultilineEntry(void) +static uiMultilineEntry *finishMultilineEntry(BOOL hscroll) { uiMultilineEntry *e; NSFont *font; @@ -110,7 +110,7 @@ uiMultilineEntry *uiNewMultilineEntry(void) e->sv = [[NSScrollView alloc] initWithFrame:NSZeroRect]; // TODO verify against Interface Builder - [e->sv setHasHorizontalScroller:NO]; + [e->sv setHasHorizontalScroller:hscroll]; [e->sv setHasVerticalScroller:YES]; [e->sv setAutohidesScrollers:YES]; [e->sv setBorderType:NSBezelBorder]; @@ -173,6 +173,16 @@ uiMultilineEntry *uiNewMultilineEntry(void) return e; } +uiMultilineEntry *uiNewMultilineEntry(void) +{ + return finishMultilineEntry(NO); +} + +uiMultilineEntry *uiNewNonWrappingMultilineEntry(void) +{ + return finishMultilineEntry(YES); +} + // TODO #if 0 diff --git a/unix/multilineentry.c b/unix/multilineentry.c index bcd56a74..169d129f 100644 --- a/unix/multilineentry.c +++ b/unix/multilineentry.c @@ -81,7 +81,7 @@ void uiMultilineEntrySetReadOnly(uiMultilineEntry *e, int readonly) gtk_text_view_set_editable(e->textview, editable); } -uiMultilineEntry *uiNewMultilineEntry(void) +static uiMultilineEntry *finishMultilineEntry(GtkPolicyType hpolicy, GtkWrapMode wrapMode) { uiMultilineEntry *e; @@ -91,13 +91,13 @@ uiMultilineEntry *uiNewMultilineEntry(void) e->scontainer = GTK_CONTAINER(e->widget); e->sw = GTK_SCROLLED_WINDOW(e->widget); gtk_scrolled_window_set_policy(e->sw, - GTK_POLICY_NEVER, + hpolicy, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_shadow_type(e->sw, GTK_SHADOW_IN); e->textviewWidget = gtk_text_view_new(); e->textview = GTK_TEXT_VIEW(e->textviewWidget); - gtk_text_view_set_wrap_mode(e->textview, GTK_WRAP_WORD); + gtk_text_view_set_wrap_mode(e->textview, wrapMode); gtk_container_add(e->scontainer, e->textviewWidget); // and make the text view visible; only the scrolled window's visibility is controlled by libui @@ -110,3 +110,13 @@ uiMultilineEntry *uiNewMultilineEntry(void) return e; } + +uiMultilineEntry *uiNewMultilineEntry(void) +{ + return finishMultilineEntry(GTK_POLICY_NEVER, GTK_WRAP_WORD); +} + +uiMultilineEntry *uiNewNonWrappingMultilineEntry(void) +{ + return finishMultilineEntry(GTK_POLICY_AUTOMATIC, GTK_WRAP_NONE); +}