Updating branch refs/heads/master
         to 2b666709e374d93e8ef6bd84577a1700aa3e60a0 (commit)
       from de5772612cb466ee1aebc8ff10777721f1f15881 (commit)

commit 2b666709e374d93e8ef6bd84577a1700aa3e60a0
Author: Mike Massonnet <[email protected]>
Date:   Wed Oct 31 22:58:01 2012 +0100

    Update code to build with GTK+3

 data/vapi/gtk214/gtk+-2.0.vapi |    2 +-
 lib/application.vala           |   27 +++++++++----
 lib/hypertextview.vala         |    6 +-
 lib/icon-button.vala           |   15 ++++++-
 lib/note.vala                  |   28 +++++++++++++-
 lib/window.vala                |   81 +++++++++++++++++++++++++++-------------
 src/main-panel-plugin.vala     |    2 +
 src/main-status-icon.vala      |    8 +++-
 8 files changed, 124 insertions(+), 45 deletions(-)

diff --git a/data/vapi/gtk214/gtk+-2.0.vapi b/data/vapi/gtk214/gtk+-2.0.vapi
index 70034b7..db78073 100644
--- a/data/vapi/gtk214/gtk+-2.0.vapi
+++ b/data/vapi/gtk214/gtk+-2.0.vapi
@@ -5098,7 +5098,7 @@ namespace Gtk {
                public class unowned GLib.ParamSpec find_style_property (string 
property_name);
                public void freeze_child_notify ();
                public virtual unowned Atk.Object get_accessible ();
-               public void get_allocation (Gtk.Allocation allocation);
+               public void get_allocation (out Gtk.Allocation allocation);
                public unowned Gtk.Widget get_ancestor (GLib.Type widget_type);
                public bool get_app_paintable ();
                public bool get_can_default ();
diff --git a/lib/application.vala b/lib/application.vala
index 3872a6a..9a5e674 100644
--- a/lib/application.vala
+++ b/lib/application.vala
@@ -367,7 +367,7 @@ namespace Xnp {
                                        string[] tabs_order = 
win.get_note_names ();
                                        int last_page = win.get_current_page ();
                                        int transparency = (int)((1 - 
win.opacity) * 100);
-                                       bool visible = (bool)(win.get_flags () 
& Gtk.WidgetFlags.VISIBLE);
+                                       bool visible = win.get_visible ();
 
                                        keyfile.set_integer (win.name, "PosX", 
winx);
                                        keyfile.set_integer (win.name, "PosY", 
winy);
@@ -426,19 +426,26 @@ namespace Xnp {
                 */
                private void rename_window (Xnp.Window window) {
                        var dialog = new Gtk.Dialog.with_buttons (_("Rename 
group"), window,
+#if ENABLE_GTK3
+                                       Gtk.DialogFlags.DESTROY_WITH_PARENT,
+#else
                                        
Gtk.DialogFlags.DESTROY_WITH_PARENT|Gtk.DialogFlags.NO_SEPARATOR,
+#endif
                                        Gtk.STOCK_CANCEL, 
Gtk.ResponseType.CANCEL, Gtk.STOCK_OK, Gtk.ResponseType.OK);
+                       Gtk.Box content_area = (Gtk.Box)dialog.get_content_area 
();
                        dialog.set_default_response (Gtk.ResponseType.OK);
                        dialog.resizable = false;
                        dialog.icon_name = Gtk.STOCK_EDIT;
                        dialog.border_width = 4;
-                       dialog.vbox.border_width = 6;
+#if !ENABLE_GTK3
+                       content_area.border_width = 6;
+#endif
 
                        var entry = new Gtk.Entry ();
                        entry.text = window.name;
                        entry.activates_default = true;
-                       dialog.vbox.add (entry);
-                       dialog.vbox.show_all ();
+                       content_area.add (entry);
+                       content_area.show_all ();
 
                        int res = dialog.run ();
                        dialog.hide ();
@@ -666,7 +673,7 @@ namespace Xnp {
                                if (win.is_active) {
                                        active_found = true;
                                }
-                               if (!(bool)(win.get_flags () & 
Gtk.WidgetFlags.VISIBLE)) {
+                               if (!win.get_visible ()) {
                                        invisible_found = true;
                                }
                                else {
@@ -677,7 +684,7 @@ namespace Xnp {
                        foreach (var win in this.window_list) {
                                // Present visible windows
                                if (!active_found && visible_found) {
-                                       if ((bool)(win.get_flags () & 
Gtk.WidgetFlags.VISIBLE)) {
+                                       if (win.get_visible ()) {
                                                win.present ();
                                        }
                                }
@@ -699,7 +706,7 @@ namespace Xnp {
                 */
                public void open_settings_dialog () {
                        try {
-                               Gdk.spawn_command_line_on_screen 
(Gdk.Screen.get_default (), "xfce4-notes-settings");
+                               GLib.Process.spawn_command_line_async 
("xfce4-notes-settings");
                        }
                        catch (GLib.Error e) {
                                var error_dialog = new Gtk.MessageDialog (null, 
Gtk.DialogFlags.DESTROY_WITH_PARENT,
@@ -716,21 +723,23 @@ namespace Xnp {
                 * Open the about dialog.
                 */
                public void open_about_dialog () {
+#if !ENABLE_GTK3
                        Gtk.AboutDialog.set_url_hook ((dialog, uri) => {
                                        string command;
                                        try {
                                                command = "exo-open %s".printf 
(uri);
-                                               
Gdk.spawn_command_line_on_screen (Gdk.Screen.get_default (), command);
+                                               
GLib.Process.spawn_command_line_async (command);
                                                return;
                                        } catch (GLib.Error e) {
                                        }
                                        try {
                                                command = "firefox %s".printf 
(uri);
-                                               
Gdk.spawn_command_line_on_screen (Gdk.Screen.get_default (), command);
+                                               
GLib.Process.spawn_command_line_async (command);
                                                return;
                                        } catch (GLib.Error e) {
                                        }
                                });
+#endif
 
                        string[] authors = {
                                        "(c) 2006-2010 Mike Massonnet",
diff --git a/lib/hypertextview.vala b/lib/hypertextview.vala
index c6fb2cb..a1f3038 100644
--- a/lib/hypertextview.vala
+++ b/lib/hypertextview.vala
@@ -115,7 +115,7 @@ namespace Xnp {
                                link = start.get_text (end);
 
                                try {
-                                       Gdk.spawn_command_line_on_screen 
(Gdk.Screen.get_default (), "exo-open "+link);
+                                       GLib.Process.spawn_command_line_async 
("exo-open "+link);
                                        return false;
                                } catch (Error e) {
                                }
@@ -126,13 +126,13 @@ namespace Xnp {
                                        message ("Unable to open link with 
default handler: %s", e.message);
                                }
                                try {
-                                       Gdk.spawn_command_line_on_screen 
(Gdk.Screen.get_default (), "xdg-open "+link);
+                                       GLib.Process.spawn_command_line_async 
("xdg-open "+link);
                                        return false;
                                }
                                catch (Error e) {
                                }
                                try {
-                                       Gdk.spawn_command_line_on_screen 
(Gdk.Screen.get_default (), "firefox "+link);
+                                       GLib.Process.spawn_command_line_async 
("firefox "+link);
                                        return false;
                                }
                                catch (Error e) {
diff --git a/lib/icon-button.vala b/lib/icon-button.vala
index dff687a..4396f11 100644
--- a/lib/icon-button.vala
+++ b/lib/icon-button.vala
@@ -53,13 +53,22 @@ namespace Xnp {
                        warning ("This object doesn't allow packing child 
widgets.");
                }
 
+#if ENABLE_GTK3
+               public override bool draw (Cairo.Context cr) {
+#else
                public override bool expose_event (Gdk.EventExpose event) {
+#endif
+                       Gtk.Allocation allocation;
+                       get_allocation (out allocation);
+
                        int width = allocation.width - (int)border_width * 2;
                        int height = allocation.height - (int)border_width * 2;
                        int x = allocation.width / 2 - width / 2 + allocation.x;
                        int y = allocation.height / 2 - height / 2 + 
allocation.y;
 
-                       var cr = Gdk.cairo_create(window);
+#if !ENABLE_GTK3
+                       var cr = Gdk.cairo_create (get_window ());
+#endif
                        cr.rectangle (x, y, width, height);
                        cr.clip ();
 
@@ -74,13 +83,13 @@ namespace Xnp {
 
                private bool on_enter_notify_event (Gdk.EventCrossing event) {
                        active = true;
-                       window.invalidate_rect (null, false);
+                       get_window ().invalidate_rect (null, false);
                        return false;
                }
 
                private bool on_leave_notify_event (Gdk.EventCrossing event) {
                        active = false;
-                       window.invalidate_rect (null, false);
+                       get_window ().invalidate_rect (null, false);
                        return false;
                }
 
diff --git a/lib/note.vala b/lib/note.vala
index 73fc659..fb6b798 100644
--- a/lib/note.vala
+++ b/lib/note.vala
@@ -77,9 +77,32 @@ namespace Xnp {
                        this.dirty = false;
                }
 
+#if ENABLE_GTK3
+               public override void get_preferred_width (out int 
minimum_width, out int natural_width) {
+                       var child = this.get_child ();
+                       if (child != null && child.get_visible ()) {
+                               child.get_preferred_width (out minimum_width, 
out natural_width);
+                       }
+                       else {
+                               minimum_width = 0;
+                               natural_width = 0;
+                       }
+               }
+
+               public override void get_preferred_height (out int 
minimum_height, out int natural_height) {
+                       var child = this.get_child ();
+                       if (child != null && child.get_visible ()) {
+                               child.get_preferred_height (out minimum_height, 
out natural_height);
+                       }
+                       else {
+                               minimum_height = 0;
+                               natural_height = 0;
+                       }
+               }
+#else
                public override void size_request (ref Gtk.Requisition 
requisition) {
                        Gtk.Requisition child_requisition;
-                       if (this.child != null && (bool)(this.child.get_flags 
() & Gtk.WidgetFlags.VISIBLE)) {
+                       if (this.child != null && (this.child.get_visible ())) {
                                this.child.size_request (out child_requisition);
                                requisition = child_requisition;
                        }
@@ -91,10 +114,11 @@ namespace Xnp {
 
                public override void size_allocate (Gdk.Rectangle allocation) {
                        this.allocation = (Gtk.Allocation)allocation;
-                       if (this.child != null && (bool)(this.child.get_flags 
() & Gtk.WidgetFlags.VISIBLE)) {
+                       if (this.child != null && this.child.get_visible ()) {
                                this.child.size_allocate (allocation);
                        }
                }
+#endif
 
                /*
                 * Signal callbacks
diff --git a/lib/window.vala b/lib/window.vala
index dfcd543..35dd08f 100644
--- a/lib/window.vala
+++ b/lib/window.vala
@@ -281,7 +281,9 @@ namespace Xnp {
                        this.notebook.show_border = true;
                        this.notebook.show_tabs = false;
                        this.notebook.tab_pos = Gtk.PositionType.TOP;
+#if !ENABLE_GTK3
                        this.notebook.tab_border = 4;
+#endif
                        this.notebook.scrollable = true;
                        this.notebook.show ();
                        this.content_box.pack_start (this.notebook, true, true, 
0);
@@ -374,7 +376,7 @@ namespace Xnp {
                 * Reset the mouse cursor.
                 */
                private bool window_leaved_cb () {
-                       window.set_cursor (null);
+                       get_window ().set_cursor (null);
                        return true;
                }
 
@@ -384,10 +386,14 @@ namespace Xnp {
                 * Update mouse cursor.
                 */
                private bool window_motion_cb (Gdk.EventMotion event) {
+                       Gtk.Allocation allocation;
+
+                       get_allocation (out allocation);
+
                        if (event.x > 4 && event.y > 4
                                && event.x < allocation.width - 4
                                && event.y < allocation.height - 4) {
-                               window.set_cursor (null);
+                               get_window ().set_cursor (null);
                                return false;
                        }
 
@@ -395,27 +401,27 @@ namespace Xnp {
                        if (event.x >= allocation.width - this.CORNER_MARGIN
                                && event.y >= this.CORNER_MARGIN
                                && event.y < allocation.height - 
this.CORNER_MARGIN)
-                               window.set_cursor (this.CURSOR_RIGHT);
+                               get_window ().set_cursor (this.CURSOR_RIGHT);
                        // Bottom right corner
                        else if (event.x >= allocation.width - 
this.CORNER_MARGIN
                                && event.y >= allocation.height - 
this.CORNER_MARGIN)
-                               window.set_cursor (this.CURSOR_BOTTOM_RC);
+                               get_window ().set_cursor 
(this.CURSOR_BOTTOM_RC);
                        // Bottom
                        else if (event.x > this.CORNER_MARGIN
                                && event.y > allocation.height - 
this.CORNER_MARGIN
                                && event.x < allocation.width - 
this.CORNER_MARGIN)
-                               window.set_cursor (this.CURSOR_BOTTOM);
+                               get_window ().set_cursor (this.CURSOR_BOTTOM);
                        // Bottom left corner
                        else if (event.x <= this.CORNER_MARGIN
                                && event.y >= allocation.height - 
this.CORNER_MARGIN)
-                               window.set_cursor (this.CURSOR_BOTTOM_LC);
+                               get_window ().set_cursor 
(this.CURSOR_BOTTOM_LC);
                        // Left
                        else if (event.x <= this.CORNER_MARGIN && event.y >= 
this.CORNER_MARGIN
                                && event.y < allocation.height - 
this.CORNER_MARGIN)
-                               window.set_cursor (this.CURSOR_LEFT);
+                               get_window ().set_cursor (this.CURSOR_LEFT);
                        // Default
                        else
-                               window.set_cursor (null);
+                               get_window ().set_cursor (null);
 
                        return true;
                }
@@ -427,6 +433,10 @@ namespace Xnp {
                 */
                private bool window_pressed_cb (Gdk.EventButton event) {
                        Gdk.WindowEdge edge;
+                       Gtk.Allocation allocation;
+
+                       get_allocation (out allocation);
+
                        if (event.x > 4 && event.y > 4
                                && event.x < allocation.width - 4
                                && event.y < allocation.height - 4)
@@ -475,8 +485,7 @@ namespace Xnp {
                                 * of xfwm4 switching the state */
                                this.mi_above.active = 
(bool)(event.new_window_state & Gdk.WindowState.ABOVE);
                        }
-                       if ((bool)(event.changed_mask & Gdk.WindowState.STICKY) 
&&
-                               (bool)(get_flags () & Gtk.WidgetFlags.VISIBLE)) 
{
+                       if ((bool)(event.changed_mask & Gdk.WindowState.STICKY) 
&& get_visible ()) {
                                this.sticky = (bool)((event.new_window_state & 
Gdk.WindowState.STICKY) != 0);
                        }
                        return false;
@@ -491,7 +500,7 @@ namespace Xnp {
                        if (event.type != Gdk.EventType.BUTTON_PRESS)
                                return false;
                        if (event.button == 1) {
-                               this.window.show ();
+                               get_window ().show ();
                                int winx, winy, curx, cury;
                                get_position (out winx, out winy);
                                get_pointer (out curx, out cury);
@@ -500,7 +509,7 @@ namespace Xnp {
                                begin_move_drag (1, winx, winy, 
Gtk.get_current_event_time ());
                        }
                        else if (event.button == 2) {
-                               this.window.lower ();
+                               get_window ().lower ();
                        }
                        else if (event.button == 3) {
                                this.menu.popup (null, null, null, 0, 
Gtk.get_current_event_time ());
@@ -615,24 +624,39 @@ namespace Xnp {
                 * Menu position function for the window menu.
                 */
                private void menu_position (Gtk.Menu menu, out int x, out int 
y, out bool push_in) {
-                       int winx, winy, width, height, depth;
+                       int winx, winy, width, height;
                        Gtk.Requisition requisition;
-                       window.get_geometry (out winx, out winy, out width, out 
height, out depth);
-                       window.get_origin (out x, out y);
+                       Gtk.Allocation allocation;
+
+#if ENABLE_GTK3
+                       get_window ().get_geometry (out winx, out winy, out 
width, out height);
+                       menu.get_preferred_size (out requisition, null);
+#else
+                       get_window ().get_geometry (out winx, out winy, out 
width, out height, null);
                        menu.size_request (out requisition);
+#endif
+                       get_window ().get_origin (out x, out y);
                        push_in = false;
 
-                       if (y + content_box.allocation.y + requisition.height > 
Gdk.Screen.height ()) {
+                       content_box.get_allocation (out allocation);
+
+                       if (y + allocation.y + requisition.height > 
Gdk.Screen.height ()) {
                                /* Show menu above */
                                y -= requisition.height;
                        }
                        else {
                                /* Show menu below */
-                               y += content_box.allocation.y;
+                               y += allocation.y;
                        }
                        if (x + requisition.width > Gdk.Screen.width ()) {
                                /* Adjust menu left */
+#if ENABLE_GTK3
+                               int menu_width;
+                               menu.get_preferred_width (out menu_width, null);
+                               x = x - menu_width + allocation.y;
+#else
                                x = x - menu.requisition.width + 
content_box.allocation.y;
+#endif
                        }
                }
 
@@ -795,7 +819,7 @@ namespace Xnp {
                 */
                public void get_geometry (out int winx, out int winy, out int 
width, out int height) {
                        // Window is shaded
-                       if (!(bool)(this.content_box.get_flags () & 
Gtk.WidgetFlags.VISIBLE)) {
+                       if (!this.content_box.get_visible ()) {
                                get_size (out this.width, null);
                        }
                        else {
@@ -853,7 +877,7 @@ namespace Xnp {
                 * Shade the window (roll up) to show only the title bar.
                 */
                private void shade () {
-                       if ((bool)(this.content_box.get_flags () & 
Gtk.WidgetFlags.VISIBLE)) {
+                       if (this.content_box.get_visible ()) {
                                this.content_box.hide ();
                                get_size (out this.width, out this.height);
                                resize (this.width, 1);
@@ -866,7 +890,7 @@ namespace Xnp {
                 * Unshade the window (roll down).
                 */
                private void unshade () {
-                       if (!(bool)(this.content_box.get_flags () & 
Gtk.WidgetFlags.VISIBLE)) {
+                       if (!this.content_box.get_visible ()) {
                                this.content_box.show ();
                                get_size (out this.width, null);
                                resize (this.width, this.height);
@@ -1016,19 +1040,24 @@ namespace Xnp {
                        var note = (Xnp.Note)(this.notebook.get_nth_page 
(page));
 
                        var dialog = new Gtk.Dialog.with_buttons (_("Rename 
note"), (Gtk.Window)get_toplevel (),
+#if ENABLE_GTK3
+                               
Gtk.DialogFlags.MODAL|Gtk.DialogFlags.DESTROY_WITH_PARENT,
+#else
                                
Gtk.DialogFlags.MODAL|Gtk.DialogFlags.DESTROY_WITH_PARENT|Gtk.DialogFlags.NO_SEPARATOR,
+#endif
                                Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, 
Gtk.STOCK_OK, Gtk.ResponseType.OK);
+                       Gtk.Box content_area = (Gtk.Box)dialog.get_content_area 
();
                        dialog.set_default_response (Gtk.ResponseType.OK);
                        dialog.resizable = false;
                        dialog.icon_name = Gtk.STOCK_EDIT;
                        dialog.border_width = 4;
-                       dialog.vbox.border_width = 6;
+                       content_area.border_width = 6;
 
                        var entry = new Gtk.Entry ();
                        entry.text = note.name;
                        entry.activates_default = true;
-                       dialog.vbox.add (entry);
-                       dialog.vbox.show_all ();
+                       content_area.add (entry);
+                       content_area.show_all ();
 
                        int res = dialog.run ();
                        dialog.hide ();
@@ -1124,15 +1153,15 @@ namespace Xnp {
                        }
                }
 
-/*
+/* valac -X '-I..' -X '-DGETTEXT_PACKAGE="xfce4-notes-plugin"' -X 
'-DPKGDATADIR="../data"' -D ENABLE_GTK3 --pkg=gtk+-3.0 --pkg=libxfce4util-1.0 
--pkg=libxfconf-0 --pkg=color --pkg=config --vapidir=.. --vapidir=. window.vala 
note.vala hypertextview.vala icon-button.vala
                static int main (string[] args) {
                        Gtk.init (ref args);
-                       var sample = new Xnp.Window ("Note");
+                       var sample = new Xnp.Window ();
                        sample.show ();
                        Gtk.main ();
                        return 0;
                }
-*/
+// */
 
        }
 
diff --git a/src/main-panel-plugin.vala b/src/main-panel-plugin.vala
index a789eff..a4c8642 100644
--- a/src/main-panel-plugin.vala
+++ b/src/main-panel-plugin.vala
@@ -75,6 +75,7 @@ public class NotesPlugin : Xfce.PanelPlugin {
         * Set an X selection to listen to for the popup command.
         */
        private bool set_x_selection () {
+#if !ENABLE_GTK3
                invisible = new Gtk.Invisible ();
                if (!Xnp.Popup.set_x_selection (invisible)) {
                        return false;
@@ -86,6 +87,7 @@ public class NotesPlugin : Xfce.PanelPlugin {
                        }
                        return false;
                });
+#endif
                return true;
        }
 
diff --git a/src/main-status-icon.vala b/src/main-status-icon.vala
index c9edeb2..06bfd68 100644
--- a/src/main-status-icon.vala
+++ b/src/main-status-icon.vala
@@ -31,7 +31,7 @@ static void build_plugin () {
        var save_location = Xfce.Resource.save_location 
(Xfce.ResourceType.CONFIG, "xfce4/xfce4-notes.rc", true);
        application = new Xnp.Application (save_location);
        status_icon = new Gtk.StatusIcon.from_icon_name ("xfce4-notes-plugin");
-       status_icon.set_tooltip (_("Notes"));
+       status_icon.set_tooltip_text (_("Notes"));
        Timeout.add_seconds (60, () => {
                        if (!status_icon.is_embedded ()) {
                                warning ("Status Icon is not embedded");
@@ -83,6 +83,7 @@ static Gtk.Menu build_context_menu () {
 }
 
 static bool set_x_selection () {
+#if !ENABLE_GTK3
        invisible = new Gtk.Invisible ();
        if (!Xnp.Popup.set_x_selection (invisible)) {
                return false;
@@ -94,11 +95,15 @@ static bool set_x_selection () {
                }
                return false;
        });
+#endif
        return true;
 }
 
 static int main (string[] args) {
        Gtk.init (ref args);
+#if ENABLE_GTK3
+       // TODO: Gtk.Application
+#else
        Unique.App app = new Unique.App ("org.xfce.Notes", null);
        if (app.is_running) {
                if (app.send_message (Unique.Command.ACTIVATE, null) == 
Unique.Response.OK) {
@@ -112,6 +117,7 @@ static int main (string[] args) {
                }
                return Unique.Response.OK;
        });
+#endif
        GLib.Environment.set_application_name (_("Notes"));
        build_plugin ();
        Xfce.Autostart.@set ("xfce4-notes-autostart", "xfce4-notes", false);
_______________________________________________
Xfce4-commits mailing list
[email protected]
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to