如何设置xfce的面板插件宽度

时间:2016-09-06 17:50:15

标签: gtk xfce

我构建了一个简单的xfce面板插件,它显示了一个标记为“Hello World”的按钮。但是,只能显示一半的字符串。

http://en.zimagez.com/miniature/debian807092016010347.png

代码很简单:

#include <gtk/gtk.h>
#include <libxfce4panel/xfce-panel-plugin.h>

static void sample_construct(XfcePanelPlugin *plugin);
XFCE_PANEL_PLUGIN_REGISTER(sample_construct);

static void hello(GtkWidget *widget, gpointer data)
{
    g_print("Hello World\n");
}

static void sample_construct(XfcePanelPlugin *plugin)
{
    GtkWidget *button;

    button = gtk_button_new_with_label ("Hello World");
    g_signal_connect (button, "clicked", G_CALLBACK (hello), NULL);
    gtk_container_add (GTK_CONTAINER (plugin), button);
    gtk_widget_show (button);
}

使用此脚本构建和安装:

#!/bin/bash

gcc -Wall -shared -o libsample.so -fPIC sample.c $(pkg-config --cflags --libs libxfce4panel-1.0) $(pkg-config --cflags --libs gtk+-2.0) || \
    { echo "Compiling failed!"; exit 10; }

cp libsample.so /usr/lib/xfce4/panel-plugins
cp sample.desktop /usr/share/xfce4/panel-plugins

其他信息:xfce4.10,Debian 8 jessie。

1 个答案:

答案 0 :(得分:1)

你错过了“尺寸改变”的信号。 如果您添加以下代码,它将按预期工作:

static gboolean
sample_size_changed (XfcePanelPlugin *plugin,
                     gint             size,
                     void            *data)
{
  GtkOrientation orientation;

  orientation = xfce_panel_plugin_get_orientation (plugin);

  if (orientation == GTK_ORIENTATION_HORIZONTAL)
    gtk_widget_set_size_request (GTK_WIDGET (plugin), -1, size);
  else
    gtk_widget_set_size_request (GTK_WIDGET (plugin), size, -1);

  return TRUE;
}

static void sample_construct(XfcePanelPlugin *plugin)
{
...
    g_signal_connect (G_OBJECT (plugin), "size-changed",
                    G_CALLBACK (sample_size_changed), NULL);

    gtk_widget_show_all (button);
}

enter image description here

请注意,您还缺少重要的回调,例如“免费数据”和“方向更改”。请注意,由于Xfce 4.12,GTK + 3.0插件也受支持,您只需在.desktop文件中设置X-XFCE-API = 2.0。

来源:xfce4-sample-plugin