summaryrefslogtreecommitdiff
path: root/source3/utils/regedit_treeview.c
diff options
context:
space:
mode:
authorC. Davis <cd.rattan@gmail.com>2012-08-10 20:05:20 -0700
committerMichael Adam <obnox@samba.org>2013-04-29 13:06:20 +0200
commit58f9e368c8366bba103ae9214638cc4c99fe4caf (patch)
tree71cd6b23a7a47cbb2c26400dc9664734a6d57215 /source3/utils/regedit_treeview.c
parent560003fcd98eb109dd8391c7975aae4ef277604b (diff)
downloadsamba-58f9e368c8366bba103ae9214638cc4c99fe4caf.tar.gz
samba-58f9e368c8366bba103ae9214638cc4c99fe4caf.tar.bz2
samba-58f9e368c8366bba103ae9214638cc4c99fe4caf.zip
regedit: Handle term resizes.
Reviewed-by: Andreas Schneider <asn@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
Diffstat (limited to 'source3/utils/regedit_treeview.c')
-rw-r--r--source3/utils/regedit_treeview.c35
1 files changed, 29 insertions, 6 deletions
diff --git a/source3/utils/regedit_treeview.c b/source3/utils/regedit_treeview.c
index fb6247faac..8d677c8a14 100644
--- a/source3/utils/regedit_treeview.c
+++ b/source3/utils/regedit_treeview.c
@@ -297,6 +297,12 @@ static int tree_view_free(struct tree_view *view)
if (view->empty[0]) {
free_item(view->empty[0]);
}
+ if (view->panel) {
+ del_panel(view->panel);
+ }
+ if (view->window) {
+ delwin(view->window);
+ }
tree_view_free_current_items(view->current_items);
tree_node_free_recursive(view->root);
@@ -304,8 +310,8 @@ static int tree_view_free(struct tree_view *view)
}
struct tree_view *tree_view_new(TALLOC_CTX *ctx, struct tree_node *root,
- WINDOW *orig, int nlines, int ncols,
- int begin_y, int begin_x)
+ int nlines, int ncols, int begin_y,
+ int begin_x)
{
struct tree_view *view;
static const char *dummy = "(empty)";
@@ -321,9 +327,12 @@ struct tree_view *tree_view_new(TALLOC_CTX *ctx, struct tree_node *root,
if (view->empty[0] == NULL) {
goto fail;
}
- view->window = orig;
- view->sub_window = derwin(orig, nlines, ncols, begin_y, begin_x);
- if (view->sub_window == NULL) {
+ view->window = newwin(nlines, ncols, begin_y, begin_x);
+ if (view->window == NULL) {
+ goto fail;
+ }
+ view->panel = new_panel(view->window);
+ if (view->panel == NULL) {
goto fail;
}
view->root = root;
@@ -334,7 +343,6 @@ struct tree_view *tree_view_new(TALLOC_CTX *ctx, struct tree_node *root,
}
set_menu_format(view->menu, nlines, 1);
set_menu_win(view->menu, view->window);
- set_menu_sub(view->menu, view->sub_window);
menu_opts_off(view->menu, O_SHOWDESC);
set_menu_mark(view->menu, "* ");
@@ -348,6 +356,21 @@ fail:
return NULL;
}
+void tree_view_resize(struct tree_view *view, int nlines, int ncols,
+ int begin_y, int begin_x)
+{
+ WINDOW *nwin;
+
+ unpost_menu(view->menu);
+ nwin = newwin(nlines, ncols, begin_y, begin_x);
+ replace_panel(view->panel, nwin);
+ delwin(view->window);
+ view->window = nwin;
+ set_menu_format(view->menu, nlines, 1);
+ set_menu_win(view->menu, view->window);
+ post_menu(view->menu);
+}
+
static void print_path_recursive(WINDOW *label, struct tree_node *node)
{
if (node->parent)