Skip to content

Commit 20d6684

Browse files
authored
Merge pull request #3 from Tilka/master
Various small UI changes
2 parents 0c8fa1b + c1391bf commit 20d6684

File tree

2 files changed

+25
-53
lines changed

2 files changed

+25
-53
lines changed

dwarview.glade

+9-22
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<!-- Generated with glade 3.20.0
2+
<!-- Generated with glade 3.22.2
33
44
dwarview - DWARF debug info viewer
55
Copyright (C) 2016-2017 Namhyung Kim
@@ -41,6 +41,9 @@ Author: Namhyung Kim <[email protected]>
4141
<property name="authors">Namhyung Kim</property>
4242
<property name="logo_icon_name">image-missing</property>
4343
<property name="license_type">gpl-2-0</property>
44+
<child type="titlebar">
45+
<placeholder/>
46+
</child>
4447
<child internal-child="vbox">
4548
<object class="GtkBox">
4649
<property name="can_focus">False</property>
@@ -51,19 +54,7 @@ Author: Namhyung Kim <[email protected]>
5154
<property name="can_focus">False</property>
5255
<property name="layout_style">end</property>
5356
<child>
54-
<object class="GtkButton" id="about_ok">
55-
<property name="label">gtk-ok</property>
56-
<property name="visible">True</property>
57-
<property name="can_focus">True</property>
58-
<property name="receives_default">True</property>
59-
<property name="use_stock">True</property>
60-
<signal name="clicked" handler="gtk_widget_hide" object="about" swapped="yes"/>
61-
</object>
62-
<packing>
63-
<property name="expand">True</property>
64-
<property name="fill">True</property>
65-
<property name="position">0</property>
66-
</packing>
57+
<placeholder/>
6758
</child>
6859
</object>
6960
<packing>
@@ -77,9 +68,6 @@ Author: Namhyung Kim <[email protected]>
7768
</child>
7869
</object>
7970
</child>
80-
<child>
81-
<placeholder/>
82-
</child>
8371
</object>
8472
<object class="GtkTreeStore" id="attr_store">
8573
<columns>
@@ -122,6 +110,9 @@ Author: Namhyung Kim <[email protected]>
122110
<property name="default_width">800</property>
123111
<property name="default_height">600</property>
124112
<signal name="delete-event" handler="gtk_main_quit" swapped="no"/>
113+
<child type="titlebar">
114+
<placeholder/>
115+
</child>
125116
<child>
126117
<object class="GtkBox">
127118
<property name="visible">True</property>
@@ -241,8 +232,7 @@ Author: Namhyung Kim <[email protected]>
241232
<property name="model">main_store</property>
242233
<property name="expander_column">die_name</property>
243234
<property name="search_column">2</property>
244-
<property name="activate_on_single_click">True</property>
245-
<signal name="button-press-event" handler="on-button-press" swapped="no"/>
235+
<signal name="cursor-changed" handler="on-cursor-changed" object="attr_view" swapped="no"/>
246236
<signal name="row-activated" handler="on-row-activated" object="attr_view" swapped="no"/>
247237
<child internal-child="selection">
248238
<object class="GtkTreeSelection"/>
@@ -645,8 +635,5 @@ options
645635
</child>
646636
</object>
647637
</child>
648-
<child type="titlebar">
649-
<placeholder/>
650-
</child>
651638
</object>
652639
</interface>

main.c

+16-31
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,11 @@ static int open_dwarf_file(char *path)
145145

146146
static void close_dwarf_file(void)
147147
{
148+
if (dwarf == NULL)
149+
return;
150+
148151
dwarf_end(dwarf);
152+
dwarf = NULL;
149153

150154
gtk_tree_store_clear(arg->main_store);
151155
gtk_tree_store_clear(arg->attr_store);
@@ -176,7 +180,6 @@ static void close_dwarf_file(void)
176180
}
177181

178182
g_free(arg->filename);
179-
180183
g_free(arg);
181184
}
182185

@@ -580,15 +583,15 @@ static int attr_callback(Dwarf_Attribute *attr, void *_arg)
580583
if (name == DW_AT_decl_file || name == DW_AT_call_file)
581584
val_str = print_file_name(arg->diep, raw_value);
582585
else if (name == DW_AT_decl_line || name == DW_AT_call_line)
583-
val_str = g_strdup_printf("Line %u", raw_value);
586+
val_str = g_strdup_printf("Line %lu", raw_value);
584587
else if (name == DW_AT_inline)
585588
val_str = g_strdup(dwarview_inline_name(raw_value));
586589
else if (name == DW_AT_ranges)
587590
val_str = print_addr_ranges(arg->diep);
588591
else if (name == DW_AT_language)
589592
val_str = g_strdup(dwarview_language_name(raw_value));
590593
else
591-
val_str = g_strdup_printf("%#x", raw_value);
594+
val_str = g_strdup_printf("%#lx", raw_value);
592595
break;
593596
case DW_FORM_block1:
594597
case DW_FORM_block2:
@@ -605,7 +608,7 @@ static int attr_callback(Dwarf_Attribute *attr, void *_arg)
605608
case DW_FORM_addr:
606609
dwarf_formaddr(attr, &addr);
607610
raw_value = addr;
608-
val_str = g_strdup_printf("%#x", raw_value);
611+
val_str = g_strdup_printf("%#lx", raw_value);
609612
break;
610613
case DW_FORM_ref1:
611614
case DW_FORM_ref2:
@@ -644,8 +647,7 @@ static int attr_callback(Dwarf_Attribute *attr, void *_arg)
644647
return DWARF_CB_OK;
645648
}
646649

647-
static void on_row_activated(GtkTreeView *view, GtkTreePath *path,
648-
GtkTreeViewColumn *col, gpointer data)
650+
static void on_cursor_changed(GtkTreeView *view, gpointer data)
649651
{
650652
GtkTreeView *attr_view = data;
651653
GtkTreeModel *main_model = gtk_tree_view_get_model(view);
@@ -660,7 +662,8 @@ static void on_row_activated(GtkTreeView *view, GtkTreePath *path,
660662
};
661663
char buf[32];
662664

663-
gtk_tree_model_get_iter(main_model, &iter, path);
665+
GtkTreeSelection *selection = gtk_tree_view_get_selection(view);
666+
gtk_tree_selection_get_selected(selection, NULL, &iter);
664667
gtk_tree_model_get_value(main_model, &iter, 0, &val);
665668
off = strtoul(g_value_get_string(&val), NULL, 0);
666669
g_value_unset(&val);
@@ -675,26 +678,14 @@ static void on_row_activated(GtkTreeView *view, GtkTreePath *path,
675678
dwarf_getattrs(&die, attr_callback, &arg, 0);
676679
}
677680

678-
static gboolean on_button_press(GtkWidget *widget, GdkEvent *event, gpointer data)
681+
static void on_row_activated(GtkTreeView *view, GtkTreePath *path,
682+
GtkTreeViewColumn *column, gpointer user_data)
679683
{
680-
GtkTreeView *view = GTK_TREE_VIEW(widget);
681-
GtkTreePath *path = NULL;
682-
bool expanded;
683-
684-
/* double-click to toggle expand/collapse */
685-
if (event->button.type != GDK_2BUTTON_PRESS)
686-
return FALSE;
687-
688-
gtk_tree_view_get_cursor(view, &path, NULL);
689-
690-
expanded = gtk_tree_view_row_expanded(view, path);
684+
bool expanded = gtk_tree_view_row_expanded(view, path);
691685
if (expanded)
692686
gtk_tree_view_collapse_row(view, path);
693687
else
694688
gtk_tree_view_expand_row(view, path, FALSE);
695-
696-
gtk_tree_path_free(path);
697-
return TRUE;
698689
}
699690

700691
#define MAX_SEARCH_COUNT 1000
@@ -928,9 +919,6 @@ static void on_file_open(GtkMenuItem *menu, gpointer *window)
928919
GtkFileChooserAction action = GTK_FILE_CHOOSER_ACTION_OPEN;
929920
GtkFileChooser *chooser;
930921

931-
if (dwarf != NULL)
932-
return;
933-
934922
dialog = gtk_file_chooser_dialog_new("Open File", GTK_WINDOW(window), action,
935923
"_Cancel", GTK_RESPONSE_CANCEL,
936924
"_Open", GTK_RESPONSE_ACCEPT,
@@ -946,6 +934,7 @@ static void on_file_open(GtkMenuItem *menu, gpointer *window)
946934
filename = gtk_file_chooser_get_filename(chooser);
947935
gtk_widget_destroy (dialog);
948936

937+
close_dwarf_file();
949938
res = open_dwarf_file(filename);
950939
if (res != 0)
951940
show_warning(GTK_WIDGET(window), "Error: %s: %s\n",
@@ -956,11 +945,7 @@ static void on_file_open(GtkMenuItem *menu, gpointer *window)
956945

957946
static void on_file_close(GtkMenuItem *menu, gpointer *unused)
958947
{
959-
if (dwarf == NULL)
960-
return;
961-
962948
close_dwarf_file();
963-
dwarf = NULL;
964949
}
965950

966951
static gboolean on_attr_press(GtkWidget *widget, GdkEvent *event, gpointer data)
@@ -1025,10 +1010,10 @@ static void add_gtk_callbacks(GtkBuilder *builder)
10251010
G_CALLBACK(on_file_open));
10261011
gtk_builder_add_callback_symbol(builder, "on-file-close",
10271012
G_CALLBACK(on_file_close));
1013+
gtk_builder_add_callback_symbol(builder, "on-cursor-changed",
1014+
G_CALLBACK(on_cursor_changed));
10281015
gtk_builder_add_callback_symbol(builder, "on-row-activated",
10291016
G_CALLBACK(on_row_activated));
1030-
gtk_builder_add_callback_symbol(builder, "on-button-press",
1031-
G_CALLBACK(on_button_press));
10321017
gtk_builder_add_callback_symbol(builder, "on-search-activated",
10331018
G_CALLBACK(on_search_activated));
10341019
gtk_builder_add_callback_symbol(builder, "on-search-result",

0 commit comments

Comments
 (0)