Commit c3f43bd39bbd9a32bb3156e82fab87be2942614a
1 parent
2f519025
Exists in
master
and in
4 other branches
Implementing popup menu on window tabs.
Showing
1 changed file
with
47 additions
and
1 deletions
Show diff stats
src/objects/window/page.c
| ... | ... | @@ -34,6 +34,42 @@ |
| 34 | 34 | #include <v3270/actions.h> |
| 35 | 35 | #include <v3270/print.h> |
| 36 | 36 | |
| 37 | +//---[ Gtk Label with customized popup-menu ]--------------------------------------------------------------------------------------- | |
| 38 | + typedef struct _pw3270TabLabel { | |
| 39 | + | |
| 40 | + GtkLabel parent; | |
| 41 | + | |
| 42 | + } pw3270TabLabel; | |
| 43 | + | |
| 44 | + typedef struct _pw3270TabLabelClass { | |
| 45 | + | |
| 46 | + GtkLabelClass parent_class; | |
| 47 | + | |
| 48 | + } pw3270TabLabelClass; | |
| 49 | + | |
| 50 | + G_DEFINE_TYPE(pw3270TabLabel, pw3270TabLabel, GTK_TYPE_LABEL); | |
| 51 | + | |
| 52 | + | |
| 53 | + static gboolean tab_label_button_press(GtkWidget *widget, GdkEventButton *event) { | |
| 54 | + | |
| 55 | + debug("%s(%u)",__FUNCTION__,event->button); | |
| 56 | + | |
| 57 | + | |
| 58 | + return FALSE; | |
| 59 | + } | |
| 60 | + | |
| 61 | + static void pw3270TabLabel_class_init(pw3270TabLabelClass *klass) { | |
| 62 | + | |
| 63 | + GTK_WIDGET_CLASS(klass)->button_press_event = tab_label_button_press; | |
| 64 | + | |
| 65 | + } | |
| 66 | + | |
| 67 | + static void pw3270TabLabel_init(pw3270TabLabel *widget) { | |
| 68 | + | |
| 69 | + } | |
| 70 | + | |
| 71 | +//---------------------------------------------------------------------------------------------------------------------------------- | |
| 72 | + | |
| 37 | 73 | static gboolean on_terminal_focus(GtkWidget *terminal, GdkEvent G_GNUC_UNUSED(*event), GtkWindow * window); |
| 38 | 74 | static void session_changed(GtkWidget *terminal, GtkWidget *label); |
| 39 | 75 | static void disconnected(GtkWidget *terminal, GtkWindow * window); |
| ... | ... | @@ -44,7 +80,17 @@ |
| 44 | 80 | |
| 45 | 81 | gint pw3270_application_window_append_page(pw3270ApplicationWindow * window, GtkWidget * terminal) { |
| 46 | 82 | |
| 47 | - GtkWidget * label = gtk_label_new(v3270_get_session_name(terminal)); | |
| 83 | + GtkWidget * label = | |
| 84 | + GTK_WIDGET( | |
| 85 | + g_object_new( | |
| 86 | + pw3270TabLabel_get_type(), | |
| 87 | + "label", v3270_get_session_name(terminal), | |
| 88 | + "selectable", TRUE, | |
| 89 | + NULL) | |
| 90 | + ); | |
| 91 | + | |
| 92 | + // gtk_label_new(v3270_get_session_name(terminal)); | |
| 93 | + | |
| 48 | 94 | GtkWidget * tab = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,2); |
| 49 | 95 | GtkWidget * button = gtk_button_new_from_icon_name("window-close-symbolic",GTK_ICON_SIZE_MENU); |
| 50 | 96 | ... | ... |