Merge lp:~canonical-dx-team/unity/unity.fix-691651 into lp:unity

Proposed by Mirco Müller
Status: Merged
Approved by: Gord Allott
Approved revision: no longer in the source branch.
Merged at revision: 794
Proposed branch: lp:~canonical-dx-team/unity/unity.fix-691651
Merge into: lp:unity
Diff against target: 95 lines (+38/-0)
2 files modified
src/PanelMenuView.cpp (+35/-0)
src/PanelMenuView.h (+3/-0)
To merge this branch: bzr merge lp:~canonical-dx-team/unity/unity.fix-691651
Reviewer Review Type Date Requested Status
Gord Allott Pending
Review via email: mp+47564@code.launchpad.net

Description of the change

Hooked up the "name-changed" signal so window-titles of maximized windows get correctly updated, when a tab-focus occurs. This also correctly disconnects a registered callback from the old-view before connecting it to the new-view.

NOTE: This branch needs libbamf (rev 377) to work.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/PanelMenuView.cpp'
2--- src/PanelMenuView.cpp 2011-01-25 15:35:00 +0000
3+++ src/PanelMenuView.cpp 2011-01-26 17:51:31 +0000
4@@ -43,6 +43,10 @@
5 BamfView *new_view,
6 PanelMenuView *self);
7
8+static void on_name_changed (BamfView* bamf_view,
9+ gchar* old_name,
10+ gchar* new_name,
11+ PanelMenuView* self);
12
13 PanelMenuView::PanelMenuView (int padding)
14 : _matcher (NULL),
15@@ -68,6 +72,8 @@
16 _layout = _menu_layout;
17
18 _padding = padding;
19+ _name_changed_callback_instance = NULL;
20+ _name_changed_callback_id = 0;
21
22 _window_buttons = new WindowButtons ();
23 _window_buttons->NeedRedraw ();
24@@ -574,11 +580,19 @@
25 }
26
27 void
28+PanelMenuView::OnNameChanged (gchar* new_name, gchar* old_name)
29+{
30+ Refresh ();
31+ FullRedraw ();
32+}
33+
34+void
35 PanelMenuView::OnActiveWindowChanged (BamfView *old_view,
36 BamfView *new_view)
37 {
38 _is_maximized = false;
39
40+
41 if (BAMF_IS_WINDOW (new_view))
42 {
43 BamfWindow *window = BAMF_WINDOW (new_view);
44@@ -587,6 +601,18 @@
45
46 if (_decor_map.find (xid) == _decor_map.end ())
47 _decor_map[xid] = true;
48+
49+ // first see if we need to remove and old callback
50+ if (_name_changed_callback_id != 0)
51+ g_signal_handler_disconnect (_name_changed_callback_instance,
52+ _name_changed_callback_id);
53+
54+ // register callback for new view and store handler-id
55+ _name_changed_callback_instance = G_OBJECT (new_view);
56+ _name_changed_callback_id = g_signal_connect (_name_changed_callback_instance,
57+ "name-changed",
58+ (GCallback) on_name_changed,
59+ this);
60 }
61
62 Refresh ();
63@@ -771,3 +797,12 @@
64 {
65 self->OnActiveWindowChanged (old_view, new_view);
66 }
67+
68+static void
69+on_name_changed (BamfView* bamf_view,
70+ gchar* old_name,
71+ gchar* new_name,
72+ PanelMenuView* self)
73+{
74+ self->OnNameChanged (new_name, old_name);
75+}
76
77=== modified file 'src/PanelMenuView.h'
78--- src/PanelMenuView.h 2011-01-20 12:48:09 +0000
79+++ src/PanelMenuView.h 2011-01-26 17:51:31 +0000
80@@ -65,6 +65,7 @@
81 void OnEntryRefreshed (PanelIndicatorObjectEntryView *view);
82 void OnActiveChanged (PanelIndicatorObjectEntryView *view, bool is_active);
83 void OnActiveWindowChanged (BamfView *old_view, BamfView *new_view);
84+ void OnNameChanged (gchar* new_name, gchar* old_name);
85
86 void OnSpreadInitiate (std::list <guint32> &);
87 void OnSpreadTerminate (std::list <guint32> &);
88@@ -111,5 +112,7 @@
89
90 std::map<guint32, bool> _decor_map;
91 int _padding;
92+ gpointer _name_changed_callback_instance;
93+ gulong _name_changed_callback_id;
94 };
95 #endif