2005-12-01 12:32:45 +00:00
|
|
|
|
--- mc-4.6.1a/src/main.c.laf 2005-11-24 16:55:06.000000000 +0100
|
|
|
|
|
+++ mc-4.6.1a/src/main.c 2005-11-24 16:56:27.000000000 +0100
|
2005-11-14 14:40:23 +00:00
|
|
|
|
@@ -270,6 +270,9 @@ int midnight_shutdown = 0;
|
|
|
|
|
/* The user's shell */
|
|
|
|
|
const char *shell = NULL;
|
|
|
|
|
|
|
|
|
|
+/* Is the LANG UTF-8 ? */
|
|
|
|
|
+gboolean is_utf8 = FALSE;
|
|
|
|
|
+
|
|
|
|
|
/* The xterm title */
|
|
|
|
|
char *xterm_title_str = NULL;
|
|
|
|
|
|
2005-12-01 12:32:45 +00:00
|
|
|
|
@@ -2167,6 +2170,16 @@ main (int argc, char *argv[])
|
2005-11-14 14:40:23 +00:00
|
|
|
|
/* if on, it displays the information that files have been moved to ~/.mc */
|
|
|
|
|
int show_change_notice = 0;
|
|
|
|
|
|
|
|
|
|
+ /* Check whether we have UTF-8 locale */
|
|
|
|
|
+ char *lang = getenv("LANG");
|
2005-12-01 12:32:45 +00:00
|
|
|
|
+ size_t len = 0;
|
|
|
|
|
+
|
|
|
|
|
+ if ( lang )
|
|
|
|
|
+ len = strlen(lang);
|
2005-11-14 14:40:23 +00:00
|
|
|
|
+
|
|
|
|
|
+ if ( len >= 5 && !strcasecmp(&lang[len-5],"UTF-8") )
|
|
|
|
|
+ is_utf8 = TRUE;
|
|
|
|
|
+
|
|
|
|
|
/* We had LC_CTYPE before, LC_ALL includs LC_TYPE as well */
|
|
|
|
|
setlocale (LC_ALL, "");
|
|
|
|
|
bindtextdomain ("mc", LOCALEDIR);
|
2005-12-01 12:32:45 +00:00
|
|
|
|
--- mc-4.6.1a/src/main.h.laf 2005-11-24 16:55:06.000000000 +0100
|
|
|
|
|
+++ mc-4.6.1a/src/main.h 2005-11-24 16:55:06.000000000 +0100
|
2005-11-14 14:40:23 +00:00
|
|
|
|
@@ -67,6 +67,7 @@ extern int alternate_plus_minus;
|
|
|
|
|
extern int only_leading_plus_minus;
|
|
|
|
|
extern int output_starts_shell;
|
|
|
|
|
extern int midnight_shutdown;
|
|
|
|
|
+extern gboolean is_utf8;
|
|
|
|
|
extern char *xterm_title_str;
|
|
|
|
|
extern char cmd_buf [512];
|
|
|
|
|
extern const char *shell;
|
2005-12-01 12:32:45 +00:00
|
|
|
|
--- mc-4.6.1a/src/widget.c.laf 2005-11-24 16:55:06.000000000 +0100
|
|
|
|
|
+++ mc-4.6.1a/src/widget.c 2005-11-24 16:55:06.000000000 +0100
|
2005-11-14 14:40:23 +00:00
|
|
|
|
@@ -1948,52 +1948,86 @@ input_new (int y, int x, int color, int
|
2005-11-08 12:52:55 +00:00
|
|
|
|
return in;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
|
-/* Listbox widget */
|
|
|
|
|
-
|
|
|
|
|
-/* Should draw the scrollbar, but currently draws only
|
|
|
|
|
- * indications that there is more information
|
|
|
|
|
- */
|
|
|
|
|
-static int listbox_cdiff (WLEntry *s, WLEntry *e);
|
|
|
|
|
+/* Vertical scrollbar widget */
|
|
|
|
|
|
|
|
|
|
-static void
|
|
|
|
|
-listbox_drawscroll (WListbox *l)
|
|
|
|
|
+void
|
|
|
|
|
+vscrollbar (Widget widget, int height, int width, int tpad, int bpad,
|
|
|
|
|
+ int selected, int count, gboolean color)
|
|
|
|
|
{
|
|
|
|
|
int line;
|
|
|
|
|
- int i, top;
|
|
|
|
|
- int max_line = l->height-1;
|
|
|
|
|
-
|
|
|
|
|
+ int i;
|
|
|
|
|
+
|
|
|
|
|
/* Are we at the top? */
|
|
|
|
|
- widget_move (&l->widget, 0, l->width);
|
|
|
|
|
- if (l->list == l->top)
|
|
|
|
|
- one_vline ();
|
|
|
|
|
+ widget_move (&widget, tpad, width);
|
|
|
|
|
+#ifndef UTF8
|
|
|
|
|
+ if (!selected)
|
|
|
|
|
+ one_vline ();
|
|
|
|
|
else
|
|
|
|
|
- addch ('^');
|
|
|
|
|
+ addch ('^');
|
|
|
|
|
+#else
|
|
|
|
|
+ if (color) attrset (MARKED_COLOR);
|
2005-11-14 14:40:23 +00:00
|
|
|
|
+ if (is_utf8)
|
|
|
|
|
+ SLsmg_write_string("▲");
|
|
|
|
|
+ else
|
|
|
|
|
+ addch ('^');
|
2005-11-08 12:52:55 +00:00
|
|
|
|
+ if (color) attrset (NORMAL_COLOR);
|
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
|
/* Are we at the bottom? */
|
|
|
|
|
- widget_move (&l->widget, max_line, l->width);
|
|
|
|
|
- top = listbox_cdiff (l->list, l->top);
|
|
|
|
|
- if ((top + l->height == l->count) || l->height >= l->count)
|
|
|
|
|
- one_vline ();
|
|
|
|
|
+ widget_move (&widget, height-1-bpad, width);
|
|
|
|
|
+#ifndef UTF8
|
|
|
|
|
+ if (selected == count-1)
|
|
|
|
|
+ one_vline ();
|
2005-11-14 14:40:23 +00:00
|
|
|
|
+ else
|
2005-11-08 12:52:55 +00:00
|
|
|
|
+ addch ('v');
|
|
|
|
|
+#else
|
|
|
|
|
+ if (color) attrset (MARKED_COLOR);
|
2005-11-14 14:40:23 +00:00
|
|
|
|
+ if (is_utf8)
|
|
|
|
|
+ SLsmg_write_string("▼");
|
|
|
|
|
else
|
|
|
|
|
- addch ('v');
|
|
|
|
|
+ addch('v');
|
2005-11-08 12:52:55 +00:00
|
|
|
|
+ if (color) attrset (NORMAL_COLOR);
|
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
|
/* Now draw the nice relative pointer */
|
|
|
|
|
- if (l->count)
|
|
|
|
|
- line = 1+ ((l->pos * (l->height-2)) / l->count);
|
|
|
|
|
+ if (count > 1)
|
|
|
|
|
+ line = tpad + 1 + ((selected * (height-3-tpad-bpad)) / (count-1));
|
|
|
|
|
else
|
|
|
|
|
- line = 0;
|
|
|
|
|
-
|
|
|
|
|
- for (i = 1; i < max_line; i++){
|
|
|
|
|
- widget_move (&l->widget, i, l->width);
|
|
|
|
|
- if (i != line)
|
|
|
|
|
- one_vline ();
|
|
|
|
|
- else
|
|
|
|
|
- addch ('*');
|
|
|
|
|
+ line = 0;
|
|
|
|
|
+
|
|
|
|
|
+ for (i = tpad + 1; i < height-1-bpad; i++){
|
|
|
|
|
+ widget_move (&widget, i, width);
|
|
|
|
|
+ if (i != line)
|
|
|
|
|
+#ifndef UTF8
|
|
|
|
|
+ one_vline ();
|
|
|
|
|
+ else
|
|
|
|
|
+ addch ('*');
|
|
|
|
|
+#else
|
2005-11-14 14:40:23 +00:00
|
|
|
|
+ if (is_utf8)
|
|
|
|
|
+ SLsmg_write_string("▒");
|
|
|
|
|
+ else
|
|
|
|
|
+ one_vline();
|
2005-11-08 12:52:55 +00:00
|
|
|
|
+ else {
|
|
|
|
|
+ if (color) attrset (MARKED_COLOR);
|
2005-11-14 14:40:23 +00:00
|
|
|
|
+ if (is_utf8)
|
|
|
|
|
+ SLsmg_write_string("●");
|
|
|
|
|
+ else
|
|
|
|
|
+ addch('*');
|
2005-11-08 12:52:55 +00:00
|
|
|
|
+ if (color) attrset (NORMAL_COLOR);
|
|
|
|
|
+ }
|
|
|
|
|
+#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
-
|
|
|
|
|
-static void
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+/* Listbox widget */
|
|
|
|
|
+
|
|
|
|
|
+/* Should draw the scrollbar, but currently draws only
|
|
|
|
|
+ * indications that there is more information
|
|
|
|
|
+ */
|
|
|
|
|
+static int listbox_cdiff (WLEntry *s, WLEntry *e);
|
|
|
|
|
+
|
|
|
|
|
+void
|
|
|
|
|
listbox_draw (WListbox *l, int focused)
|
|
|
|
|
{
|
|
|
|
|
WLEntry *e;
|
2005-11-14 14:40:23 +00:00
|
|
|
|
@@ -2034,7 +2068,7 @@ listbox_draw (WListbox *l, int focused)
|
2005-11-08 12:52:55 +00:00
|
|
|
|
if (!l->scrollbar)
|
|
|
|
|
return;
|
|
|
|
|
attrset (normalc);
|
|
|
|
|
- listbox_drawscroll (l);
|
|
|
|
|
+ vscrollbar (l->widget, l->height, l->width, 0, 0, l->pos, l->count, FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Returns the number of items between s and e,
|
2005-12-01 12:32:45 +00:00
|
|
|
|
--- mc-4.6.1a/src/screen.c.laf 2005-11-24 16:55:06.000000000 +0100
|
|
|
|
|
+++ mc-4.6.1a/src/screen.c 2005-11-24 16:55:06.000000000 +0100
|
2005-11-14 14:40:23 +00:00
|
|
|
|
@@ -888,6 +888,9 @@ show_dir (WPanel *panel)
|
2005-11-08 12:52:55 +00:00
|
|
|
|
}
|
|
|
|
|
#endif /* HAVE_SLANG */
|
|
|
|
|
|
|
|
|
|
+ vscrollbar (panel->widget, panel->widget.lines, panel->widget.cols-1, 2, 2,
|
|
|
|
|
+ panel->selected, panel->count, TRUE);
|
|
|
|
|
+
|
|
|
|
|
if (panel->active)
|
|
|
|
|
attrset (REVERSE_COLOR);
|
|
|
|
|
|
2005-11-14 14:40:23 +00:00
|
|
|
|
@@ -1504,7 +1507,7 @@ use_display_format (WPanel *panel, const
|
2005-11-08 12:52:55 +00:00
|
|
|
|
panel->dirty = 1;
|
|
|
|
|
|
|
|
|
|
/* Status needn't to be split */
|
|
|
|
|
- usable_columns = ((panel->widget.cols-2)/((isstatus)
|
|
|
|
|
+ usable_columns = ((panel->widget.cols-3)/((isstatus)
|
|
|
|
|
? 1
|
|
|
|
|
: (panel->split+1))) - (!isstatus && panel->split);
|
|
|
|
|
|
2005-12-01 12:32:45 +00:00
|
|
|
|
--- mc-4.6.1a/src/widget.h.laf 2005-11-24 16:55:06.000000000 +0100
|
|
|
|
|
+++ mc-4.6.1a/src/widget.h 2005-11-24 16:55:06.000000000 +0100
|
2005-11-08 12:52:55 +00:00
|
|
|
|
@@ -170,6 +170,10 @@ void button_set_text (WButton *b, const
|
|
|
|
|
/* Listbox manager */
|
|
|
|
|
WLEntry *listbox_get_data (WListbox *l, int pos);
|
|
|
|
|
|
|
|
|
|
+/* Vertical scrollbar */
|
|
|
|
|
+void vscrollbar (Widget widget, int height, int width, int tpad, int bpad,
|
|
|
|
|
+ int selected, int count, gboolean color);
|
|
|
|
|
+
|
|
|
|
|
/* search text int listbox entries */
|
|
|
|
|
WLEntry *listbox_search_text (WListbox *l, const char *text);
|
|
|
|
|
void listbox_select_entry (WListbox *l, WLEntry *dest);
|